]> granicus.if.org Git - nethack/commitdiff
Magical breathing helps fish survive out of water
authorMichael Meyer <me@entrez.cc>
Tue, 16 Nov 2021 14:57:37 +0000 (09:57 -0500)
committerPatR <rankin@nethack.org>
Fri, 19 Nov 2021 02:36:54 +0000 (18:36 -0800)
The hero in an aquatic polyform loses HP for time spent out of the
water; allow magical breathing to prevent this, just as it allows the
hero in her non-aquatic natural form to breathe underwater.

Also add a similar rule for monster fish-out-of-water HP loss, even
though currently monsters can't use amulets of magical breathing and
there's no non-breathing fish/eel -- just in case this changes at some
point.

src/allmain.c
src/mon.c

index e0286fb999e08f3736564fb597050916fce7e8b9..6b8d45fb8776669f187eed4181ebec56d77d88b7 100644 (file)
@@ -528,7 +528,8 @@ regen_hp(int wtcap)
         if (u.mh < 1) { /* shouldn't happen... */
             rehumanize();
         } else if (g.youmonst.data->mlet == S_EEL
-                   && !is_pool(u.ux, u.uy) && !Is_waterlevel(&u.uz)) {
+                   && !is_pool(u.ux, u.uy) && !Is_waterlevel(&u.uz)
+                   && !Breathless) {
             /* eel out of water loses hp, similar to monster eels;
                as hp gets lower, rate of further loss slows down */
             if (u.mh > 1 && !Regeneration && rn2(u.mh) > rn2(8)
index 36488ce785450ad958dd0caf1e3e2ccdf12d6533..a9f01a115ff33188c520222465c694a1719b464f 100644 (file)
--- a/src/mon.c
+++ b/src/mon.c
@@ -828,7 +828,8 @@ minliquid_core(struct monst* mtmp)
         }
     } else {
         /* but eels have a difficult time outside */
-        if (mtmp->data->mlet == S_EEL && !Is_waterlevel(&u.uz)) {
+        if (mtmp->data->mlet == S_EEL && !Is_waterlevel(&u.uz)
+            && !breathless(mtmp->data)) {
             /* as mhp gets lower, the rate of further loss slows down */
             if (mtmp->mhp > 1 && rn2(mtmp->mhp) > rn2(8))
                 mtmp->mhp--;