]> granicus.if.org Git - nethack/commitdiff
Death attacking a monster does drain life attack
authorPasi Kallinen <paxed@alt.org>
Sun, 6 Feb 2022 17:27:20 +0000 (19:27 +0200)
committerPasi Kallinen <paxed@alt.org>
Sun, 6 Feb 2022 17:27:20 +0000 (19:27 +0200)
doc/fixes3-7-0.txt
src/uhitm.c

index 7b891818c49b63f9d675651a2afa21d536c963ad..6946a6d8b670868f9fa0ca0e5117d7e890556a81 100644 (file)
@@ -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
index 76f2f8e485358667793c7f63d0625276e46c5682..536bb4fab05545659ba4f2bdcfd858e63fd2b7a8 100644 (file)
@@ -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);
     }
 }