fix #K3274 - applied polearm locates hidden mon

without using any time.  Targetting an apparently empty spot at
valid polearm range where a monster happens to be hiding reports
"Wait!  There's something there you can't see!" and displays the
remembered, unseen monster glyph, then aborts the attack attempt.
It would use a turn if the polearm became wielded in the attempt
but not if it was already wielded.  Make latter case take time.
This commit is contained in:
PatR
2021-03-07 15:08:08 -08:00
parent 1ab3b2a75d
commit 554297dd4a
2 changed files with 11 additions and 4 deletions
+4 -1
View File
@@ -1,4 +1,4 @@
NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.467 $ $NHDT-Date: 1614812488 2021/03/03 23:01:28 $ NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.468 $ $NHDT-Date: 1615158479 2021/03/07 23:07:59 $
General Fixes and Modified Features General Fixes and Modified Features
----------------------------------- -----------------------------------
@@ -394,6 +394,9 @@ it was theoretically possible to overflow an internal buffer containing
using the '(' or '*' commands using the '(' or '*' commands
hero would be blinded and stunned by an Archon's radiance (gaze attack) even hero would be blinded and stunned by an Archon's radiance (gaze attack) even
if the Archon was blind, but monsters would not if the Archon was blind, but monsters would not
applying a polearm to attempt to attack a hidden monster would report "wait!
there's a monster hidden there" and display the "remembered, unseen
monster" glyph but only use a turn if polearm wasn't already wielded
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
+7 -3
View File
@@ -1,4 +1,4 @@
/* NetHack 3.7 apply.c $NHDT-Date: 1611182249 2021/01/20 22:37:29 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.337 $ */ /* NetHack 3.7 apply.c $NHDT-Date: 1615158480 2021/03/07 23:08:00 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.340 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2012. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -3118,8 +3118,12 @@ use_pole(struct obj *obj)
/* Attack the monster there */ /* Attack the monster there */
g.bhitpos = cc; g.bhitpos = cc;
if ((mtmp = m_at(g.bhitpos.x, g.bhitpos.y)) != (struct monst *) 0) { if ((mtmp = m_at(g.bhitpos.x, g.bhitpos.y)) != (struct monst *) 0) {
if (attack_checks(mtmp, uwep)) if (attack_checks(mtmp, uwep)) /* can attack proceed? */
return res; /* no, abort the attack attempt; result depends on
res: 1 => polearm became wielded, 0 => already wielded;
g.context.move: 1 => discovered hidden monster at target spot,
0 => answered 'n' to "Really attack?" prompt */
return res || g.context.move;
if (overexertion()) if (overexertion())
return 1; /* burn nutrition; maybe pass out */ return 1; /* burn nutrition; maybe pass out */
g.context.polearm.hitmon = mtmp; g.context.polearm.hitmon = mtmp;