The priest/cleric quest provides unlimited wraiths and a player
(not a robot with limitless patience) posting on reddit gave up
building up his character by killing them and eating the corpses
after accumulating 40K HP and 20K En. (Or something close to that;
I can't get back to the post right now.) His character might have
been capable of surviving decapitation or bisection.
Make it very much harder to get to 5 digits of HP or En via level
gains after reaching level 30. If maxhp < 300, new gains will be
capped at 5 extra HP; 300..599, cap is 4; 600..899, cap is 3;
900..1199, cap is 2; and once 1200 is reached, further level gains
will only add 1 HP. For maxen < 200, extra En is capped at 4;
200..399, cap is 3; 400..599, cap is 2; and once 600 is reached,
further gains only add 1 En. Note: this only kicks in when gaining
levels while already at level 30.
when hitting with wet towel causes it to lose some wetness, defer "your towel
dries" until after the hit message
do some extra damage when hitting an iron golem with a wet towel
+when already at level 30 and gaining another level--which doesn't increase
+ level further but does add more HP and Pw--throttle the increases
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
}
if (hp <= 0)
hp = 1;
- if (u.ulevel < MAXULEV)
+ if (u.ulevel < MAXULEV) {
+ /* remember increment; future level drain could take it away again */
u.uhpinc[u.ulevel] = (xchar) hp;
+ } else {
+ /* after level 30, throttle hit point gains from extra experience;
+ once max reaches 1200, further increments will be just 1 more */
+ char lim = 5 - u.uhpmax / 300;
+
+ lim = max(lim, 1);
+ if (hp > lim)
+ hp = lim;
+ }
return hp;
}
}
if (en <= 0)
en = 1;
- if (u.ulevel < MAXULEV)
+ if (u.ulevel < MAXULEV) {
+ /* remember increment; future level drain could take it away again */
u.ueninc[u.ulevel] = (xchar) en;
+ } else {
+ /* after level 30, throttle energy gains from extra experience;
+ once max reaches 600, further increments will be just 1 more */
+ char lim = 4 - u.uenmax / 200;
+
+ lim = max(lim, 1);
+ if (en > lim)
+ en = lim;
+ }
return en;
}