-/* NetHack 3.6 mon.c $NHDT-Date: 1514769571 2018/01/01 01:19:31 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.246 $ */
+/* NetHack 3.6 mon.c $NHDT-Date: 1522540516 2018/03/31 23:55:16 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.250 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
if (DEADMONSTER(mtmp))
continue;
x = mtmp->mx, y = mtmp->my;
- if (!isok(x, y) && !(mtmp->isgd && x == 0 && y == 0))
+ if (!isok(x, y) && !(mtmp->isgd && x == 0 && y == 0)) {
impossible("mon (%s) claims to be at <%d,%d>?",
fmt_ptr((genericptr_t) mtmp), x, y);
- else if (level.monsters[x][y] != mtmp)
+ } else if (mtmp == u.usteed) {
+ /* steed is in fmon list but not on the map; its
+ <mx,my> coordinates should match hero's location */
+ if (x != u.ux || y != u.uy)
+ impossible("steed (%s) claims to be at <%d,%d>?",
+ fmt_ptr((genericptr_t) mtmp), x, y);
+ } else if (level.monsters[x][y] != mtmp) {
impossible("mon (%s) at <%d,%d> is not there!",
fmt_ptr((genericptr_t) mtmp), x, y);
- else if (mtmp->wormno)
+ } else if (mtmp->wormno) {
sanity_check_worm(mtmp);
+ }
}
for (x = 0; x < COLNO; x++)
if (!m)
impossible("map mon (%s) at <%d,%d> not in fmon list!",
fmt_ptr((genericptr_t) mtmp), x, y);
+ else if (mtmp == u.usteed)
+ impossible("steed (%s) is on the map at <%d,%d>!",
+ fmt_ptr((genericptr_t) mtmp), x, y);
else if ((mtmp->mx != x || mtmp->my != y)
&& mtmp->data != &mons[PM_LONG_WORM])
impossible("map mon (%s) at <%d,%d> is found at <%d,%d>?",