being hit by Fire Brand stops the turning-into-slime process
monsters hitting other monsters can split puddings with weapons
be consistent with checking for iron weapons when splitting puddings
+prevent corpses of undead creatures just killed by undead turning from being
+ instantly revived by the same undead turning attack
Platform- and/or Interface-Specific Fixes
}
/* All special cases should precede the G_NOCORPSE check */
+ /* if polymorph or undead turning has killed this monster,
+ prevent the same attack beam from hitting its corpse */
+ if (flags.bypasses) bypass_obj(obj);
+
if (mtmp->mnamelth)
obj = oname(obj, NAME(mtmp));
if(dbldam) dmg *= 2;
if (otyp == SPE_TURN_UNDEAD)
dmg += spell_damage_bonus();
- if(!resist(mtmp, otmp->oclass, dmg, NOTELL))
- monflee(mtmp, 0, FALSE, TRUE);
+ flags.bypasses = TRUE; /* for make_corpse() */
+ if (!resist(mtmp, otmp->oclass, dmg, NOTELL)) {
+ if (mtmp->mhp > 0) monflee(mtmp, 0, FALSE, TRUE);
+ }
}
break;
case WAN_POLYMORPH:
pline("%s shudders!", Monnam(mtmp));
makeknown(otyp);
}
+ /* flags.bypasses = TRUE; ## for make_corpse() */
/* no corpse after system shock */
xkilled(mtmp, 3);
- }
- else if (newcham(mtmp, (struct permonst *)0, (otyp != POT_POLYMORPH)) )
+ } else if (newcham(mtmp, (struct permonst *)0,
+ (otyp != POT_POLYMORPH))) {
if (!Hallucination && canspotmon(mtmp))
makeknown(otyp);
+ }
}
break;
case WAN_CANCELLATION:
* consistent with items that remain in the
* monster's inventory. They are not polymorphed
* either.
+ * UNDEAD_TURNING - When an undead creature gets killed via
+ * undead turning, prevent its corpse from being
+ * immediately revived by the same effect.
+ *
* The bypass bit on all objects is reset each turn, whenever
* flags.bypasses is set.
*