avoid a panic splitbill when shopkeeper is trapped by the door
grammar tidbit for message given when eating tainted meat is also cannibalism
gas spores shouldn't be described as "unable to attack" while hero is praying
+incorrect screen display if engulfer gets turned to stone when trying to
+ swallow while hero is poly'd into cockatrice
+panic on subsequent move if engulfer gets turned to stone and poly'd hero
+ also has attached ball&chain
Platform- and/or Interface-Specific Fixes
-/* SCCS Id: @(#)mhitu.c 3.4 2004/06/12 */
+/* SCCS Id: @(#)mhitu.c 3.4 2004/10/27 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
boolean physical_damage = FALSE;
if (!u.uswallow) { /* swallows you */
+ int omx = mtmp->mx, omy = mtmp->my;
+
if (youmonst.data->msize >= MZ_HUGE) return(0);
if ((t && ((t->ttyp == PIT) || (t->ttyp == SPIKED_PIT))) &&
sobj_at(BOULDER, u.ux, u.uy))
return(0);
if (Punished) unplacebc(); /* ball&chain go away */
- remove_monster(mtmp->mx, mtmp->my);
+ remove_monster(omx, omy);
mtmp->mtrapped = 0; /* no longer on old trap */
place_monster(mtmp, u.ux, u.uy);
u.ustuck = mtmp;
}
if (touch_petrifies(youmonst.data) && !resists_ston(mtmp)) {
- minstapetrify(mtmp, TRUE);
- if (mtmp->mhp > 0) return 0;
- else return 2;
+ /* put the attacker back where it started;
+ the resulting statue will end up there */
+ remove_monster(mtmp->mx, mtmp->my); /* u.ux,u.uy */
+ place_monster(mtmp, omx, omy);
+ minstapetrify(mtmp, TRUE);
+ /* normally unstuck() would do this, but we're not
+ fully swallowed yet so that won't work here */
+ if (Punished) placebc();
+ u.ustuck = 0;
+ return (mtmp->mhp > 0) ? 0 : 2;
}
display_nhwindow(WIN_MESSAGE, FALSE);