Just in case we're trying to put the monster on the same location
where it already thinks it is... but actually isn't.
xchar newx, newy;
coord mm;
- if (mtmp->mx == x && mtmp->my == y)
+ if (mtmp->mx == x && mtmp->my == y && m_at(x,y) == mtmp)
return TRUE;
if (move_other && (othermon = m_at(x, y)) != 0) {
register int oldx = mtmp->mx, oldy = mtmp->my;
boolean resident_shk = mtmp->isshk && inhishop(mtmp);
- if (x == mtmp->mx && y == mtmp->my) /* that was easy */
- return;
+ if (x == mtmp->mx && y == mtmp->my && m_at(x,y) == mtmp)
+ return; /* that was easy */
if (oldx) { /* "pick up" monster */
if (mtmp->wormno) {