long worm growth again

The previous change could have resulted in a long worm losing HP when
gaining a segment (if it had gained levels while at the peak amount
for the previous number of segments).  I think this is finally right.
This commit is contained in:
PatR
2021-12-07 15:54:46 -08:00
parent 47243ba860
commit 49f21769da

View File

@@ -214,7 +214,7 @@ worm_move(struct monst *worm)
wheads[wnum] = new_seg; /* move the end pointer */
if (wgrowtime[wnum] <= g.moves) {
int whplimit, whpcap, wsegs = count_wsegs(worm);
int whplimit, whpcap, prev_mhp, wsegs = count_wsegs(worm);
/* first set up for the next time to grow */
if (!wgrowtime[wnum]) {
@@ -251,6 +251,7 @@ worm_move(struct monst *worm)
if (whplimit > MHPMAX)
whplimit = MHPMAX;
prev_mhp = worm->mhp;
worm->mhp += d(2, 2); /* 2..4, average 3 */
whpcap = max(whplimit, worm->mhpmax);
if (worm->mhp < whpcap) {
@@ -258,7 +259,7 @@ worm_move(struct monst *worm)
peak tail growth has already done so; when that isn't the case,
if segment growth exceeds current max HP then increase it */
if (worm->mhp > whplimit)
worm->mhp = whplimit;
worm->mhp = max(prev_mhp, whplimit);
if (worm->mhp > worm->mhpmax)
worm->mhpmax = worm->mhp;
} else {