healing vapor vs blindness

Drinking any potion full healing or extra healing or non-cursed potion
of healing cures blindness in addition to restoring lost hit points.
Now breathing vapor from any potion of full healing or non-cursed
potion of extra healing or blessed potion of healing will also do so.
This commit is contained in:
PatR
2017-08-14 16:36:37 -07:00
parent 5e54397609
commit 5f3e11687c

View File

@@ -1,4 +1,4 @@
/* 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. */
@@ -1343,15 +1343,22 @@ boolean your_fault;
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:
@@ -1361,6 +1368,8 @@ boolean your_fault;
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])
@@ -1419,7 +1428,7 @@ boolean your_fault;
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;
@@ -1534,7 +1543,8 @@ void
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:
@@ -1569,18 +1579,25 @@ register struct obj *obj;
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: