]> granicus.if.org Git - nethack/commitdiff
mon's glorkum pass harmlessly through the shade
authorPatR <rankin@nethack.org>
Sat, 7 Mar 2020 18:47:51 +0000 (10:47 -0800)
committerPatR <rankin@nethack.org>
Sat, 7 Mar 2020 18:47:51 +0000 (10:47 -0800)
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.

doc/fixes36.6
src/mhitm.c

index 388e271ffda61951276712208d7b19529dda7000..21ccaaef7df78bb920712ad97158a2cff9efbaee 100644 (file)
@@ -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 "<mon>'s glorkum pass harmlessly through the shade" for weaponless mon
   
 
 Platform- and/or Interface-Specific Fixes or Features
index 5d33df493ee018d2b6b3fc091756c6b712d9fb93..5ebbd84296aba4ebc94f0bf23d391a3b04798488 100644 (file)
@@ -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;