fix? #S15277 - Engulfer gets placed over itself

Bug report was that engulfer killed hero who was life-saved and expelled
onto a rolling boulder trap which resulted in the death of a bystanding
monster.  That triggered an impossible about placing the engulfer onto
the map at an already occupied spot (containing the engulfer itself)
while dealing with the dead bystander.

This removes the code in mon_leaving_level() that was putting the
engulfer on the map.  I'm no longer able to reproduce the problem it
was intended to solve, and if that problem (message delivery about the
swallow attack delivered with the engulfer missing from the map) exists,
it would be less severe than the impossible feedback.  I didn't attempt
to reproduce the actual reported problem since the code removal should
make it moot.

Once again, the bug report via the web contact form got misclassified
as spam.
This commit is contained in:
PatR
2026-02-20 19:29:55 -08:00
parent e19f4552e9
commit 398681fd18

View File

@@ -2696,20 +2696,6 @@ mon_leaving_level(struct monst *mon)
#endif
}
if (onmap) {
/* gulpmm() tries to deal with this, but without this extra
place_monster() the messages for exploding engulfed gas spore
are delivered without the engulfer being shown on the map */
if (gm.mswallower && gm.mswallower != mon) {
if (gm.mswallower != &gy.youmonst) {
place_monster(gm.mswallower,
gm.mswallower->mx, gm.mswallower->my);
} else {
u_on_newpos(u.ux, u.uy);
if (canspotself())
display_self();
}
}
mon->mundetected = 0; /* for migration; doesn't matter for death */
/* unhide mimic in case its shape has been blocking line of sight
or it is accompanying the hero to another level */
@@ -3441,6 +3427,7 @@ unstuck(struct monst *mtmp)
set_ustuck((struct monst *) 0);
if (swallowed) {
gm.mswallower = (struct monst *) 0;
u.ux = mtmp->mx;
u.uy = mtmp->my;
if (Punished && uchain->where != OBJ_FLOOR)