diff --git a/doc/fixes37.0 b/doc/fixes37.0 index 3c82aaf5d..04d58c1e7 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -1,4 +1,4 @@ -NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.535 $ $NHDT-Date: 1621208908 2021/05/16 23:48:28 $ +NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.539 $ $NHDT-Date: 1621380392 2021/05/18 23:26:32 $ General Fixes and Modified Features ----------------------------------- @@ -522,6 +522,8 @@ prediscovered weapons adjustmens: only knights and samurai know polearms; if the move counter ever reaches 1000000000, end the game knights get no metal armor penalty for clerical spells change touch of death from instadeath to maxhp reduction and damage +dying from being level-drained below level 1 killed hero without saying so + and jumped straight to "do you want your possessions identified?" Fixes to 3.7.0-x Problems that Were Exposed Via git Repository diff --git a/src/end.c b/src/end.c index 614e161c5..020ad15a2 100644 --- a/src/end.c +++ b/src/end.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 end.c $NHDT-Date: 1615304753 2021/03/09 15:45:53 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.222 $ */ +/* NetHack 3.7 end.c $NHDT-Date: 1621380392 2021/05/18 23:26:32 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.225 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */ /* NetHack may be freely redistributed. See license for details. */ @@ -902,8 +902,13 @@ disclose(int how, boolean taken) static void savelife(int how) { - int uhpmin = max(2 * u.ulevel, 10); + int uhpmin; + /* life-drain/level-loss to experience level 0 kills without actually + reducing ulevel below 1, but include this for bulletproofing */ + if (u.ulevel < 1) + u.ulevel = 1; + uhpmin = max(2 * u.ulevel, 10); if (u.uhpmax < uhpmin) u.uhpmax = uhpmin; u.uhp = u.uhpmax; diff --git a/src/exper.c b/src/exper.c index be3e11da7..4673d8aec 100644 --- a/src/exper.c +++ b/src/exper.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 exper.c $NHDT-Date: 1596498167 2020/08/03 23:42:47 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.43 $ */ +/* NetHack 3.7 exper.c $NHDT-Date: 1621380393 2021/05/18 23:26:33 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.46 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2007. */ /* NetHack may be freely redistributed. See license for details. */ @@ -205,8 +205,14 @@ losexp(const char *drainer) /* cause of death, if drain should be fatal */ else if (resists_drli(&g.youmonst)) return; + /* level-loss message; "Goodbye level 1." is fatal; divine anger + (drainer==NULL) resets a level 1 character to 0 experience points + without reducing level and that isn't fatal so suppress the message + in that situation */ + if (u.ulevel > 1 || drainer) + pline("%s level %d.", Goodbye(), u.ulevel); if (u.ulevel > 1) { - pline("%s level %d.", Goodbye(), u.ulevel--); + u.ulevel -= 1; /* remove intrinsic abilities */ adjabil(u.ulevel + 1, u.ulevel); } else {