}
state_change(DRAGON, DRAGON_DEAD);
game.prop[RUG] = RUG_FLOOR;
- /* FIXME: Arithmetic on location values */
- int k = (objects[DRAGON].plac + objects[DRAGON].fixd) / 2;
+ /* Hardcoding LOC_SECRET5 as the dragon's death location is ugly.
+ * The way it was computed before was wirse; it depended on the
+ * two dragon locations being LOC_SECRET4 and LOC_SECRET6 and
+ * LOC_SECRET5 being right between them.
+ */
move(DRAGON + NOBJECTS, -1);
move(RUG + NOBJECTS, 0);
- move(DRAGON, k);
- move(RUG, k);
- drop(BLOOD, k);
+ move(DRAGON, LOC_SECRET5);
+ move(RUG, LOC_SECRET5);
+ drop(BLOOD, LOC_SECRET5);
for (obj = 1; obj <= NOBJECTS; obj++) {
if (game.place[obj] == objects[DRAGON].plac ||
game.place[obj] == objects[DRAGON].fixd)
- move(obj, k);
+ move(obj, LOC_SECRET5);
}
- game.loc = k;
+ game.loc = LOC_SECRET5;
return GO_MOVE;
}
spk = RUG_SETTLES;
rspeak(spk);
if (spk != RUG_WIGGLES) {
- /* FIXME: Arithmetic on state numbers */
int k = (game.prop[RUG] == RUG_HOVER) ? RUG_FLOOR : RUG_HOVER;
game.prop[RUG] = k;
if (k == RUG_HOVER)
immovable = attr.get("immovable", False)
try:
if type(locs) == str:
- locs = [locnames.index(locs), -1 if immovable else 0]
- else:
- locs = [locnames.index(x) for x in locs]
+ locs = [locs, -1 if immovable else 0]
except IndexError:
sys.stderr.write("dungeon: unknown object location in %s\n" % locs)
sys.exit(1)