From 90313d443de76dc0f0a849baf27815a2f03a8aba Mon Sep 17 00:00:00 2001 From: Michael Meyer Date: Tue, 16 Nov 2021 09:57:37 -0500 Subject: [PATCH] Magical breathing helps fish survive out of water 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 | 3 ++- src/mon.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/allmain.c b/src/allmain.c index e0286fb99..6b8d45fb8 100644 --- a/src/allmain.c +++ b/src/allmain.c @@ -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) diff --git a/src/mon.c b/src/mon.c index 36488ce78..a9f01a115 100644 --- 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--;