disable and remove wisps, because they are so very, very broken.

This commit is contained in:
Enno Rehling 2012-05-12 12:39:49 -07:00
parent ea7eaf87aa
commit 5a8a1704e7
2 changed files with 11 additions and 108 deletions

View File

@ -141,13 +141,14 @@ static void wall_destroy(connection * b)
static void wall_read(connection * b, storage * store)
{
wall_data *fd = (wall_data *) b->data.v;
static wall_data dummy;
wall_data *fd = b->data.v ? (wall_data *) b->data.v : &dummy;
variant mno;
assert(fd);
if (store->version < STORAGE_VERSION) {
mno.i = store->r_int(store);
fd->mage = findunit(mno.i);
if (!fd->mage) {
if (!fd->mage && b->data.v) {
ur_add(mno, &fd->mage, resolve_unit);
}
} else {
@ -241,77 +242,20 @@ void convert_firewall_timeouts(connection * b, attrib * a)
}
}
static const char *wisps_name(const connection * b, const region * r,
const faction * f, int gflags)
{
const char *bname;
unused(f);
unused(r);
unused(b);
if (gflags & GF_ARTICLE) {
bname = "a_wisps";
} else {
bname = "wisps";
}
if (gflags & GF_PURE)
return bname;
return LOC(f->locale, mkname("border", bname));
}
typedef struct wisps_data {
wall_data wall;
int rnd;
} wisps_data;
static region *wisps_move(const connection * b, struct unit *u,
struct region *from, struct region *next, boolean routing)
{
direction_t reldir = reldirection(from, next);
wisps_data *wd = (wisps_data *) b->data.v;
assert(reldir != D_SPECIAL);
if (routing && wd->wall.active) {
region *rl =
rconnect(from,
(direction_t) ((reldir + MAXDIRECTIONS - 1) % MAXDIRECTIONS));
region *rr = rconnect(from, (direction_t) ((reldir + 1) % MAXDIRECTIONS));
/* pick left and right region: */
if (wd->rnd < 0) {
wd->rnd = rng_int() % 3;
}
if (wd->rnd == 1 && rl
&& fval(rl->terrain, LAND_REGION) == fval(next, LAND_REGION))
return rl;
if (wd->rnd == 2 && rr
&& fval(rr->terrain, LAND_REGION) == fval(next, LAND_REGION))
return rr;
}
return next;
}
static void wisps_init(connection * b)
{
wisps_data *wd = (wisps_data *) calloc(sizeof(wisps_data), 1);
b->data.v = wd;
wd->rnd = -1;
}
border_type bt_wisps = {
border_type bt_wisps = { /* only here for reading old data */
"wisps", VAR_VOIDPTR,
b_transparent, /* transparent */
wisps_init, /* init */
0, /* init */
wall_destroy, /* destroy */
wall_read, /* read */
wall_write, /* write */
0, /* write */
b_blocknone, /* block */
wisps_name, /* name */
0, /* name */
b_rvisible, /* rvisible */
b_fvisible, /* fvisible */
b_uvisible, /* uvisible */
NULL, /* visible */
wisps_move
0
};
void register_curses(void)

View File

@ -2688,47 +2688,6 @@ static int sp_firewall(castorder * co)
return cast_level;
}
/* ------------------------------------------------------------- */
static int sp_wisps(castorder * co)
{
connection *b;
wall_data *fd;
region *r2;
direction_t dir;
region *r = co_get_region(co);
unit *mage = co->magician.u;
int cast_level = co->level;
double force = co->force;
spellparameter *pa = co->par;
dir = finddirection(pa->param[0]->data.xs, mage->faction->locale);
r2 = rconnect(r, dir);
if (!r2) {
report_failure(mage, co->order);
return 0;
}
b = new_border(&bt_wisps, r, r2);
fd = (wall_data *) b->data.v;
fd->force = (int)(force / 2 + 0.5);
fd->mage = mage;
fd->active = false;
fd->countdown = cast_level + 1;
/* melden, 1x pro Partei */
{
message *seen = msg_message("wisps_effect", "mage region", mage, r);
message *unseen = msg_message("wisps_effect", "mage region", NULL, r);
report_effect(r, mage, seen, unseen);
msg_release(seen);
msg_release(unseen);
}
return cast_level;
}
/* ------------------------------------------------------------- */
/* Name: Unheilige Kraft
* Stufe: 10
@ -6587,7 +6546,7 @@ static spelldata spell_functions[] = {
{ "analysedream", sp_analysedream, 0},
{ "disturbingdreams", sp_disturbingdreams, 0},
{ "sleep", sp_sleep, 0},
{ "wisps", sp_wisps, 0},
{ "wisps", 0, 0}, /* this spell is gone */
{ "gooddreams", sp_gooddreams, 0},
{ "illaundestroymagic", sp_destroy_magic, 0},
{ "illaunfamiliar", sp_summon_familiar, 0},
@ -6718,7 +6677,7 @@ static void register_spelldata(void)
int i;
char zText[32];
strcpy(zText, "fumble_");
for (i = 0; spell_functions[i].cast; ++i) {
for (i = 0; spell_functions[i].sname; ++i) {
spelldata *data = spell_functions + i;
if (data->cast) {
register_function((pf_generic)data->cast, data->sname);