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.
This commit is contained in:
PatR
2020-03-07 10:47:51 -08:00
parent b069b2224a
commit 44b6612fdc
2 changed files with 6 additions and 11 deletions

View 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;