diff --git a/doc/fixes36.1 b/doc/fixes36.1 index cb61f0231..e74e647e1 100644 --- a/doc/fixes36.1 +++ b/doc/fixes36.1 @@ -302,6 +302,7 @@ conduct: wishing for an artifact and not getting it because it already exists avoid ring of poison resistance as starting equipment for orcish wizard gelatinous cube shouldn't be able to eat a scroll of scare monster make fireballs or cones of cold cast a skilled or higher not go through walls +prevent flying monsters from hovering over unreachable underwater objects Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository diff --git a/src/monmove.c b/src/monmove.c index c703f2231..c032db504 100644 --- a/src/monmove.c +++ b/src/monmove.c @@ -979,15 +979,21 @@ not_special: * mpickstuff() as well. */ if (xx >= lmx && xx <= oomx && yy >= lmy && yy <= oomy) { - /* don't get stuck circling around an object that's - underneath - an immobile or hidden monster; paralysis victims - excluded */ + /* don't get stuck circling around object that's + underneath an immobile or hidden monster; + paralysis victims excluded */ if ((mtoo = m_at(xx, yy)) != 0 && (mtoo->msleeping || mtoo->mundetected || (mtoo->mappearance && !mtoo->iswiz) || !mtoo->data->mmove)) continue; + /* the mfndpos() test for whether to allow a move to a + water location accepts flyers, but they can't reach + underwater objects, so being able to move to a spot + is insufficient for deciding whether to do so */ + if ((is_pool(xx, yy) && !is_swimmer(ptr)) + || (is_lava(xx, yy) && !likes_lava(ptr))) + continue; if (((likegold && otmp->oclass == COIN_CLASS) || (likeobjs && index(practical, otmp->oclass)