When I added a new trap return value, this was one place that
should've checked it.
This was really annoying to debug - it manifested as a temp level
file loading error, because a monster moved on to a level teleport
trap, which zeroes out (mx, my), then later in the monster movement,
a web spinner created a web at (0,0), and then hero leaving the level,
the traps were saved into the level file ... and when loaded, the code
thought a trap with x == 0 meant there were no more traps.
didseeit = canseeit;
if (mmoved == MMOVE_MOVED) {
+ int trapret;
+
/* normal monster move will already have <nix,niy>,
but pet dog_move() with 'goto postmov' won't */
nix = mtmp->mx, niy = mtmp->my;
}
newsym(omx, omy); /* update the old position */
- if (mintrap(mtmp, NO_TRAP_FLAGS) == Trap_Killed_Mon) {
+ trapret = mintrap(mtmp, NO_TRAP_FLAGS);
+ if (trapret == Trap_Killed_Mon || trapret == Trap_Moved_Mon) {
if (mtmp->mx)
newsym(mtmp->mx, mtmp->my);
return 2; /* it died */