fix github issue #277 - repeat door open failure

The change to make "ouch! you bump into a door" use up a turn didn't
end running, so when it happened while running useless turns took
place and that message was delivered repeatedly until some other
action interrupted the hero.  It didn't matter whether autoopen is
enabled.

Fixes #277
This commit is contained in:
PatR
2020-01-10 13:13:36 -08:00
parent 14929f797d
commit e27b6af856
2 changed files with 17 additions and 8 deletions

View File

@@ -1,4 +1,4 @@
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.59 $ $NHDT-Date: 1578659784 2020/01/10 12:36:24 $
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.60 $ $NHDT-Date: 1578690701 2020/01/10 21:11:41 $
General Fixes and Modified Features
-----------------------------------
@@ -32,9 +32,11 @@ drum of earthquake feedback reported various things (fountains, thrones, &c)
falling into a chasm but they remained intact because trap creation
had been changed to not clobber such things (so couldn't make pits)
make earthquake which hits a secret door or a secret corridor reveal it
wizard mode wishing for "Amulet of Yendor" has 50:50 chance for true Amulet
wizard mode wishing for "Amulet of Yendor" had 50:50 chance for true Amulet
or a cheap plastic imitation; recognize "real Amulet of Yendor" and
"fake Amulet of Yendor" to precisely specify either of them
"fake Amulet of Yendor" to precisely specify either of them but also
take away the 50% chance of yielding a fake one when neither real nor
fake is specified
unpaid globs showed weight info unconditionally outside of wizmode
walking out of tethered-to-buried-object trap condition was supposed to
reinstate punishment but wasn't finding the buried iron ball because
@@ -60,6 +62,10 @@ autounlock picked Rogue's artifact key over lock-pick or credit card (or
would be blasted when touching it
wielded aklys had its "(tethered weapon...)" description scrambled
randomized trap name could pick trap #0 which isn't a trap and yielded "water"
if running and Blind or Stunned or Fumbling or Dex < 10, encountering a closed
door orthogonally would keep reporting "ouch! you bump into a door"
repeatedly until eventually interrupted by approaching monster or
hunger or ^C
Platform- and/or Interface-Specific Fixes

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 hack.c $NHDT-Date: 1578448654 2020/01/08 01:57:34 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.239 $ */
/* NetHack 3.6 hack.c $NHDT-Date: 1578690701 2020/01/10 21:11:41 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.240 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -749,8 +749,8 @@ int mode;
/* Eat the rock. */
if (mode == DO_MOVE && still_chewing(x, y))
return FALSE;
} else if (flags.autodig && !g.context.run && !g.context.nopick && uwep
&& is_pick(uwep)) {
} else if (flags.autodig && !g.context.run && !g.context.nopick
&& uwep && is_pick(uwep)) {
/* MRKR: Automatic digging when wielding the appropriate tool */
if (mode == DO_MOVE)
(void) use_pick_axe2(uwep);
@@ -815,6 +815,9 @@ int mode;
set, 'move' would get reset by caller */
g.context.door_opened
= g.context.move = TRUE;
/* since we've just lied about successfully
moving, we need to manually stop running */
nomul(0);
} else
pline("That door is closed.");
}
@@ -2808,8 +2811,8 @@ lookaround()
pline_The("corridor widens here.");
goto stop;
}
if ((g.context.run == 1 || g.context.run == 3 || g.context.run == 8) && !noturn
&& !m0 && i0 && (corrct == 1 || (corrct == 2 && i0 == 1))) {
if ((g.context.run == 1 || g.context.run == 3 || g.context.run == 8)
&& !noturn && !m0 && i0 && (corrct == 1 || (corrct == 2 && i0 == 1))) {
/* make sure that we do not turn too far */
if (i0 == 2) {
if (u.dx == y0 - u.uy && u.dy == u.ux - x0)