drum of earthquake causing deafness inappropriately

Address a drum of earthquake inconsistency reported 2017-03-23:
"Drum of earthquake does not make you deaf.  Leather drum or depleted
drum of earthquake does."

bug 1099
This commit is contained in:
nhmall
2018-09-23 10:11:02 -04:00
parent 84c17d2e21
commit 76bffe5ba4
2 changed files with 23 additions and 5 deletions
+1
View File
@@ -135,6 +135,7 @@ gremlins seemed impervious to Sunsword's light yet a flash from a camera
caused them to cry out in pain caused them to cry out in pain
when objects migrate (fall down stairs) and invisible hero (w/o see invisible, when objects migrate (fall down stairs) and invisible hero (w/o see invisible,
no-autopickup) descends, stairs get shown instead of object(s) on them no-autopickup) descends, stairs get shown instead of object(s) on them
drum of earthquake was causing deafness but oddly enough only when used up
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
+22 -5
View File
@@ -445,6 +445,11 @@ generic_lvl_desc()
return "dungeon"; return "dungeon";
} }
const char *beats[] = {
"stepper", "one drop", "slow two", "triple stroke roll",
"double shuffle", "half-time shuffle", "second line", "train"
};
/* /*
* The player is trying to extract something from his/her instrument. * The player is trying to extract something from his/her instrument.
*/ */
@@ -454,6 +459,7 @@ struct obj *instr;
{ {
int damage, mode, do_spec = !(Stunned || Confusion); int damage, mode, do_spec = !(Stunned || Confusion);
struct obj itmp; struct obj itmp;
boolean mundane = FALSE;
itmp = *instr; itmp = *instr;
itmp.oextra = (struct oextra *) 0; /* ok on this copy as instr maintains itmp.oextra = (struct oextra *) 0; /* ok on this copy as instr maintains
@@ -462,8 +468,10 @@ struct obj *instr;
/* if won't yield special effect, make sound of mundane counterpart */ /* if won't yield special effect, make sound of mundane counterpart */
if (!do_spec || instr->spe <= 0) if (!do_spec || instr->spe <= 0)
while (objects[itmp.otyp].oc_magic) while (objects[itmp.otyp].oc_magic) {
itmp.otyp -= 1; itmp.otyp -= 1;
mundane = TRUE;
}
#ifdef MAC #ifdef MAC
mac_speaker(&itmp, "C"); mac_speaker(&itmp, "C");
#endif #endif
@@ -579,6 +587,10 @@ struct obj *instr;
exercise(A_DEX, TRUE); exercise(A_DEX, TRUE);
break; break;
case DRUM_OF_EARTHQUAKE: /* create several pits */ case DRUM_OF_EARTHQUAKE: /* create several pits */
/* a drum of earthquake does cause not cause deafness
while still magically functional, nor afterwards
when it invokes the LEATHER_DRUM case instead and
mundane is flagged */
consume_obj_charge(instr, TRUE); consume_obj_charge(instr, TRUE);
You("produce a heavy, thunderous rolling!"); You("produce a heavy, thunderous rolling!");
@@ -589,10 +601,15 @@ struct obj *instr;
makeknown(DRUM_OF_EARTHQUAKE); makeknown(DRUM_OF_EARTHQUAKE);
break; break;
case LEATHER_DRUM: /* Awaken monsters */ case LEATHER_DRUM: /* Awaken monsters */
You("beat a deafening row!"); if (!mundane) {
awaken_monsters(u.ulevel * 40); You("beat a deafening row!");
incr_itimeout(&HDeaf, rn1(20, 30)); incr_itimeout(&HDeaf, rn1(20, 30));
exercise(A_WIS, FALSE); exercise(A_WIS, FALSE);
} else
You("%s %s.",
rn2(2) ? "butcher" : rn2(2) ? "manage" : "pull off",
an(beats[rn2(SIZE(beats))]));
awaken_monsters(u.ulevel * (mundane ? 5 : 40));
context.botl = TRUE; context.botl = TRUE;
break; break;
default: default: