-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
-----------------------------------
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
-/* 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. */
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;
-/* 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. */
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 {