From c318841363ea5c31a3108c2a85e2dd8bdc150dc3 Mon Sep 17 00:00:00 2001 From: PatR Date: Thu, 29 Nov 2018 03:49:16 -0800 Subject: [PATCH] fix #H7631 - wielding cursed weptool via 'apply' Applying a non-wielded cursed pick-axe first wielded it, then dug, but it didn't report "pick-axe is welded to your hand". (Attempting to drop it or wield something else did report that, after the fact.) The same thing happened if you used a pole-arm rather than pick-axe. --- doc/fixes36.2 | 2 ++ src/wield.c | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/doc/fixes36.2 b/doc/fixes36.2 index 134a4e456..7ecb9d247 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -226,6 +226,8 @@ for configurations with 'long int' larger than 'int', lev_comp wrote some garbage into the *.lev files, but nethack seemed unaffected by that (at least on little-endian hardare) and loaded the levels successfully stinking cloud placed near water could kill underwater creatures +applying--rather than wielding--a cursed polearm or weapon-tool didn't report + that it had become welded to hero's hand(s) Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository diff --git a/src/wield.c b/src/wield.c index 1063e125b..701e2edcf 100644 --- a/src/wield.c +++ b/src/wield.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 wield.c $NHDT-Date: 1525012623 2018/04/29 14:37:03 $ $NHDT-Branch: master $:$NHDT-Revision: 1.56 $ */ +/* NetHack 3.6 wield.c $NHDT-Date: 1543492132 2018/11/29 11:48:52 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.58 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2009. */ /* NetHack may be freely redistributed. See license for details. */ @@ -575,8 +575,13 @@ const char *verb; /* "rub",&c */ } else { struct obj *oldwep = uwep; - You("now wield %s.", doname(obj)); - setuwep(obj); + if (will_weld(obj)) { + /* hope none of ready_weapon()'s early returns apply here... */ + (void) ready_weapon(obj); + } else { + You("now wield %s.", doname(obj)); + setuwep(obj); + } if (flags.pushweapon && oldwep && uwep != oldwep) setuswapwep(oldwep); }