stop amulets and other items which aren't affected by erosion damage from
being subjected to erosion damage
grammar bit: polyself w/ gender change yielded "you turn into a Elvenking"
+some blindness cures ignored u.ucreamed
+some instances of stun or confusion timers were being overridden rather than
+ incremented when new stun or confusion damage was suffered
Platform- and/or Interface-Specific Fixes
make_confused(HConfusion + d(2, 4), FALSE);
} else if (!rn2(4) && !Blind) {
pline("Everything suddenly goes dark.");
- make_blinded((long) d(2, 10), FALSE);
+ /* hero is not Blind, but Blinded timer might be nonzero if
+ blindness is being overridden by the Eyes of the Overworld */
+ make_blinded((Blinded & TIMEOUT) + (long) d(2, 10), FALSE);
if (!Blind)
Your1(vision_clears);
} else if (!rn2(3)) {
#endif
} else if (otmp->otyp == EGG && stale_egg(otmp)) {
pline("Ugh. Rotten egg."); /* perhaps others like it */
+ /* increasing existing nausea means that it will take longer
+ before eventual vomit, but also means that constitution
+ will be abused more times before illness completes */
make_vomiting((Vomiting & TIMEOUT) + (long) d(10, 4), TRUE);
} else {
give_feedback:
/* not blind at this point implies you're wearing
the Eyes of the Overworld; make them block this
particular stun attack too */
- if (!Blind)
+ if (!Blind) {
Your1(vision_clears);
- else
- make_stunned((long) d(1, 3), TRUE);
+ } else {
+ long oldstun = (HStun & TIMEOUT), newstun = (long) rnd(3);
+
+ /* we don't want to increment stun duration every time
+ or sighted hero will become incapacitated */
+ make_stunned(max(oldstun, newstun), TRUE);
+ }
}
}
break;
u.uhp = (u.uhpmax += nxtra);
}
}
- if (cureblind)
+ if (cureblind) {
+ /* 3.6.1: it's debatible whether healing magic should clean off
+ mundane 'dirt', but if it doesn't, blindness isn't cured */
+ u.ucreamed = 0;
make_blinded(0L, TRUE);
+ }
if (curesick) {
make_vomiting(0L, TRUE);
make_sick(0L, (char *) 0, TRUE, SICK_ALL);
} else if (uright && uright->cursed) { /* right ring */
otmp = uright;
} else if (ublindf && ublindf->cursed) { /* eyewear */
- otmp = ublindf; /* must be non-blinding lenses */
+ otmp = ublindf; /* must be non-blinding lenses */
/* if weapon wasn't handled above, do it now */
} else if (welded(uwep)) { /* weapon */
otmp = uwep;
ABASE(A_STR) = AMAX(A_STR);
if (u.uhunger < 900)
init_uhunger();
+ /* luck couldn't have been negative at start of prayer because
+ the prayer would have failed, but might have been decremented
+ due to a timed event (delayed death of peaceful monster hit
+ by hero-created stinking cloud) during the praying interval */
if (u.uluck < 0)
u.uluck = 0;
+ /* superfluous; if hero was blinded we'd be handling trouble
+ rather than issuing a pat-on-head */
+ u.ucreamed = 0;
make_blinded(0L, TRUE);
context.botl = 1;
break;
if (u.uhp >= (u.uhpmax - 5))
u.uhpmax += 4;
u.uhp = u.uhpmax;
+ u.ucreamed = 0;
make_blinded(0L, TRUE);
make_sick(0L, (char *) 0, FALSE, SICK_ALL);
heal_legs();
break;
case 7:
case 8:
- make_stunned(old_conf + 2L * duration / 3L, FALSE); /* 20% */
- make_confused(old_stun + duration / 3L, FALSE);
+ make_stunned(old_stun + 2L * duration / 3L, FALSE); /* 20% */
+ make_confused(old_conf + duration / 3L, FALSE);
break;
case 9:
make_stunned(old_stun + duration, FALSE); /* 10% */