untrap downwards while over trap
Force trap to activate during failed untrap attempt if done while already at the trap's location, to match the recent change in behavior when failed attempt occurs while adjacent to the trap. Most noticeable while flying over bear traps, but affects all failed untrap attempts.
This commit is contained in:
@@ -2058,7 +2058,7 @@ boolean pick;
|
||||
|
||||
struct monst *mtmp;
|
||||
struct trap *trap = t_at(u.ux, u.uy);
|
||||
int trapflag = iflags.failing_untrap ? FORCETRAP : 0;
|
||||
int trapflag = iflags.failing_untrap ? FAILEDUNTRAP : 0;
|
||||
|
||||
/* prevent recursion from affecting the hero all over again
|
||||
[hero poly'd to iron golem enters water here, drown() inflicts
|
||||
|
||||
@@ -894,7 +894,8 @@ unsigned trflags;
|
||||
register int ttype = trap->ttyp;
|
||||
struct obj *otmp;
|
||||
boolean already_seen = trap->tseen,
|
||||
forcetrap = (trflags & FORCETRAP) != 0,
|
||||
forcetrap = ((trflags & FORCETRAP) != 0
|
||||
|| (trflags & FAILEDUNTRAP) != 0),
|
||||
webmsgok = (trflags & NOWEBMSG) == 0,
|
||||
forcebungle = (trflags & FORCEBUNGLE) != 0,
|
||||
plunged = (trflags & TOOKPLUNGE) != 0,
|
||||
@@ -3989,7 +3990,7 @@ struct trap *ttmp;
|
||||
there are objects covering this trap */
|
||||
ttmp->tseen = 0; /* hack for check_here() */
|
||||
/* trigger the trap */
|
||||
iflags.failing_untrap++; /* spoteffects() -> dotrap(,FORCETRAP) */
|
||||
iflags.failing_untrap++; /* spoteffects() -> dotrap(,FAILEDUNTRAP) */
|
||||
spoteffects(TRUE); /* pickup() + dotrap() */
|
||||
iflags.failing_untrap--;
|
||||
/* this should no longer be necessary; before the failing_untrap
|
||||
@@ -4074,7 +4075,8 @@ boolean force_failure;
|
||||
pline("%s remains entangled.", Monnam(mtmp));
|
||||
}
|
||||
} else if (under_u) {
|
||||
dotrap(ttmp, 0);
|
||||
/* [don't need the iflags.failing_untrap hack here] */
|
||||
dotrap(ttmp, FAILEDUNTRAP);
|
||||
} else {
|
||||
move_into_trap(ttmp);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user