From f13035aa487deba3e1dc33737152c21f7c60180d Mon Sep 17 00:00:00 2001 From: "nethack.rankin" Date: Thu, 22 Aug 2002 01:44:24 +0000 Subject: [PATCH] B09001 - mhp > mhpmax after life drain A monster hit by Stormbringer could take less damage to current HP than it took to max HP if attacker had sufficient penalties, so end up being healthier than its new maximum. This only applies to attacks by the player; attacks by monsters don't include the sorts of modifiers that can trigger it. --- doc/fixes34.1 | 1 + src/uhitm.c | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/fixes34.1 b/doc/fixes34.1 index bab8ca1ed..84a24430f 100644 --- a/doc/fixes34.1 +++ b/doc/fixes34.1 @@ -219,6 +219,7 @@ If there were a hole outside a shop, you could kick stuff out of the door into the hole without the shopkeeper noticing. curing hallucination while wielding Grayswandir should print a message removing unowned pick-axe from container in shop gave inappropriate message +don't let monster end up with more current HP than max HP after life drain Platform- and/or Interface-Specific Fixes diff --git a/src/uhitm.c b/src/uhitm.c index 29d881de1..5ae9e201b 100644 --- a/src/uhitm.c +++ b/src/uhitm.c @@ -1,4 +1,4 @@ -/* SCCS Id: @(#)uhitm.c 3.4 2002/02/17 */ +/* SCCS Id: @(#)uhitm.c 3.4 2002/08/21 */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ @@ -932,7 +932,10 @@ int thrown; } mon->mhp -= tmp; - if(mon->mhp < 1) + /* adjustments might have made tmp become less than what + a level draining artifact has already done to max HP */ + if (mon->mhp > mon->mhpmax) mon->mhp = mon->mhpmax; + if (mon->mhp < 1) destroyed = TRUE; if (mon->mtame && (!mon->mflee || mon->mfleetim) && tmp > 0) { abuse_dog(mon);