-/* NetHack 3.6 potion.c $NHDT-Date: 1501725406 2017/08/03 01:56:46 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.137 $ */
+/* NetHack 3.6 potion.c $NHDT-Date: 1502753790 2017/08/14 23:36:30 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.138 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
if (useeit && !affected)
pline("%s %s wet.", buf, aobjnam(saddle, "get"));
} else {
- boolean angermon = your_fault;
+ boolean angermon = your_fault, cureblind = FALSE;
switch (obj->otyp) {
- case POT_HEALING:
- case POT_EXTRA_HEALING:
case POT_FULL_HEALING:
+ cureblind = TRUE;
+ /*FALLTHRU*/
+ case POT_EXTRA_HEALING:
+ if (!obj->cursed)
+ cureblind = TRUE;
+ /*FALLTHRU*/
+ case POT_HEALING:
+ if (obj->blessed)
+ cureblind = TRUE;
if (mon->data == &mons[PM_PESTILENCE])
goto do_illness;
- /*FALLTHRU*/
+ /*FALLTHRU*/
case POT_RESTORE_ABILITY:
case POT_GAIN_ABILITY:
do_healing:
if (canseemon(mon))
pline("%s looks sound and hale again.", Monnam(mon));
}
+ if (cureblind)
+ mcureblindness(mon, canseemon(mon));
break;
case POT_SICKNESS:
if (mon->data == &mons[PM_PESTILENCE])
break;
case POT_BLINDNESS:
if (haseyes(mon->data)) {
- register int btmp = 64 + rn2(32)
+ int btmp = 64 + rn2(32)
+ rn2(32) * !resist(mon, POTION_CLASS, 0, NOTELL);
btmp += mon->mblinded;
potionbreathe(obj)
register struct obj *obj;
{
- register int i, ii, isdone, kn = 0;
+ int i, ii, isdone, kn = 0;
+ boolean cureblind = FALSE;
switch (obj->otyp) {
case POT_RESTORE_ABILITY:
u.mh++, context.botl = 1;
if (u.uhp < u.uhpmax)
u.uhp++, context.botl = 1;
+ cureblind = TRUE;
/*FALLTHRU*/
case POT_EXTRA_HEALING:
if (Upolyd && u.mh < u.mhmax)
u.mh++, context.botl = 1;
if (u.uhp < u.uhpmax)
u.uhp++, context.botl = 1;
+ if (!obj->cursed)
+ cureblind = TRUE;
/*FALLTHRU*/
case POT_HEALING:
if (Upolyd && u.mh < u.mhmax)
u.mh++, context.botl = 1;
if (u.uhp < u.uhpmax)
u.uhp++, context.botl = 1;
+ if (obj->blessed)
+ cureblind = TRUE;
+ if (cureblind)
+ make_blinded(0L, !u.ucreamed);
exercise(A_CON, TRUE);
break;
case POT_SICKNESS: