From: PatR Date: Mon, 14 Aug 2017 23:36:37 +0000 (-0700) Subject: healing vapor vs blindness X-Git-Tag: NetHack-3.6.1_RC01~426 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5f3e11687c839c74cf65757f47445480196a29ff;p=nethack 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. --- diff --git a/src/potion.c b/src/potion.c index fd1161e3a..1a7e08ecc 100644 --- a/src/potion.c +++ b/src/potion.c @@ -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: