From: PatR Date: Sat, 7 Mar 2020 18:47:51 +0000 (-0800) Subject: mon's glorkum pass harmlessly through the shade X-Git-Tag: NetHack-3.6.6_Released~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=44b6612fdc582d22a349e3f2f3c664dd31a674e6;p=nethack mon's glorkum pass harmlessly through the shade I couldn't reproduce the problem; it appears to depend upon whether the file-scope variable 'otmp' has a stale value, and that might happen after a monster has tried to steal mon's saddle. However, the code pointed out in the report is clearly wrong. This prevents feedback of "glorkum" (with plural verb since quantity of 0 isn't 1), but the potential stale value hasn't been dealt with. --- diff --git a/doc/fixes36.6 b/doc/fixes36.6 index 388e271ff..21ccaaef7 100644 --- a/doc/fixes36.6 +++ b/doc/fixes36.6 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6-Mar2020 $:$NHDT-Revision: 1.1 $ $NHDT-Date: 1583445339 2020/03/05 21:55:39 $ +$NHDT-Branch: NetHack-3.6-Mar2020 $:$NHDT-Revision: 1.2 $ $NHDT-Date: 1583606861 2020/03/07 18:47:41 $ fixes36.6 contains a terse summary of changes made to 3.6.5 in order to produce 3.6.6 as well as any post-release fixes in binaries. @@ -12,6 +12,7 @@ formatting corpse names used internal buffers differently from formatting avoid divide by 0 crash if 'bogusmon' (file of bogus monster types) is empty avoid #wizrumorcheck crash if either 'rumors.tru' or 'rumors.fal' or both were empty when makedefs built 'rumors' +avoid "'s glorkum pass harmlessly through the shade" for weaponless mon Platform- and/or Interface-Specific Fixes or Features diff --git a/src/mhitm.c b/src/mhitm.c index 5d33df493..5ebbd8429 100644 --- a/src/mhitm.c +++ b/src/mhitm.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 mhitm.c $NHDT-Date: 1573773926 2019/11/14 23:25:26 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.118 $ */ +/* NetHack 3.6 mhitm.c $NHDT-Date: 1583606861 2020/03/07 18:47:41 $ $NHDT-Branch: NetHack-3.6-Mar2020 $:$NHDT-Revision: 1.119 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2011. */ /* NetHack may be freely redistributed. See license for details. */ @@ -860,7 +860,7 @@ mdamagem(magr, mdef, mattk) register struct monst *magr, *mdef; register struct attack *mattk; { - struct obj *obj, dmgwep; + struct obj *obj; char buf[BUFSZ]; struct permonst *pa = magr->data, *pd = mdef->data; int armpro, num, @@ -968,14 +968,8 @@ register struct attack *mattk; case AD_HEAL: case AD_PHYS: physical: - /* this shade check is necessary in case any attacks which - dish out physical damage bypass hitmm() to get here */ - if ((mattk->aatyp == AT_WEAP || mattk->aatyp == AT_CLAW) && otmp) - dmgwep = *otmp; - else - dmgwep = zeroobj; - - if (shade_miss(magr, mdef, &dmgwep, FALSE, TRUE)) { + obj = (mattk->aatyp == AT_WEAP || mattk->aatyp == AT_CLAW) ? otmp : 0; + if (shade_miss(magr, mdef, obj, FALSE, TRUE)) { tmp = 0; } else if (mattk->aatyp == AT_KICK && thick_skinned(pd)) { tmp = 0;