curing deafness

Make healing magic which cures blindness also cure deafness.  So,
drinking non-cursed potion of healing or any extra healing or full
healing; breathing fumes from blessed potion of healing or non-cursed
potion of extra healing or any potion of full healing; prayer reward
to cure blindness as a minor trouble.  (Doesn't affect unicorn horns
which already treat deafness and blindness as two distinct troubles
that are eligible to be cured.)

More of a missing feature than a bug fix, so I listed it in the new
features section of the fixes file.
This commit is contained in:
PatR
2019-02-01 18:24:23 -08:00
parent 9f1ae0fe74
commit 6daa6e2de9
3 changed files with 33 additions and 10 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 potion.c $NHDT-Date: 1547518427 2019/01/15 02:13:47 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.159 $ */
/* NetHack 3.6 potion.c $NHDT-Date: 1549074254 2019/02/02 02:24:14 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.160 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2013. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1161,6 +1161,8 @@ register boolean curesick, cureblind;
mundane 'dirt', but if it doesn't, blindness isn't cured */
u.ucreamed = 0;
make_blinded(0L, TRUE);
/* heal deafness too */
make_deaf(0L, TRUE);
}
if (curesick) {
make_vomiting(0L, TRUE);
@@ -1642,8 +1644,10 @@ register struct obj *obj;
u.uhp++, context.botl = 1;
if (obj->blessed)
cureblind = TRUE;
if (cureblind)
if (cureblind) {
make_blinded(0L, !u.ucreamed);
make_deaf(0L, TRUE);
}
exercise(A_CON, TRUE);
break;
case POT_SICKNESS:

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 pray.c $NHDT-Date: 1540596912 2018/10/26 23:35:12 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.104 $ */
/* NetHack 3.6 pray.c $NHDT-Date: 1549074257 2019/02/02 02:24:17 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.110 $ */
/* Copyright (c) Benson I. Margulies, Mike Stephenson, Steve Linhart, 1989. */
/* NetHack may be freely redistributed. See license for details. */
@@ -247,6 +247,11 @@ in_trouble()
&& (!u.uswallow
|| !attacktype_fordmg(u.ustuck->data, AT_ENGL, AD_BLND)))
return TROUBLE_BLIND;
/* deafness isn't it's own trouble; healing magic cures deafness
when it cures blindness, so do the same with trouble repair */
if ((HDeaf & TIMEOUT) > 1L)
return TROUBLE_BLIND;
for (i = 0; i < A_MAX; i++)
if (ABASE(i) < AMAX(i))
return TROUBLE_POISONED;
@@ -513,14 +518,27 @@ int trouble;
}
(void) encumber_msg();
break;
case TROUBLE_BLIND: {
case TROUBLE_BLIND: { /* handles deafness as well as blindness */
char msgbuf[BUFSZ];
const char *eyes = body_part(EYE);
boolean cure_deaf = (HDeaf & TIMEOUT) ? TRUE : FALSE;
if (eyecount(youmonst.data) != 1)
eyes = makeplural(eyes);
Your("%s %s better.", eyes, vtense(eyes, "feel"));
u.ucreamed = 0;
make_blinded(0L, FALSE);
msgbuf[0] = '\0';
if (Blinded) {
if (eyecount(youmonst.data) != 1)
eyes = makeplural(eyes);
Sprintf(msgbuf, "Your %s %s better", eyes, vtense(eyes, "feel"));
u.ucreamed = 0;
make_blinded(0L, FALSE);
}
if (cure_deaf) {
make_deaf(0L, FALSE);
if (!Deaf)
Sprintf(eos(msgbuf), "%s can hear again",
!*msgbuf ? "You" : " and you");
}
if (*msgbuf)
pline("%s.", msgbuf);
break;
}
case TROUBLE_WOUNDED_LEGS: