fix #H4426 - shapeshifted vampires vs stoning
and vs digestion. minstapetrify() was previously changed to explicitly revert a shape-shifted vampire back to vampire form when it was turned to stone. This does the same for monstone(). It also causes shape-shifted vampires to revert to vampire form immediately when swallowed, so subsequent death via digestion or engulfing damage doesn't have to deal with reverting changed shape. I'm not convinced this is the right fix for either stoning or being digested. Unlike with ordinary damage, where multiple hits are usually needed to kill a vampire after it reverts to 'V' form, here the vampire will be killed by the next successful stoning or digestion attack in one hit. It ought to least try to flee.
This commit is contained in:
16
src/uhitm.c
16
src/uhitm.c
@@ -1894,6 +1894,18 @@ register struct attack *mattk;
|
||||
for (otmp = mdef->minvent; otmp; otmp = otmp->nobj)
|
||||
(void) snuff_lit(otmp);
|
||||
|
||||
/* force vampire in bat, cloud, or wolf form to revert back to
|
||||
vampire form now instead of dealing with that when it dies */
|
||||
if (is_vampshifter(mdef)
|
||||
&& newcham(mdef, &mons[mdef->cham], FALSE, FALSE)) {
|
||||
You("engulf it, then expel it.");
|
||||
if (canspotmon(mdef))
|
||||
pline("It turns into %s.", a_monnam(mdef));
|
||||
else
|
||||
map_invisible(mdef->mx, mdef->my);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* engulfing a cockatrice or digesting a Rider or Medusa */
|
||||
fatal_gulp = (touch_petrifies(pd) && !Stone_resistance)
|
||||
|| (mattk->adtyp == AD_DGST
|
||||
@@ -1937,6 +1949,10 @@ register struct attack *mattk;
|
||||
m_useup(mdef, otmp);
|
||||
|
||||
newuhs(FALSE);
|
||||
/* Message sequencing BUG: if you gain a level here,
|
||||
* "welcome to level N+1" is given immediately and
|
||||
* then "you totally digest <foo>" is given later.
|
||||
*/
|
||||
xkilled(mdef, XKILL_NOMSG | XKILL_NOCORPSE);
|
||||
if (mdef->mhp > 0) { /* monster lifesaved */
|
||||
You("hurriedly regurgitate the sizzling in your %s.",
|
||||
|
||||
Reference in New Issue
Block a user