From: Pasi Kallinen Date: Sun, 6 Feb 2022 17:27:20 +0000 (+0200) Subject: Death attacking a monster does drain life attack X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=82d404ec516163288223f787aa82e6bd6eb69fce;p=nethack Death attacking a monster does drain life attack --- diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index 7b891818c..6946a6d8b 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -771,6 +771,7 @@ in flush_screen, reorder the code slightly to complete the bot() and timebot() calls prior to the window port call to place the cursor on the hero magic traps can toggle intrinsic invisibility +Death attacking a monster does drain life attack Fixes to 3.7.0-x Problems that Were Exposed Via git Repository diff --git a/src/uhitm.c b/src/uhitm.c index 76f2f8e48..536bb4fab 100644 --- a/src/uhitm.c +++ b/src/uhitm.c @@ -1985,10 +1985,14 @@ mhitm_ad_drli( /* mhitm */ int armpro = magic_negation(mdef); boolean cancelled = magr->mcan || !(rn2(10) >= 3 * armpro); - - if (!cancelled && !rn2(3) - && !(resists_drli(mdef) || defended(mdef, AD_DRLI))) { - mhm->damage = d(2, 6); /* Stormbringer uses monhp_per_lvl (1d8) */ + /* mhitm_ad_deth gets redirected here for Death's touch */ + boolean is_death = (mattk->adtyp == AD_DETH); + + if (is_death + || (!cancelled && !rn2(3) + && !(resists_drli(mdef) || defended(mdef, AD_DRLI)))) { + if (!is_death) + mhm->damage = d(2, 6); /* Stormbringer uses monhp_per_lvl (1d8) */ if (g.vis && canspotmon(mdef)) pline("%s becomes weaker!", Monnam(mdef)); if (mdef->mhpmax - mhm->damage > (int) mdef->m_lev) { @@ -3336,12 +3340,8 @@ mhitm_ad_deth(struct monst *magr, struct attack *mattk UNUSED, undead hero would; otherwise, just inflict the normal damage */ if (is_undead(pd) && mhm->damage > 1) mhm->damage = rnd(mhm->damage / 2); - /* - * FIXME? - * most monsters should be vulnerable to Death's touch - * instead of only receiving ordinary damage, but is it - * worth bothering with? - */ + /* simulate Death's touch with drain life attack */ + mhitm_ad_drli(magr, mattk, mdef, mhm); } }