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

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) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */
@@ -3118,8 +3118,12 @@ use_pole(struct obj *obj)
/* Attack the monster there */
g.bhitpos = cc;
if ((mtmp = m_at(g.bhitpos.x, g.bhitpos.y)) != (struct monst *) 0) {
if (attack_checks(mtmp, uwep))
return res;
if (attack_checks(mtmp, uwep)) /* can attack proceed? */
/* 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())
return 1; /* burn nutrition; maybe pass out */
g.context.polearm.hitmon = mtmp;