#wizintrinsic for 'warn_of_mon' didn't set any type of monster (now grid bugs)
clairvoyance would show trap instead of a monster on/in that trap, which was
intentional, but when clairvoyance finished the monster wasn't shown
+nurse corpse/tin chance to convey poison resistance when eaten was not honored
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
/* called after completely consuming a corpse */
STATIC_OVL void
cpostfx(pm)
-register int pm;
+int pm;
{
- register int tmp = 0;
+ int tmp = 0;
int catch_lycanthropy = NON_PM;
+ boolean check_intrinsics = FALSE;
/* in case `afternmv' didn't get called for previously mimicking
gold, clean up now to avoid `eatmbuf' memory leak */
/* MRKR: "eye of newt" may give small magical energy boost */
if (rn2(3) || 3 * u.uen <= 2 * u.uenmax) {
int old_uen = u.uen;
+
u.uen += rnd(3);
if (u.uen > u.uenmax) {
if (!rn2(3))
u.uhp = u.uhpmax;
make_blinded(0L, !u.ucreamed);
context.botl = 1;
+ check_intrinsics = TRUE; /* might also convey poison resistance */
break;
case PM_STALKER:
if (!Invis) {
pline("For some reason, that tasted bland.");
}
/*FALLTHRU*/
- default: {
+ default:
+ check_intrinsics = TRUE;
+ break;
+ }
+
+ /* possibly convey an intrinsic */
+ if (check_intrinsics) {
struct permonst *ptr = &mons[pm];
boolean conveys_STR = is_giant(ptr);
int i, count;
gainstr((struct obj *) 0, 0, TRUE);
else if (tmp > 0)
givit(tmp, ptr);
- break;
- } /* default case */
- } /* switch */
+ } /* check_intrinsics */
if (catch_lycanthropy >= LOW_PM) {
set_ulycn(catch_lycanthropy);