vampshifters vs closed doors

If a vampire in fog cloud form moves under a closed door and then
before moving further gets killed and revives in vampire form,
destroy the door instead of moving the vampire to a nearby open
spot (which might be a distant spot if the map is crowded).  If the
door is trapped, explode the trap.  That will damage the vampire but
usually not by enough to kill it.

This probably ought to be generalized to be done for any shape change
at a closed location but I ran out of gas.
This commit is contained in:
PatR
2024-11-26 22:15:41 -08:00
parent 6a6378d886
commit 1fe23ff4d9
2 changed files with 57 additions and 17 deletions

View File

@@ -1491,9 +1491,9 @@ postmov(
&& amorphous(ptr)) {
if (flags.verbose && canseemon(mtmp))
pline_mon(mtmp, "%s %s under the door.", YMonnam(mtmp),
(ptr == &mons[PM_FOG_CLOUD]
|| ptr->mlet == S_LIGHT) ? "flows" : "oozes");
} else if (here->doormask & D_LOCKED && can_unlock) {
(ptr == &mons[PM_FOG_CLOUD]
|| ptr->mlet == S_LIGHT) ? "flows" : "oozes");
} else if ((here->doormask & D_LOCKED) != 0 && can_unlock) {
/* like the vampshift hack, there are sequencing
issues when the monster is moved to the door's spot
first then door handling plus feedback comes after */
@@ -1532,7 +1532,7 @@ postmov(
}
}
}
} else if (here->doormask & (D_LOCKED | D_CLOSED)) {
} else if ((here->doormask & (D_LOCKED | D_CLOSED)) != 0) {
/* mfndpos guarantees this must be a doorbuster */
unsigned mask;