- pspeak(DRAGON, look, 3);
- game.prop[DRAGON] = 1;
- game.prop[RUG] = 0;
- int k = (PLAC[DRAGON] + FIXD[DRAGON]) / 2;
- MOVE(DRAGON + NOBJECTS, -1);
- MOVE(RUG + NOBJECTS, 0);
- MOVE(DRAGON, k);
- MOVE(RUG, k);
- DROP(BLOOD, k);
+ }
+ state_change(DRAGON, DRAGON_DEAD);
+ game.prop[RUG] = RUG_FLOOR;
+ /* 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, LOC_NOWHERE);
+ move(DRAGON, LOC_SECRET5);
+ move(RUG, LOC_SECRET5);
+ drop(BLOOD, LOC_SECRET5);