add soundeffects hooks to core
Insert the calls to trigger a number of potential soundeffects
into the core.
If no additional soundlib support is integrated into the
build, then the Soundeffect macro (sndprocs.h) expands to nothing:
[#define Soundeffect(seid, vol)
]
If, however, at least one additional soundlib support is integrated
into the build, then the Soundeffect macro gets defined as this
in sndprocs.h:
[#define Soundeffect(seid, vol) \
do { \
if (!Deaf && soundprocs.sound_soundeffect \
&& ((soundprocs.sndcap & SNDCAP_SOUNDEFFECTS) != 0)) \
(*soundprocs.sound_soundeffect)(emptystr, (seid), (vol)); \
} while(0)
]
That macro definition checks for the hero not being Deaf; it checks
to ensure that the active soundlib interface has a non-null
sound_soundeffect() function pointer; and it checks to ensure
that the active soundlib interface has declared that it supports
soundeffects by setting the SNDCAP_SOUNDEFFECTS bit in its sndcap
entry. That just means that the interface routines are prepared to
accept and deal with the calls from the core, whether or not it
actually produces the desired soundeffect.
This commit is contained in:
@@ -177,4 +177,204 @@ enum instruments_broad {
|
|||||||
ins_fencepost
|
ins_fencepost
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
enum sound_effect_entries {
|
||||||
|
se_faint_splashing = 1,
|
||||||
|
se_crackling_of_hellfire = 2,
|
||||||
|
se_heart_beat = 3,
|
||||||
|
se_typing_noise = 4,
|
||||||
|
se_hollow_sound = 5,
|
||||||
|
se_rustling_paper = 6,
|
||||||
|
se_crushing_sound = 7,
|
||||||
|
se_splash = 8,
|
||||||
|
se_chains_rattling_gears_turning = 9,
|
||||||
|
se_smashing_and_crushing = 10,
|
||||||
|
se_gears_turning_chains_rattling = 11,
|
||||||
|
se_loud_splash = 12,
|
||||||
|
se_lound_crash = 13,
|
||||||
|
se_crashing_rock = 14,
|
||||||
|
se_sizzling = 15,
|
||||||
|
se_crashing_boulder = 16,
|
||||||
|
se_boulder_drop = 17,
|
||||||
|
se_item_tumble_downwards = 18,
|
||||||
|
se_drain_noises = 19,
|
||||||
|
se_ring_in_drain = 20,
|
||||||
|
se_groans_and_moans = 21,
|
||||||
|
se_scratching = 22,
|
||||||
|
se_glass_shattering = 23,
|
||||||
|
se_egg_cracking = 24,
|
||||||
|
se_gushing_sound = 25,
|
||||||
|
se_glass_crashing = 26,
|
||||||
|
se_egg_splatting = 27,
|
||||||
|
se_sinister_laughter = 28,
|
||||||
|
se_blast = 29,
|
||||||
|
se_stone_breaking = 30,
|
||||||
|
se_stone_crumbling = 31,
|
||||||
|
se_snakes_hissing = 32,
|
||||||
|
se_loud_pop = 33,
|
||||||
|
se_clanking_pipe = 34,
|
||||||
|
se_sewer_song = 35,
|
||||||
|
se_monster_behind_boulder = 36,
|
||||||
|
se_wailing_of_the_banshee = 37,
|
||||||
|
se_swoosh = 38,
|
||||||
|
se_explosion = 39,
|
||||||
|
se_crashing_sound = 40,
|
||||||
|
se_someone_summoning = 41,
|
||||||
|
se_rushing_wind_noise = 42,
|
||||||
|
se_splat_from_engulf = 43,
|
||||||
|
se_faint_sloshing = 44,
|
||||||
|
se_crunching_sound = 45,
|
||||||
|
se_slurping_sound = 46,
|
||||||
|
se_masticating_sound = 47,
|
||||||
|
se_distant_thunder = 48,
|
||||||
|
se_applause = 49,
|
||||||
|
se_shrill_whistle = 50,
|
||||||
|
se_someone_yells = 51,
|
||||||
|
se_door_unlock_and_open = 52,
|
||||||
|
se_door_open = 53,
|
||||||
|
se_door_crash_open = 54,
|
||||||
|
se_dry_throat_rattle = 55,
|
||||||
|
se_cough = 56,
|
||||||
|
se_angry_snakes = 57,
|
||||||
|
se_zap_then_explosion = 58,
|
||||||
|
se_zap = 59,
|
||||||
|
se_horn_being_played = 60,
|
||||||
|
se_mon_chugging_potion = 61,
|
||||||
|
se_bugle_playing_reveille = 62,
|
||||||
|
se_crash_through_floor = 63,
|
||||||
|
se_thump = 64,
|
||||||
|
se_scream = 65,
|
||||||
|
se_tumbler_click = 66,
|
||||||
|
se_gear_turn = 67,
|
||||||
|
se_divine_music = 68,
|
||||||
|
se_thunderclap = 69,
|
||||||
|
se_sad_wailing = 70,
|
||||||
|
se_maniacal_laughter = 71,
|
||||||
|
se_rumbling_of_earth = 72,
|
||||||
|
se_clanging_sound = 73,
|
||||||
|
se_mutter_imprecations = 74,
|
||||||
|
se_mutter_incantation = 75,
|
||||||
|
se_angry_voice = 76,
|
||||||
|
se_sceptor_pounding = 77,
|
||||||
|
se_courtly_conversation = 78,
|
||||||
|
se_low_buzzing = 79,
|
||||||
|
se_angry_drone = 80,
|
||||||
|
se_bees = 81,
|
||||||
|
se_someone_searching = 82,
|
||||||
|
se_guards_footsteps = 83,
|
||||||
|
se_faint_chime = 84,
|
||||||
|
se_loud_click = 85,
|
||||||
|
se_soft_click = 86,
|
||||||
|
se_squeak = 87,
|
||||||
|
se_squeak_C = 88,
|
||||||
|
se_squeak_D_flat = 89,
|
||||||
|
se_squeak_D = 90,
|
||||||
|
se_squeak_E_flat = 91,
|
||||||
|
se_squeak_E = 92,
|
||||||
|
se_squeak_F = 93,
|
||||||
|
se_squeak_F_sharp = 94,
|
||||||
|
se_squeak_G = 95,
|
||||||
|
se_squeak_G_sharp = 96,
|
||||||
|
se_squeak_A = 97,
|
||||||
|
se_squeak_B_flat = 98,
|
||||||
|
se_squeak_B = 99,
|
||||||
|
se_someone_bowling = 100,
|
||||||
|
se_rumbling = 101,
|
||||||
|
se_loud_crash = 102,
|
||||||
|
se_deafening_roar_atmospheric = 103,
|
||||||
|
se_low_hum = 104,
|
||||||
|
se_laughter = 105,
|
||||||
|
se_cockatrice_hiss = 106,
|
||||||
|
se_chant = 107,
|
||||||
|
se_cracking_sound = 108,
|
||||||
|
se_ripping_sound = 109,
|
||||||
|
se_thud = 110,
|
||||||
|
se_clank = 111,
|
||||||
|
se_crumbling_sound = 112,
|
||||||
|
se_soft_crackling = 113,
|
||||||
|
se_crackling = 114,
|
||||||
|
se_sharp_crack = 115,
|
||||||
|
se_wall_of_force = 116,
|
||||||
|
se_alarm = 117,
|
||||||
|
se_kick_door_it_shatters = 118,
|
||||||
|
se_kick_door_it_crashes_open = 119,
|
||||||
|
se_bubble_rising = 120,
|
||||||
|
se_bolt_of_lightning = 121,
|
||||||
|
se_board_squeak = 122,
|
||||||
|
se_board_squeaks_loudly = 123,
|
||||||
|
se_boing = 124,
|
||||||
|
se_crashed_ceiling = 125,
|
||||||
|
se_clash = 126,
|
||||||
|
se_crash_door = 127,
|
||||||
|
se_crash = 128,
|
||||||
|
se_crash_throne_destroyed = 129,
|
||||||
|
se_crash_something_broke = 130,
|
||||||
|
se_kadoom_boulder_falls_in = 131,
|
||||||
|
se_klunk_pipe = 132,
|
||||||
|
se_kerplunk_boulder_gone = 133,
|
||||||
|
se_klunk = 134,
|
||||||
|
se_klick = 135,
|
||||||
|
se_kaboom_door_explodes = 136,
|
||||||
|
se_kaboom_boom_boom = 137,
|
||||||
|
se_kaablamm_of_mine = 138,
|
||||||
|
se_kaboom = 139,
|
||||||
|
se_splat_egg = 140,
|
||||||
|
se_destroy_web = 141,
|
||||||
|
se_iron_ball_dragging_you = 142,
|
||||||
|
se_iron_ball_hits_you = 143,
|
||||||
|
se_lid_slams_open_falls_shut = 144,
|
||||||
|
se_chain_shatters = 145,
|
||||||
|
se_furious_bubbling = 146,
|
||||||
|
se_air_crackles = 147,
|
||||||
|
se_potion_crash_and_break = 148,
|
||||||
|
se_hiss = 149,
|
||||||
|
se_growl = 150,
|
||||||
|
se_canine_bark = 151,
|
||||||
|
se_canine_growl = 152,
|
||||||
|
se_canine_whine = 153,
|
||||||
|
se_canine_yip = 154,
|
||||||
|
se_canine_howl = 155,
|
||||||
|
se_feline_yowl = 156,
|
||||||
|
se_feline_meow = 157,
|
||||||
|
se_feline_purr = 158,
|
||||||
|
se_feline_yip = 159,
|
||||||
|
se_feline_mew = 160,
|
||||||
|
se_roar = 161,
|
||||||
|
se_snarl = 162,
|
||||||
|
se_buzz = 163,
|
||||||
|
se_squeek = 164,
|
||||||
|
se_squawk = 165,
|
||||||
|
se_squeal = 166,
|
||||||
|
se_screech = 167,
|
||||||
|
se_equine_neigh = 168,
|
||||||
|
se_equine_whinny = 169,
|
||||||
|
se_equine_whicker = 170,
|
||||||
|
se_bovine_moo = 171,
|
||||||
|
se_bovine_bellow = 172,
|
||||||
|
se_wail = 173,
|
||||||
|
se_groan = 174,
|
||||||
|
se_grunt = 175,
|
||||||
|
se_gurgle = 176,
|
||||||
|
se_elephant_trumpet = 177,
|
||||||
|
se_snake_rattle = 178,
|
||||||
|
se_hallu_growl = 179,
|
||||||
|
};
|
||||||
|
|
||||||
|
#if defined(SND_LIB_QTSOUND) || defined(SND_LIB_PORTAUDIO) \
|
||||||
|
|| defined(SND_LIB_OPENAL) || defined(SND_LIB_SDL_MIXER) \
|
||||||
|
|| defined(SND_LIB_MINIAUDIO) || defined(SND_LIB_FMOD) \
|
||||||
|
|| defined(SND_LIB_SOUND_ESCCODES) || defined(SND_LIB_VISSOUND) \
|
||||||
|
|| defined(SND_LIB_WINDSOUND)
|
||||||
|
|
||||||
|
#define Soundeffect(seid, vol) \
|
||||||
|
do { \
|
||||||
|
if (!Deaf && soundprocs.sound_soundeffect \
|
||||||
|
&& ((soundprocs.sndcap & SNDCAP_SOUNDEFFECTS) != 0)) \
|
||||||
|
(*soundprocs.sound_soundeffect)(emptystr, (seid), (vol)); \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define Soundeffect(seid, vol)
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* SNDPROCS_H */
|
#endif /* SNDPROCS_H */
|
||||||
|
|||||||
+18
-8
@@ -343,18 +343,22 @@ use_stethoscope(struct obj *obj)
|
|||||||
mstatusline(u.ustuck);
|
mstatusline(u.ustuck);
|
||||||
return res;
|
return res;
|
||||||
} else if (u.dz) {
|
} else if (u.dz) {
|
||||||
if (Underwater)
|
if (Underwater) {
|
||||||
|
Soundeffect(se_faint_splashing, 35);
|
||||||
You_hear("faint splashing.");
|
You_hear("faint splashing.");
|
||||||
else if (u.dz < 0 || !can_reach_floor(TRUE))
|
} else if (u.dz < 0 || !can_reach_floor(TRUE)) {
|
||||||
cant_reach_floor(u.ux, u.uy, (u.dz < 0), TRUE);
|
cant_reach_floor(u.ux, u.uy, (u.dz < 0), TRUE);
|
||||||
else if (its_dead(u.ux, u.uy, &res))
|
} else if (its_dead(u.ux, u.uy, &res)) {
|
||||||
; /* message already given */
|
; /* message already given */
|
||||||
else if (Is_stronghold(&u.uz))
|
} else if (Is_stronghold(&u.uz)) {
|
||||||
|
Soundeffect(se_crackling_of_hellfire, 35);
|
||||||
You_hear("the crackling of hellfire.");
|
You_hear("the crackling of hellfire.");
|
||||||
else
|
} else {
|
||||||
pline_The("%s seems healthy enough.", surface(u.ux, u.uy));
|
pline_The("%s seems healthy enough.", surface(u.ux, u.uy));
|
||||||
|
}
|
||||||
return res;
|
return res;
|
||||||
} else if (obj->cursed && !rn2(2)) {
|
} else if (obj->cursed && !rn2(2)) {
|
||||||
|
Soundeffect(se_heart_beat, 100);
|
||||||
You_hear("your heart beat.");
|
You_hear("your heart beat.");
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@@ -366,6 +370,7 @@ use_stethoscope(struct obj *obj)
|
|||||||
rx = u.ux + u.dx;
|
rx = u.ux + u.dx;
|
||||||
ry = u.uy + u.dy;
|
ry = u.uy + u.dy;
|
||||||
if (!isok(rx, ry)) {
|
if (!isok(rx, ry)) {
|
||||||
|
Soundeffect(se_typing_noise, 100);
|
||||||
You_hear("a faint typing noise.");
|
You_hear("a faint typing noise.");
|
||||||
return ECMD_OK;
|
return ECMD_OK;
|
||||||
}
|
}
|
||||||
@@ -431,6 +436,7 @@ use_stethoscope(struct obj *obj)
|
|||||||
lev = &levl[rx][ry];
|
lev = &levl[rx][ry];
|
||||||
switch (lev->typ) {
|
switch (lev->typ) {
|
||||||
case SDOOR:
|
case SDOOR:
|
||||||
|
Soundeffect(se_hollow_sound, 100);
|
||||||
You_hear(hollow_str, "door");
|
You_hear(hollow_str, "door");
|
||||||
cvt_sdoor_to_door(lev); /* ->typ = DOOR */
|
cvt_sdoor_to_door(lev); /* ->typ = DOOR */
|
||||||
feel_newsym(rx, ry);
|
feel_newsym(rx, ry);
|
||||||
@@ -3757,6 +3763,7 @@ do_break_wand(struct obj *obj)
|
|||||||
goto discard_broken_wand;
|
goto discard_broken_wand;
|
||||||
case WAN_STRIKING:
|
case WAN_STRIKING:
|
||||||
/* we want this before the explosion instead of at the very end */
|
/* we want this before the explosion instead of at the very end */
|
||||||
|
Soundeffect(se_wall_of_force, 65);
|
||||||
pline("A wall of force smashes down around you!");
|
pline("A wall of force smashes down around you!");
|
||||||
dmg = d(1 + obj->spe, 6); /* normally 2d12 */
|
dmg = d(1 + obj->spe, 6); /* normally 2d12 */
|
||||||
/*FALLTHRU*/
|
/*FALLTHRU*/
|
||||||
@@ -4202,14 +4209,17 @@ flip_through_book(struct obj *obj)
|
|||||||
You("flip through the pages of %s.", thesimpleoname(obj));
|
You("flip through the pages of %s.", thesimpleoname(obj));
|
||||||
|
|
||||||
if (obj->otyp == SPE_BOOK_OF_THE_DEAD) {
|
if (obj->otyp == SPE_BOOK_OF_THE_DEAD) {
|
||||||
if (!Deaf)
|
if (!Deaf) {
|
||||||
|
if (!Hallucination)
|
||||||
|
Soundeffect(se_rustling_paper, 50);
|
||||||
You_hear("the pages make an unpleasant %s sound.",
|
You_hear("the pages make an unpleasant %s sound.",
|
||||||
Hallucination ? "chuckling"
|
Hallucination ? "chuckling"
|
||||||
: "rustling");
|
: "rustling");
|
||||||
else if (!Blind)
|
} else if (!Blind) {
|
||||||
You_see("the pages glow faintly %s.", hcolor(NH_RED));
|
You_see("the pages glow faintly %s.", hcolor(NH_RED));
|
||||||
else
|
} else {
|
||||||
You_feel("the pages tremble.");
|
You_feel("the pages tremble.");
|
||||||
|
}
|
||||||
} else if (Blind) {
|
} else if (Blind) {
|
||||||
pline("The pages feel %s.",
|
pline("The pages feel %s.",
|
||||||
Hallucination ? "freshly picked"
|
Hallucination ? "freshly picked"
|
||||||
|
|||||||
@@ -902,6 +902,7 @@ drop_ball(coordxy x, coordxy y)
|
|||||||
break;
|
break;
|
||||||
case TT_WEB:
|
case TT_WEB:
|
||||||
pline(pullmsg, "web");
|
pline(pullmsg, "web");
|
||||||
|
Soundeffect(se_destroy_web, 30);
|
||||||
pline_The("web is destroyed!");
|
pline_The("web is destroyed!");
|
||||||
deltrap(t_at(u.ux, u.uy));
|
deltrap(t_at(u.ux, u.uy));
|
||||||
break;
|
break;
|
||||||
@@ -1015,6 +1016,7 @@ drag_down(void)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (rn2(2)) {
|
if (rn2(2)) {
|
||||||
|
Soundeffect(se_iron_ball_hits_you, 25);
|
||||||
pline_The("iron ball smacks into you!");
|
pline_The("iron ball smacks into you!");
|
||||||
losehp(Maybe_Half_Phys(rnd(20)), "iron ball collision",
|
losehp(Maybe_Half_Phys(rnd(20)), "iron ball collision",
|
||||||
KILLED_BY_AN);
|
KILLED_BY_AN);
|
||||||
|
|||||||
+31
-14
@@ -585,11 +585,13 @@ do_entity(struct entity *etmp)
|
|||||||
relocates = TRUE;
|
relocates = TRUE;
|
||||||
debugpline0("Jump succeeds!");
|
debugpline0("Jump succeeds!");
|
||||||
} else {
|
} else {
|
||||||
if (e_inview)
|
if (e_inview) {
|
||||||
pline("%s crushed by the falling portcullis!",
|
pline("%s crushed by the falling portcullis!",
|
||||||
E_phrase(etmp, "are"));
|
E_phrase(etmp, "are"));
|
||||||
else if (!Deaf)
|
} else if (!Deaf) {
|
||||||
|
Soundeffect(se_crushing_sound, 100);
|
||||||
You_hear("a crushing sound.");
|
You_hear("a crushing sound.");
|
||||||
|
}
|
||||||
e_died(etmp,
|
e_died(etmp,
|
||||||
XKILL_NOCORPSE | (e_inview ? XKILL_GIVEMSG
|
XKILL_NOCORPSE | (e_inview ? XKILL_GIVEMSG
|
||||||
: XKILL_NOMSG),
|
: XKILL_NOMSG),
|
||||||
@@ -693,8 +695,10 @@ do_entity(struct entity *etmp)
|
|||||||
} else {
|
} else {
|
||||||
debugpline1("%s on drawbridge square", E_phrase(etmp, "are"));
|
debugpline1("%s on drawbridge square", E_phrase(etmp, "are"));
|
||||||
if (is_pool(etmp->ex, etmp->ey) && !e_inview)
|
if (is_pool(etmp->ex, etmp->ey) && !e_inview)
|
||||||
if (!Deaf)
|
if (!Deaf) {
|
||||||
|
Soundeffect(se_splash, 100);
|
||||||
You_hear("a splash.");
|
You_hear("a splash.");
|
||||||
|
}
|
||||||
if (e_survives_at(etmp, etmp->ex, etmp->ey)) {
|
if (e_survives_at(etmp, etmp->ex, etmp->ey)) {
|
||||||
if (e_inview && !is_flyer(etmp->edata)
|
if (e_inview && !is_flyer(etmp->edata)
|
||||||
&& !is_floater(etmp->edata))
|
&& !is_floater(etmp->edata))
|
||||||
@@ -745,14 +749,16 @@ close_drawbridge(coordxy x, coordxy y)
|
|||||||
x2 = x;
|
x2 = x;
|
||||||
y2 = y;
|
y2 = y;
|
||||||
get_wall_for_db(&x2, &y2);
|
get_wall_for_db(&x2, &y2);
|
||||||
if (cansee(x, y) || cansee(x2, y2))
|
if (cansee(x, y) || cansee(x2, y2)) {
|
||||||
You_see("a drawbridge %s up!",
|
You_see("a drawbridge %s up!",
|
||||||
(((u.ux == x || u.uy == y) && !Underwater)
|
(((u.ux == x || u.uy == y) && !Underwater)
|
||||||
|| distu(x2, y2) < distu(x, y))
|
|| distu(x2, y2) < distu(x, y))
|
||||||
? "coming"
|
? "coming"
|
||||||
: "going");
|
: "going");
|
||||||
else /* "5 gears turn" for castle drawbridge tune */
|
} else { /* "5 gears turn" for castle drawbridge tune */
|
||||||
|
Soundeffect(se_chains_rattling_gears_turning, 75);
|
||||||
You_hear("chains rattling and gears turning.");
|
You_hear("chains rattling and gears turning.");
|
||||||
|
}
|
||||||
lev1->typ = DRAWBRIDGE_UP;
|
lev1->typ = DRAWBRIDGE_UP;
|
||||||
lev2 = &levl[x2][y2];
|
lev2 = &levl[x2][y2];
|
||||||
lev2->typ = DBWALL;
|
lev2->typ = DBWALL;
|
||||||
@@ -772,8 +778,10 @@ close_drawbridge(coordxy x, coordxy y)
|
|||||||
do_entity(&(go.occupants[0])); /* Do set_entity after first */
|
do_entity(&(go.occupants[0])); /* Do set_entity after first */
|
||||||
set_entity(x2, y2, &(go.occupants[1])); /* do_entity for worm tail */
|
set_entity(x2, y2, &(go.occupants[1])); /* do_entity for worm tail */
|
||||||
do_entity(&(go.occupants[1]));
|
do_entity(&(go.occupants[1]));
|
||||||
if (OBJ_AT(x, y) && !Deaf)
|
if (OBJ_AT(x, y) && !Deaf) {
|
||||||
|
Soundeffect(se_smashing_and_crushing, 75);
|
||||||
You_hear("smashing and crushing.");
|
You_hear("smashing and crushing.");
|
||||||
|
}
|
||||||
(void) revive_nasty(x, y, (char *) 0);
|
(void) revive_nasty(x, y, (char *) 0);
|
||||||
(void) revive_nasty(x2, y2, (char *) 0);
|
(void) revive_nasty(x2, y2, (char *) 0);
|
||||||
delallobj(x, y);
|
delallobj(x, y);
|
||||||
@@ -806,11 +814,13 @@ open_drawbridge(coordxy x, coordxy y)
|
|||||||
x2 = x;
|
x2 = x;
|
||||||
y2 = y;
|
y2 = y;
|
||||||
get_wall_for_db(&x2, &y2);
|
get_wall_for_db(&x2, &y2);
|
||||||
if (cansee(x, y) || cansee(x2, y2))
|
if (cansee(x, y) || cansee(x2, y2)) {
|
||||||
You_see("a drawbridge %s down!",
|
You_see("a drawbridge %s down!",
|
||||||
(distu(x2, y2) < distu(x, y)) ? "going" : "coming");
|
(distu(x2, y2) < distu(x, y)) ? "going" : "coming");
|
||||||
else /* "5 gears turn" for castle drawbridge tune */
|
} else { /* "5 gears turn" for castle drawbridge tune */
|
||||||
|
Soundeffect(se_gears_turning_chains_rattling, 100);
|
||||||
You_hear("gears turning and chains rattling.");
|
You_hear("gears turning and chains rattling.");
|
||||||
|
}
|
||||||
lev1->typ = DRAWBRIDGE_DOWN;
|
lev1->typ = DRAWBRIDGE_DOWN;
|
||||||
lev2 = &levl[x2][y2];
|
lev2 = &levl[x2][y2];
|
||||||
lev2->typ = DOOR;
|
lev2->typ = DOOR;
|
||||||
@@ -863,18 +873,22 @@ destroy_drawbridge(coordxy x, coordxy y)
|
|||||||
boolean lava = (lev1->drawbridgemask & DB_UNDER) == DB_LAVA;
|
boolean lava = (lev1->drawbridgemask & DB_UNDER) == DB_LAVA;
|
||||||
|
|
||||||
if (lev1->typ == DRAWBRIDGE_UP) {
|
if (lev1->typ == DRAWBRIDGE_UP) {
|
||||||
if (cansee(x2, y2))
|
if (cansee(x2, y2)) {
|
||||||
pline_The("portcullis of the drawbridge falls into the %s!",
|
pline_The("portcullis of the drawbridge falls into the %s!",
|
||||||
lava ? hliquid("lava") : "moat");
|
lava ? hliquid("lava") : "moat");
|
||||||
else if (!Deaf)
|
} else if (!Deaf) {
|
||||||
|
Soundeffect(se_loud_splash, 100);
|
||||||
You_hear("a loud *SPLASH*!");
|
You_hear("a loud *SPLASH*!");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (cansee(x, y))
|
if (cansee(x, y)) {
|
||||||
pline_The("drawbridge collapses into the %s!",
|
pline_The("drawbridge collapses into the %s!",
|
||||||
lava ? hliquid("lava") : "moat");
|
lava ? hliquid("lava") : "moat");
|
||||||
else if (!Deaf)
|
} else if (!Deaf) {
|
||||||
|
Soundeffect(se_loud_splash, 100);
|
||||||
You_hear("a loud *SPLASH*!");
|
You_hear("a loud *SPLASH*!");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
lev1->typ = lava ? LAVAPOOL : MOAT;
|
lev1->typ = lava ? LAVAPOOL : MOAT;
|
||||||
lev1->drawbridgemask = 0;
|
lev1->drawbridgemask = 0;
|
||||||
if ((otmp2 = sobj_at(BOULDER, x, y)) != 0) {
|
if ((otmp2 = sobj_at(BOULDER, x, y)) != 0) {
|
||||||
@@ -882,10 +896,12 @@ destroy_drawbridge(coordxy x, coordxy y)
|
|||||||
(void) flooreffects(otmp2, x, y, "fall");
|
(void) flooreffects(otmp2, x, y, "fall");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (cansee(x, y))
|
if (cansee(x, y)) {
|
||||||
pline_The("drawbridge disintegrates!");
|
pline_The("drawbridge disintegrates!");
|
||||||
else
|
} else {
|
||||||
|
Soundeffect(se_lound_crash, 100);
|
||||||
You_hear("a loud *CRASH*!");
|
You_hear("a loud *CRASH*!");
|
||||||
|
}
|
||||||
lev1->typ = ((lev1->drawbridgemask & DB_ICE) ? ICE : ROOM);
|
lev1->typ = ((lev1->drawbridgemask & DB_ICE) ? ICE : ROOM);
|
||||||
lev1->icedpool = ((lev1->drawbridgemask & DB_ICE) ? ICED_MOAT : 0);
|
lev1->icedpool = ((lev1->drawbridgemask & DB_ICE) ? ICED_MOAT : 0);
|
||||||
}
|
}
|
||||||
@@ -949,6 +965,7 @@ destroy_drawbridge(coordxy x, coordxy y)
|
|||||||
E_phrase(etmp1, "are"));
|
E_phrase(etmp1, "are"));
|
||||||
} else {
|
} else {
|
||||||
if (!Deaf && !is_u(etmp1) && !is_pool(x, y)) {
|
if (!Deaf && !is_u(etmp1) && !is_pool(x, y)) {
|
||||||
|
Soundeffect(se_crushing_sound, 75);
|
||||||
You_hear("a crushing sound.");
|
You_hear("a crushing sound.");
|
||||||
} else {
|
} else {
|
||||||
debugpline1("%s from shrapnel", E_phrase(etmp1, "die"));
|
debugpline1("%s from shrapnel", E_phrase(etmp1, "die"));
|
||||||
|
|||||||
@@ -92,11 +92,13 @@ mkcavearea(boolean rockit)
|
|||||||
register coordxy i;
|
register coordxy i;
|
||||||
register boolean waslit = rm_waslit();
|
register boolean waslit = rm_waslit();
|
||||||
|
|
||||||
if (rockit)
|
if (rockit) {
|
||||||
|
Soundeffect(se_crashing_rock, 100);
|
||||||
pline("Crash! The ceiling collapses around you!");
|
pline("Crash! The ceiling collapses around you!");
|
||||||
else
|
} else {
|
||||||
pline("A mysterious force %s cave around you!",
|
pline("A mysterious force %s cave around you!",
|
||||||
(levl[u.ux][u.uy].typ == CORR) ? "creates a" : "extends the");
|
(levl[u.ux][u.uy].typ == CORR) ? "creates a" : "extends the");
|
||||||
|
}
|
||||||
display_nhwindow(WIN_MESSAGE, TRUE);
|
display_nhwindow(WIN_MESSAGE, TRUE);
|
||||||
|
|
||||||
for (dist = 1; dist <= 2; dist++) {
|
for (dist = 1; dist <= 2; dist++) {
|
||||||
@@ -831,6 +833,7 @@ dighole(boolean pit_only, boolean by_magic, coord *cc)
|
|||||||
* digging makes a hole, but the boulder immediately
|
* digging makes a hole, but the boulder immediately
|
||||||
* fills it. Final outcome: no hole, no boulder.
|
* fills it. Final outcome: no hole, no boulder.
|
||||||
*/
|
*/
|
||||||
|
Soundeffect(se_kadoom_boulder_falls_in, 60);
|
||||||
pline("KADOOM! The boulder falls in!");
|
pline("KADOOM! The boulder falls in!");
|
||||||
wake_nearby();
|
wake_nearby();
|
||||||
(void) delfloortrap(ttmp);
|
(void) delfloortrap(ttmp);
|
||||||
@@ -1066,6 +1069,7 @@ use_pick_axe2(struct obj *obj)
|
|||||||
rx = u.ux + u.dx;
|
rx = u.ux + u.dx;
|
||||||
ry = u.uy + u.dy;
|
ry = u.uy + u.dy;
|
||||||
if (!isok(rx, ry)) {
|
if (!isok(rx, ry)) {
|
||||||
|
Soundeffect(se_clash, 40);
|
||||||
pline("Clash!");
|
pline("Clash!");
|
||||||
return ECMD_TIME;
|
return ECMD_TIME;
|
||||||
}
|
}
|
||||||
@@ -1314,8 +1318,10 @@ mdig_tunnel(struct monst *mtmp)
|
|||||||
|
|
||||||
if (IS_WALL(here->typ)) {
|
if (IS_WALL(here->typ)) {
|
||||||
/* KMH -- Okay on arboreal levels (room walls are still stone) */
|
/* KMH -- Okay on arboreal levels (room walls are still stone) */
|
||||||
if (Verbose(0, mdig_tunnel2) && !rn2(5))
|
if (Verbose(0, mdig_tunnel2) && !rn2(5)) {
|
||||||
|
Soundeffect(se_crashing_rock, 75);
|
||||||
You_hear("crashing rock.");
|
You_hear("crashing rock.");
|
||||||
|
}
|
||||||
if (*in_rooms(mtmp->mx, mtmp->my, SHOPBASE))
|
if (*in_rooms(mtmp->mx, mtmp->my, SHOPBASE))
|
||||||
add_damage(mtmp->mx, mtmp->my, 0L);
|
add_damage(mtmp->mx, mtmp->my, 0L);
|
||||||
if (gl.level.flags.is_maze_lev) {
|
if (gl.level.flags.is_maze_lev) {
|
||||||
|
|||||||
@@ -110,6 +110,10 @@ boulder_hits_pool(
|
|||||||
the(xname(otmp)), fills_up ? "fills" : "falls into",
|
the(xname(otmp)), fills_up ? "fills" : "falls into",
|
||||||
what);
|
what);
|
||||||
} else if (!Deaf) {
|
} else if (!Deaf) {
|
||||||
|
if (lava)
|
||||||
|
Soundeffect(se_sizzling, 100);
|
||||||
|
else
|
||||||
|
Soundeffect(se_splash, 100);
|
||||||
You_hear("a%s splash.", lava ? " sizzling" : "");
|
You_hear("a%s splash.", lava ? " sizzling" : "");
|
||||||
}
|
}
|
||||||
wake_nearto(rx, ry, 40);
|
wake_nearto(rx, ry, 40);
|
||||||
@@ -224,6 +228,7 @@ flooreffects(struct obj *obj, coordxy x, coordxy y, const char *verb)
|
|||||||
}
|
}
|
||||||
if (*verb) {
|
if (*verb) {
|
||||||
if (Blind && u_at(x, y)) {
|
if (Blind && u_at(x, y)) {
|
||||||
|
Soundeffect(se_crashing_boulder, 100);
|
||||||
You_hear("a CRASH! beneath you.");
|
You_hear("a CRASH! beneath you.");
|
||||||
} else if (!Blind && cansee(x, y)) {
|
} else if (!Blind && cansee(x, y)) {
|
||||||
pline_The("boulder %s%s.",
|
pline_The("boulder %s%s.",
|
||||||
@@ -234,6 +239,7 @@ flooreffects(struct obj *obj, coordxy x, coordxy y, const char *verb)
|
|||||||
: (ttyp == HOLE) ? "plugs a hole"
|
: (ttyp == HOLE) ? "plugs a hole"
|
||||||
: "fills a pit");
|
: "fills a pit");
|
||||||
} else {
|
} else {
|
||||||
|
Soundeffect(se_boulder_drop, 100);
|
||||||
You_hear("a boulder %s.", verb);
|
You_hear("a boulder %s.", verb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -269,11 +275,13 @@ flooreffects(struct obj *obj, coordxy x, coordxy y, const char *verb)
|
|||||||
} else if (u_at(x, y) && (t = t_at(x, y)) != 0
|
} else if (u_at(x, y) && (t = t_at(x, y)) != 0
|
||||||
&& (uteetering_at_seen_pit(t) || uescaped_shaft(t))) {
|
&& (uteetering_at_seen_pit(t) || uescaped_shaft(t))) {
|
||||||
if (is_pit(t->ttyp)) {
|
if (is_pit(t->ttyp)) {
|
||||||
if (Blind && !Deaf)
|
if (Blind && !Deaf) {
|
||||||
|
Soundeffect(se_item_tumble_downwards, 50);
|
||||||
You_hear("%s tumble downwards.", the(xname(obj)));
|
You_hear("%s tumble downwards.", the(xname(obj)));
|
||||||
else
|
} else {
|
||||||
pline("%s into %s pit.", Tobjnam(obj, "tumble"),
|
pline("%s into %s pit.", Tobjnam(obj, "tumble"),
|
||||||
the_your[t->madeby_u]);
|
the_your[t->madeby_u]);
|
||||||
|
}
|
||||||
} else if (ship_object(obj, x, y, FALSE)) {
|
} else if (ship_object(obj, x, y, FALSE)) {
|
||||||
/* ship_object will print an appropriate "the item falls
|
/* ship_object will print an appropriate "the item falls
|
||||||
* through the hole" message, so no need to do it here. */
|
* through the hole" message, so no need to do it here. */
|
||||||
@@ -458,6 +466,7 @@ dosinkring(struct obj *obj)
|
|||||||
pline("Static electricity surrounds the sink.");
|
pline("Static electricity surrounds the sink.");
|
||||||
break;
|
break;
|
||||||
case RIN_CONFLICT:
|
case RIN_CONFLICT:
|
||||||
|
Soundeffect(se_drain_noises, 50);
|
||||||
You_hear("loud noises coming from the drain.");
|
You_hear("loud noises coming from the drain.");
|
||||||
break;
|
break;
|
||||||
case RIN_SUSTAIN_ABILITY: /* KMH */
|
case RIN_SUSTAIN_ABILITY: /* KMH */
|
||||||
@@ -569,11 +578,12 @@ dosinkring(struct obj *obj)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ideed)
|
if (ideed) {
|
||||||
trycall(obj);
|
trycall(obj);
|
||||||
else if (!nosink)
|
} else if (!nosink) {
|
||||||
|
Soundeffect(se_ring_in_drain, 50);
|
||||||
You_hear("the ring bouncing down the drainpipe.");
|
You_hear("the ring bouncing down the drainpipe.");
|
||||||
|
}
|
||||||
if (!rn2(20) && !nosink) {
|
if (!rn2(20) && !nosink) {
|
||||||
pline_The("sink backs up, leaving %s.", doname(obj));
|
pline_The("sink backs up, leaving %s.", doname(obj));
|
||||||
obj->in_use = FALSE;
|
obj->in_use = FALSE;
|
||||||
@@ -1741,6 +1751,7 @@ goto_level(
|
|||||||
#ifdef MICRO
|
#ifdef MICRO
|
||||||
display_nhwindow(WIN_MESSAGE, FALSE);
|
display_nhwindow(WIN_MESSAGE, FALSE);
|
||||||
#endif
|
#endif
|
||||||
|
Soundeffect(se_groans_and_moans, 25);
|
||||||
You_hear("groans and moans everywhere.");
|
You_hear("groans and moans everywhere.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1769,6 +1780,7 @@ goto_level(
|
|||||||
/* alarm stops working once Croesus has died */
|
/* alarm stops working once Croesus has died */
|
||||||
if (new || !gm.mvitals[PM_CROESUS].died) {
|
if (new || !gm.mvitals[PM_CROESUS].died) {
|
||||||
You("have penetrated a high security area!");
|
You("have penetrated a high security area!");
|
||||||
|
Soundeffect(se_alarm, 100);
|
||||||
pline("An alarm sounds!");
|
pline("An alarm sounds!");
|
||||||
for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
|
for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
|
||||||
if (DEADMONSTER(mtmp))
|
if (DEADMONSTER(mtmp))
|
||||||
@@ -2066,8 +2078,10 @@ revive_corpse(struct obj *corpse)
|
|||||||
pline("%s claws itself out of the ground!",
|
pline("%s claws itself out of the ground!",
|
||||||
canspotmon(mtmp) ? Amonnam(mtmp) : Something);
|
canspotmon(mtmp) ? Amonnam(mtmp) : Something);
|
||||||
newsym(mtmp->mx, mtmp->my);
|
newsym(mtmp->mx, mtmp->my);
|
||||||
} else if (mdistu(mtmp) < 5*5)
|
} else if (mdistu(mtmp) < 5*5) {
|
||||||
|
Soundeffect(se_scratching, 50);
|
||||||
You_hear("scratching noises.");
|
You_hear("scratching noises.");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/*FALLTHRU*/
|
/*FALLTHRU*/
|
||||||
|
|||||||
+21
-2
@@ -434,6 +434,11 @@ container_impact_dmg(
|
|||||||
* but it's always exactly 1 that breaks */
|
* but it's always exactly 1 that breaks */
|
||||||
if (otmp->otyp == EGG && otmp->spe && otmp->corpsenm >= LOW_PM)
|
if (otmp->otyp == EGG && otmp->spe && otmp->corpsenm >= LOW_PM)
|
||||||
change_luck(-1);
|
change_luck(-1);
|
||||||
|
if (otmp->otyp == EGG) {
|
||||||
|
Soundeffect(se_egg_cracking, 25);
|
||||||
|
} else {
|
||||||
|
Soundeffect(se_glass_shattering, 25);
|
||||||
|
}
|
||||||
You_hear("a muffled %s.", result);
|
You_hear("a muffled %s.", result);
|
||||||
if (costly) {
|
if (costly) {
|
||||||
if (frominv && !otmp->unpaid)
|
if (frominv && !otmp->unpaid)
|
||||||
@@ -1089,6 +1094,7 @@ dokick(void)
|
|||||||
if (gm.maploc->typ == SDOOR) {
|
if (gm.maploc->typ == SDOOR) {
|
||||||
if (!Levitation && rn2(30) < avrg_attrib) {
|
if (!Levitation && rn2(30) < avrg_attrib) {
|
||||||
cvt_sdoor_to_door(gm.maploc); /* ->typ = DOOR */
|
cvt_sdoor_to_door(gm.maploc); /* ->typ = DOOR */
|
||||||
|
Soundeffect(se_crash_door, 40);
|
||||||
pline("Crash! %s a secret door!",
|
pline("Crash! %s a secret door!",
|
||||||
/* don't "kick open" when it's locked
|
/* don't "kick open" when it's locked
|
||||||
unless it also happens to be trapped */
|
unless it also happens to be trapped */
|
||||||
@@ -1114,6 +1120,7 @@ dokick(void)
|
|||||||
}
|
}
|
||||||
if (gm.maploc->typ == SCORR) {
|
if (gm.maploc->typ == SCORR) {
|
||||||
if (!Levitation && rn2(30) < avrg_attrib) {
|
if (!Levitation && rn2(30) < avrg_attrib) {
|
||||||
|
Soundeffect(se_crash_door, 40);
|
||||||
pline("Crash! You kick open a secret passage!");
|
pline("Crash! You kick open a secret passage!");
|
||||||
exercise(A_DEX, TRUE);
|
exercise(A_DEX, TRUE);
|
||||||
gm.maploc->typ = CORR;
|
gm.maploc->typ = CORR;
|
||||||
@@ -1135,6 +1142,7 @@ dokick(void)
|
|||||||
gm.maploc->looted = 0; /* don't leave loose ends.. */
|
gm.maploc->looted = 0; /* don't leave loose ends.. */
|
||||||
gm.maploc->typ = ROOM;
|
gm.maploc->typ = ROOM;
|
||||||
(void) mkgold((long) rnd(200), x, y);
|
(void) mkgold((long) rnd(200), x, y);
|
||||||
|
Soundeffect(se_crash_throne_destroyed, 60);
|
||||||
if (Blind)
|
if (Blind)
|
||||||
pline("CRASH! You destroy it.");
|
pline("CRASH! You destroy it.");
|
||||||
else {
|
else {
|
||||||
@@ -1303,6 +1311,7 @@ dokick(void)
|
|||||||
return ECMD_TIME;
|
return ECMD_TIME;
|
||||||
}
|
}
|
||||||
if (rn2(5)) {
|
if (rn2(5)) {
|
||||||
|
Soundeffect(se_klunk_pipe, 60);
|
||||||
if (!Deaf)
|
if (!Deaf)
|
||||||
pline("Klunk! The pipes vibrate noisily.");
|
pline("Klunk! The pipes vibrate noisily.");
|
||||||
else
|
else
|
||||||
@@ -1311,11 +1320,14 @@ dokick(void)
|
|||||||
return ECMD_TIME;
|
return ECMD_TIME;
|
||||||
} else if (!(gm.maploc->looted & S_LPUDDING) && !rn2(3)
|
} else if (!(gm.maploc->looted & S_LPUDDING) && !rn2(3)
|
||||||
&& !(gm.mvitals[PM_BLACK_PUDDING].mvflags & G_GONE)) {
|
&& !(gm.mvitals[PM_BLACK_PUDDING].mvflags & G_GONE)) {
|
||||||
if (Blind)
|
if (Blind) {
|
||||||
|
if (!Deaf)
|
||||||
|
Soundeffect(se_gushing_sound, 100);
|
||||||
You_hear("a gushing sound.");
|
You_hear("a gushing sound.");
|
||||||
else
|
} else {
|
||||||
pline("A %s ooze gushes up from the drain!",
|
pline("A %s ooze gushes up from the drain!",
|
||||||
hcolor(NH_BLACK));
|
hcolor(NH_BLACK));
|
||||||
|
}
|
||||||
(void) makemon(&mons[PM_BLACK_PUDDING], x, y, MM_NOMSG);
|
(void) makemon(&mons[PM_BLACK_PUDDING], x, y, MM_NOMSG);
|
||||||
exercise(A_DEX, TRUE);
|
exercise(A_DEX, TRUE);
|
||||||
newsym(x, y);
|
newsym(x, y);
|
||||||
@@ -1394,10 +1406,12 @@ dokick(void)
|
|||||||
gm.maploc->doormask = D_NODOOR;
|
gm.maploc->doormask = D_NODOOR;
|
||||||
b_trapped("door", FOOT);
|
b_trapped("door", FOOT);
|
||||||
} else if (ACURR(A_STR) > 18 && !rn2(5) && !shopdoor) {
|
} else if (ACURR(A_STR) > 18 && !rn2(5) && !shopdoor) {
|
||||||
|
Soundeffect(se_kick_door_it_shatters, 50);
|
||||||
pline("As you kick the door, it shatters to pieces!");
|
pline("As you kick the door, it shatters to pieces!");
|
||||||
exercise(A_STR, TRUE);
|
exercise(A_STR, TRUE);
|
||||||
gm.maploc->doormask = D_NODOOR;
|
gm.maploc->doormask = D_NODOOR;
|
||||||
} else {
|
} else {
|
||||||
|
Soundeffect(se_kick_door_it_crashes_open, 50);
|
||||||
pline("As you kick the door, it crashes open!");
|
pline("As you kick the door, it crashes open!");
|
||||||
exercise(A_STR, TRUE);
|
exercise(A_STR, TRUE);
|
||||||
gm.maploc->doormask = D_BROKEN;
|
gm.maploc->doormask = D_BROKEN;
|
||||||
@@ -1683,6 +1697,11 @@ ship_object(struct obj *otmp, coordxy x, coordxy y, boolean shop_floor_obj)
|
|||||||
change_luck((schar) -min(otmp->quan, 5L));
|
change_luck((schar) -min(otmp->quan, 5L));
|
||||||
result = "splat";
|
result = "splat";
|
||||||
}
|
}
|
||||||
|
if (otmp->otyp == EGG) {
|
||||||
|
Soundeffect(se_egg_splatting, 25);
|
||||||
|
} else {
|
||||||
|
Soundeffect(se_glass_crashing, 25);
|
||||||
|
}
|
||||||
You_hear("a muffled %s.", result);
|
You_hear("a muffled %s.", result);
|
||||||
obj_extract_self(otmp);
|
obj_extract_self(otmp);
|
||||||
obfree(otmp, (struct obj *) 0);
|
obfree(otmp, (struct obj *) 0);
|
||||||
|
|||||||
@@ -2447,12 +2447,14 @@ fpostfx(struct obj *otmp)
|
|||||||
/* Snow White; 'poisoned' applies to [a subset of] weapons,
|
/* Snow White; 'poisoned' applies to [a subset of] weapons,
|
||||||
not food, so we substitute cursed; fortunately our hero
|
not food, so we substitute cursed; fortunately our hero
|
||||||
won't have to wait for a prince to be rescued/revived */
|
won't have to wait for a prince to be rescued/revived */
|
||||||
if (Race_if(PM_DWARF) && Hallucination)
|
if (Race_if(PM_DWARF) && Hallucination) {
|
||||||
verbalize("Heigh-ho, ho-hum, I think I'll skip work today.");
|
verbalize("Heigh-ho, ho-hum, I think I'll skip work today.");
|
||||||
else if (Deaf || !flags.acoustics)
|
} else if (Deaf || !flags.acoustics) {
|
||||||
You("fall asleep.");
|
You("fall asleep.");
|
||||||
else
|
} else {
|
||||||
|
Soundeffect(se_sinister_laughter, 100);
|
||||||
You_hear("sinister laughter as you fall asleep...");
|
You_hear("sinister laughter as you fall asleep...");
|
||||||
|
}
|
||||||
fall_asleep(-rn1(11, 20), TRUE);
|
fall_asleep(-rn1(11, 20), TRUE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
+11
-4
@@ -376,6 +376,7 @@ explode(
|
|||||||
generic = TRUE;
|
generic = TRUE;
|
||||||
}
|
}
|
||||||
if (!Deaf && olet != SCROLL_CLASS) {
|
if (!Deaf && olet != SCROLL_CLASS) {
|
||||||
|
Soundeffect(se_blast, 75);
|
||||||
You_hear("a blast.");
|
You_hear("a blast.");
|
||||||
didmsg = TRUE;
|
didmsg = TRUE;
|
||||||
}
|
}
|
||||||
@@ -731,6 +732,8 @@ scatter(coordxy sx, coordxy sy, /* location of objects to scatter */
|
|||||||
while ((otmp = (individual_object ? obj : gl.level.objects[sx][sy])) != 0) {
|
while ((otmp = (individual_object ? obj : gl.level.objects[sx][sy])) != 0) {
|
||||||
if (otmp == uball || otmp == uchain) {
|
if (otmp == uball || otmp == uchain) {
|
||||||
boolean waschain = (otmp == uchain);
|
boolean waschain = (otmp == uchain);
|
||||||
|
|
||||||
|
Soundeffect(se_chain_shatters, 25);
|
||||||
pline_The("chain shatters!");
|
pline_The("chain shatters!");
|
||||||
unpunish();
|
unpunish();
|
||||||
if (waschain)
|
if (waschain)
|
||||||
@@ -753,10 +756,12 @@ scatter(coordxy sx, coordxy sy, /* location of objects to scatter */
|
|||||||
&& (otmp->otyp == BOULDER || otmp->otyp == STATUE)
|
&& (otmp->otyp == BOULDER || otmp->otyp == STATUE)
|
||||||
&& rn2(10)) {
|
&& rn2(10)) {
|
||||||
if (otmp->otyp == BOULDER) {
|
if (otmp->otyp == BOULDER) {
|
||||||
if (cansee(sx, sy))
|
if (cansee(sx, sy)) {
|
||||||
pline("%s apart.", Tobjnam(otmp, "break"));
|
pline("%s apart.", Tobjnam(otmp, "break"));
|
||||||
else
|
} else {
|
||||||
|
Soundeffect(se_stone_breaking, 100);
|
||||||
You_hear("stone breaking.");
|
You_hear("stone breaking.");
|
||||||
|
}
|
||||||
fracture_rock(otmp);
|
fracture_rock(otmp);
|
||||||
place_object(otmp, sx, sy);
|
place_object(otmp, sx, sy);
|
||||||
if ((otmp = sobj_at(BOULDER, sx, sy)) != 0) {
|
if ((otmp = sobj_at(BOULDER, sx, sy)) != 0) {
|
||||||
@@ -769,10 +774,12 @@ scatter(coordxy sx, coordxy sy, /* location of objects to scatter */
|
|||||||
|
|
||||||
if ((trap = t_at(sx, sy)) && trap->ttyp == STATUE_TRAP)
|
if ((trap = t_at(sx, sy)) && trap->ttyp == STATUE_TRAP)
|
||||||
deltrap(trap);
|
deltrap(trap);
|
||||||
if (cansee(sx, sy))
|
if (cansee(sx, sy)) {
|
||||||
pline("%s.", Tobjnam(otmp, "crumble"));
|
pline("%s.", Tobjnam(otmp, "crumble"));
|
||||||
else
|
} else {
|
||||||
|
Soundeffect(se_stone_crumbling, 100);
|
||||||
You_hear("stone crumbling.");
|
You_hear("stone crumbling.");
|
||||||
|
}
|
||||||
(void) break_statue(otmp);
|
(void) break_statue(otmp);
|
||||||
place_object(otmp, sx, sy); /* put fragments on floor */
|
place_object(otmp, sx, sy); /* put fragments on floor */
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-6
@@ -41,18 +41,22 @@ dowatersnakes(void)
|
|||||||
struct monst *mtmp;
|
struct monst *mtmp;
|
||||||
|
|
||||||
if (!(gm.mvitals[PM_WATER_MOCCASIN].mvflags & G_GONE)) {
|
if (!(gm.mvitals[PM_WATER_MOCCASIN].mvflags & G_GONE)) {
|
||||||
if (!Blind)
|
if (!Blind) {
|
||||||
pline("An endless stream of %s pours forth!",
|
pline("An endless stream of %s pours forth!",
|
||||||
Hallucination ? makeplural(rndmonnam(NULL)) : "snakes");
|
Hallucination ? makeplural(rndmonnam(NULL)) : "snakes");
|
||||||
else
|
} else {
|
||||||
|
Soundeffect(se_snakes_hissing, 75);
|
||||||
You_hear("%s hissing!", something);
|
You_hear("%s hissing!", something);
|
||||||
|
}
|
||||||
while (num-- > 0)
|
while (num-- > 0)
|
||||||
if ((mtmp = makemon(&mons[PM_WATER_MOCCASIN], u.ux, u.uy,
|
if ((mtmp = makemon(&mons[PM_WATER_MOCCASIN], u.ux, u.uy,
|
||||||
MM_NOMSG)) != 0
|
MM_NOMSG)) != 0
|
||||||
&& t_at(mtmp->mx, mtmp->my))
|
&& t_at(mtmp->mx, mtmp->my))
|
||||||
(void) mintrap(mtmp, NO_TRAP_FLAGS);
|
(void) mintrap(mtmp, NO_TRAP_FLAGS);
|
||||||
} else
|
} else {
|
||||||
|
Soundeffect(se_furious_bubbling, 20);
|
||||||
pline_The("fountain bubbles furiously for a moment, then calms.");
|
pline_The("fountain bubbles furiously for a moment, then calms.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Water demon */
|
/* Water demon */
|
||||||
@@ -79,8 +83,10 @@ dowaterdemon(void)
|
|||||||
} else if (t_at(mtmp->mx, mtmp->my))
|
} else if (t_at(mtmp->mx, mtmp->my))
|
||||||
(void) mintrap(mtmp, NO_TRAP_FLAGS);
|
(void) mintrap(mtmp, NO_TRAP_FLAGS);
|
||||||
}
|
}
|
||||||
} else
|
} else {
|
||||||
|
Soundeffect(se_furious_bubbling, 20);
|
||||||
pline_The("fountain bubbles furiously for a moment, then calms.");
|
pline_The("fountain bubbles furiously for a moment, then calms.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Water Nymph */
|
/* Water Nymph */
|
||||||
@@ -99,10 +105,14 @@ dowaternymph(void)
|
|||||||
mtmp->msleeping = 0;
|
mtmp->msleeping = 0;
|
||||||
if (t_at(mtmp->mx, mtmp->my))
|
if (t_at(mtmp->mx, mtmp->my))
|
||||||
(void) mintrap(mtmp, NO_TRAP_FLAGS);
|
(void) mintrap(mtmp, NO_TRAP_FLAGS);
|
||||||
} else if (!Blind)
|
} else if (!Blind) {
|
||||||
|
Soundeffect(se_bubble_rising, 50);
|
||||||
|
Soundeffect(se_loud_pop, 50);
|
||||||
pline("A large bubble rises to the surface and pops.");
|
pline("A large bubble rises to the surface and pops.");
|
||||||
else
|
} else {
|
||||||
|
Soundeffect(se_loud_pop, 50);
|
||||||
You_hear("a loud pop.");
|
You_hear("a loud pop.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Gushing forth along LOS from (u.ux, u.uy) */
|
/* Gushing forth along LOS from (u.ux, u.uy) */
|
||||||
@@ -633,9 +643,11 @@ drinksink(void)
|
|||||||
break;
|
break;
|
||||||
/* more odd messages --JJB */
|
/* more odd messages --JJB */
|
||||||
case 11:
|
case 11:
|
||||||
|
Soundeffect(se_clanking_pipe, 50);
|
||||||
You_hear("clanking from the pipes...");
|
You_hear("clanking from the pipes...");
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
|
Soundeffect(se_sewer_song, 100);
|
||||||
You_hear("snatches of song from among the sewers...");
|
You_hear("snatches of song from among the sewers...");
|
||||||
break;
|
break;
|
||||||
case 13:
|
case 13:
|
||||||
|
|||||||
@@ -271,6 +271,7 @@ moverock(void)
|
|||||||
pline("There's %s on the other side.", a_monnam(mtmp));
|
pline("There's %s on the other side.", a_monnam(mtmp));
|
||||||
deliver_part1 = TRUE;
|
deliver_part1 = TRUE;
|
||||||
} else {
|
} else {
|
||||||
|
Soundeffect(se_monster_behind_boulder, 50);
|
||||||
You_hear("a monster behind %s.", the(xname(otmp)));
|
You_hear("a monster behind %s.", the(xname(otmp)));
|
||||||
if (!Deaf)
|
if (!Deaf)
|
||||||
deliver_part1 = TRUE;
|
deliver_part1 = TRUE;
|
||||||
@@ -342,6 +343,7 @@ moverock(void)
|
|||||||
goto moverock_done;
|
goto moverock_done;
|
||||||
case HOLE:
|
case HOLE:
|
||||||
case TRAPDOOR:
|
case TRAPDOOR:
|
||||||
|
Soundeffect(se_kerplunk_boulder_gone, 40);
|
||||||
if (Blind)
|
if (Blind)
|
||||||
pline("Kerplunk! You no longer feel %s.",
|
pline("Kerplunk! You no longer feel %s.",
|
||||||
the(xname(otmp)));
|
the(xname(otmp)));
|
||||||
@@ -3677,6 +3679,7 @@ maybe_wail(void)
|
|||||||
who);
|
who);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Soundeffect(se_wailing_of_the_banshee, 75);
|
||||||
You_hear(u.uhp == 1 ? "the wailing of the Banshee..."
|
You_hear(u.uhp == 1 ? "the wailing of the Banshee..."
|
||||||
: "the howling of the CwnAnnwn...");
|
: "the howling of the CwnAnnwn...");
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-6
@@ -1040,6 +1040,7 @@ boxlock(struct obj *obj, struct obj *otmp) /* obj *is* a box */
|
|||||||
case WAN_LOCKING:
|
case WAN_LOCKING:
|
||||||
case SPE_WIZARD_LOCK:
|
case SPE_WIZARD_LOCK:
|
||||||
if (!obj->olocked) { /* lock it; fix if broken */
|
if (!obj->olocked) { /* lock it; fix if broken */
|
||||||
|
Soundeffect(se_klunk, 50);
|
||||||
pline("Klunk!");
|
pline("Klunk!");
|
||||||
obj->olocked = 1;
|
obj->olocked = 1;
|
||||||
obj->obroken = 0;
|
obj->obroken = 0;
|
||||||
@@ -1053,6 +1054,7 @@ boxlock(struct obj *obj, struct obj *otmp) /* obj *is* a box */
|
|||||||
case WAN_OPENING:
|
case WAN_OPENING:
|
||||||
case SPE_KNOCK:
|
case SPE_KNOCK:
|
||||||
if (obj->olocked) { /* unlock; couldn't be broken */
|
if (obj->olocked) { /* unlock; couldn't be broken */
|
||||||
|
pline("Klick!");
|
||||||
pline("Klick!");
|
pline("Klick!");
|
||||||
obj->olocked = 0;
|
obj->olocked = 0;
|
||||||
res = 1;
|
res = 1;
|
||||||
@@ -1115,11 +1117,13 @@ doorlock(struct obj *otmp, coordxy x, coordxy y)
|
|||||||
boolean vis = cansee(x, y);
|
boolean vis = cansee(x, y);
|
||||||
|
|
||||||
/* Can't have real locking in Rogue, so just hide doorway */
|
/* Can't have real locking in Rogue, so just hide doorway */
|
||||||
if (vis)
|
if (vis) {
|
||||||
pline("%s springs up in the older, more primitive doorway.",
|
pline("%s springs up in the older, more primitive doorway.",
|
||||||
dustcloud);
|
dustcloud);
|
||||||
else
|
} else {
|
||||||
|
Soundeffect(se_swoosh, 25);
|
||||||
You_hear("a swoosh.");
|
You_hear("a swoosh.");
|
||||||
|
}
|
||||||
if (obstructed(x, y, mysterywand)) {
|
if (obstructed(x, y, mysterywand)) {
|
||||||
if (vis)
|
if (vis)
|
||||||
pline_The("cloud %s.", quickly_dissipates);
|
pline_The("cloud %s.", quickly_dissipates);
|
||||||
@@ -1193,14 +1197,17 @@ doorlock(struct obj *otmp, coordxy x, coordxy y)
|
|||||||
/* for mtmp, mb_trapped() does is own wake_nearto() */
|
/* for mtmp, mb_trapped() does is own wake_nearto() */
|
||||||
loudness = 40;
|
loudness = 40;
|
||||||
if (Verbose(1, doorlock1)) {
|
if (Verbose(1, doorlock1)) {
|
||||||
if ((sawit || seeit) && !Unaware)
|
Soundeffect(se_kaboom_door_explodes, 75);
|
||||||
|
if ((sawit || seeit) && !Unaware) {
|
||||||
pline("KABOOM!! You see a door explode.");
|
pline("KABOOM!! You see a door explode.");
|
||||||
else if (!Deaf)
|
} else if (!Deaf) {
|
||||||
|
Soundeffect(se_explosion, 75);
|
||||||
You_hear("a %s explosion.",
|
You_hear("a %s explosion.",
|
||||||
(distu(x, y) > 7 * 7) ? "distant"
|
(distu(x, y) > 7 * 7) ? "distant"
|
||||||
: "nearby");
|
: "nearby");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sawit = cansee(x, y);
|
sawit = cansee(x, y);
|
||||||
@@ -1209,11 +1216,13 @@ doorlock(struct obj *otmp, coordxy x, coordxy y)
|
|||||||
seeit = cansee(x, y);
|
seeit = cansee(x, y);
|
||||||
newsym(x, y);
|
newsym(x, y);
|
||||||
if (Verbose(1, doorlock2)) {
|
if (Verbose(1, doorlock2)) {
|
||||||
if ((sawit || seeit) && !Unaware)
|
if ((sawit || seeit) && !Unaware) {
|
||||||
pline_The("door crashes open!");
|
pline_The("door crashes open!");
|
||||||
else if (!Deaf)
|
} else if (!Deaf) {
|
||||||
|
Soundeffect(se_crashing_sound, 100);
|
||||||
You_hear("a crashing sound.");
|
You_hear("a crashing sound.");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
/* force vision recalc before printing more messages */
|
/* force vision recalc before printing more messages */
|
||||||
if (gv.vision_full_recalc)
|
if (gv.vision_full_recalc)
|
||||||
vision_recalc(0);
|
vision_recalc(0);
|
||||||
|
|||||||
+6
-2
@@ -246,6 +246,7 @@ castmu(
|
|||||||
|
|
||||||
nomul(0);
|
nomul(0);
|
||||||
if (rn2(ml * 10) < (mtmp->mconf ? 100 : 20)) { /* fumbled attack */
|
if (rn2(ml * 10) < (mtmp->mconf ? 100 : 20)) { /* fumbled attack */
|
||||||
|
Soundeffect(se_air_crackles, 60);
|
||||||
if (canseemon(mtmp) && !Deaf)
|
if (canseemon(mtmp) && !Deaf)
|
||||||
pline_The("air crackles around %s.", mon_nam(mtmp));
|
pline_The("air crackles around %s.", mon_nam(mtmp));
|
||||||
return MM_MISS;
|
return MM_MISS;
|
||||||
@@ -578,6 +579,7 @@ cast_cleric_spell(struct monst *mtmp, int dmg, int spellnum)
|
|||||||
case CLC_LIGHTNING: {
|
case CLC_LIGHTNING: {
|
||||||
boolean reflects;
|
boolean reflects;
|
||||||
|
|
||||||
|
Soundeffect(se_bolt_of_lightning, 80);
|
||||||
pline("A bolt of lightning strikes down at you from above!");
|
pline("A bolt of lightning strikes down at you from above!");
|
||||||
reflects = ureflects("It bounces off your %s%s.", "");
|
reflects = ureflects("It bounces off your %s%s.", "");
|
||||||
if (reflects || Shock_resistance) {
|
if (reflects || Shock_resistance) {
|
||||||
@@ -650,12 +652,14 @@ cast_cleric_spell(struct monst *mtmp, int dmg, int spellnum)
|
|||||||
/* unseen caster summoned seen critter(s) */
|
/* unseen caster summoned seen critter(s) */
|
||||||
arg = (newseen == oldseen + 1) ? an(makesingular(what))
|
arg = (newseen == oldseen + 1) ? an(makesingular(what))
|
||||||
: whatbuf;
|
: whatbuf;
|
||||||
if (!Deaf)
|
if (!Deaf) {
|
||||||
|
Soundeffect(se_someone_summoning, 100);
|
||||||
You_hear("someone summoning something, and %s %s.", arg,
|
You_hear("someone summoning something, and %s %s.", arg,
|
||||||
vtense(arg, "appear"));
|
vtense(arg, "appear"));
|
||||||
else
|
} else {
|
||||||
pline("%s %s.", upstart(arg), vtense(arg, "appear"));
|
pline("%s %s.", upstart(arg), vtense(arg, "appear"));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* seen caster, possibly producing unseen--or just one--critters;
|
/* seen caster, possibly producing unseen--or just one--critters;
|
||||||
hero is told what the caster is doing and doesn't necessarily
|
hero is told what the caster is doing and doesn't necessarily
|
||||||
|
|||||||
+8
-3
@@ -739,14 +739,18 @@ mattacku(register struct monst *mtmp)
|
|||||||
} else if (digests(mtmp->data)) {
|
} else if (digests(mtmp->data)) {
|
||||||
pline("%s gulps some air!", Monnam(mtmp));
|
pline("%s gulps some air!", Monnam(mtmp));
|
||||||
} else {
|
} else {
|
||||||
if (youseeit)
|
if (youseeit) {
|
||||||
pline("%s lunges forward and recoils!", Monnam(mtmp));
|
pline("%s lunges forward and recoils!", Monnam(mtmp));
|
||||||
else
|
} else {
|
||||||
|
if (is_whirly(mtmp->data)) {
|
||||||
|
Soundeffect(se_rushing_wind_noise, 60);
|
||||||
|
}
|
||||||
You_hear("a %s nearby.",
|
You_hear("a %s nearby.",
|
||||||
is_whirly(mtmp->data) ? "rushing noise"
|
is_whirly(mtmp->data) ? "rushing noise"
|
||||||
: "splat");
|
: "splat");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case AT_BREA:
|
case AT_BREA:
|
||||||
if (range2)
|
if (range2)
|
||||||
@@ -876,7 +880,8 @@ summonmu(struct monst *mtmp, boolean youseeit)
|
|||||||
const char *from_nowhere;
|
const char *from_nowhere;
|
||||||
|
|
||||||
if (!Deaf) {
|
if (!Deaf) {
|
||||||
pline("%s %s!", Something, makeplural(growl_sound(mtmp)));
|
pline("%s %s!", Something,
|
||||||
|
makeplural(growl_sound(mtmp)));
|
||||||
from_nowhere = "";
|
from_nowhere = "";
|
||||||
} else {
|
} else {
|
||||||
from_nowhere = " from nowhere";
|
from_nowhere = " from nowhere";
|
||||||
|
|||||||
@@ -3497,6 +3497,7 @@ pudding_merge_message(struct obj *otmp, struct obj *otmp2)
|
|||||||
inpack ? " inside your pack" : "");
|
inpack ? " inside your pack" : "");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Soundeffect(se_faint_sloshing, 25);
|
||||||
You_hear("a faint sloshing sound.");
|
You_hear("a faint sloshing sound.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1179,9 +1179,11 @@ meatmetal(struct monst *mtmp)
|
|||||||
if (Verbose(1, meatmetal3))
|
if (Verbose(1, meatmetal3))
|
||||||
pline("%s eats %s!", Monnam(mtmp), otmpname);
|
pline("%s eats %s!", Monnam(mtmp), otmpname);
|
||||||
} else {
|
} else {
|
||||||
if (Verbose(1, meatmetal4))
|
if (Verbose(1, meatmetal4)) {
|
||||||
|
Soundeffect(se_crunching_sound, 50);
|
||||||
You_hear("a crunching sound.");
|
You_hear("a crunching sound.");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
mtmp->meating = otmp->owt / 2 + 1;
|
mtmp->meating = otmp->owt / 2 + 1;
|
||||||
/* Heal up to the object's weight in hp */
|
/* Heal up to the object's weight in hp */
|
||||||
if (mtmp->mhp < mtmp->mhpmax) {
|
if (mtmp->mhp < mtmp->mhpmax) {
|
||||||
@@ -1338,6 +1340,7 @@ meatobj(struct monst* mtmp) /* for gelatinous cubes */
|
|||||||
if (otmp->otyp == CORPSE)
|
if (otmp->otyp == CORPSE)
|
||||||
mon_givit(mtmp, &mons[otmp->corpsenm]);
|
mon_givit(mtmp, &mons[otmp->corpsenm]);
|
||||||
} else {
|
} else {
|
||||||
|
Soundeffect(se_slurping_sound, 30);
|
||||||
if (Verbose(2, meatobj2))
|
if (Verbose(2, meatobj2))
|
||||||
You_hear("a slurping sound.");
|
You_hear("a slurping sound.");
|
||||||
}
|
}
|
||||||
@@ -1440,6 +1443,7 @@ meatcorpse(
|
|||||||
if (Verbose(2, meatcorpse1))
|
if (Verbose(2, meatcorpse1))
|
||||||
pline("%s eats %s!", Monnam(mtmp), otmpname);
|
pline("%s eats %s!", Monnam(mtmp), otmpname);
|
||||||
} else {
|
} else {
|
||||||
|
Soundeffect(se_masticating_sound, 50);
|
||||||
if (Verbose(2, meatcorpse2))
|
if (Verbose(2, meatcorpse2))
|
||||||
You_hear("a masticating sound.");
|
You_hear("a masticating sound.");
|
||||||
}
|
}
|
||||||
@@ -3248,10 +3252,13 @@ xkilled(
|
|||||||
} else if (mtmp->mtame) {
|
} else if (mtmp->mtame) {
|
||||||
adjalign(-15); /* bad!! */
|
adjalign(-15); /* bad!! */
|
||||||
/* your god is mighty displeased... */
|
/* your god is mighty displeased... */
|
||||||
if (!Hallucination)
|
if (!Hallucination) {
|
||||||
|
Soundeffect(se_distant_thunder, 40);
|
||||||
You_hear("the rumble of distant thunder...");
|
You_hear("the rumble of distant thunder...");
|
||||||
else
|
} else {
|
||||||
|
Soundeffect(se_applause, 40);
|
||||||
You_hear("the studio audience applaud!");
|
You_hear("the studio audience applaud!");
|
||||||
|
}
|
||||||
if (!unique_corpstat(mdat)) {
|
if (!unique_corpstat(mdat)) {
|
||||||
boolean mname = has_mgivenname(mtmp);
|
boolean mname = has_mgivenname(mtmp);
|
||||||
|
|
||||||
@@ -5017,6 +5024,7 @@ angry_guards(boolean silent)
|
|||||||
buf, vtense(buf, "are"));
|
buf, vtense(buf, "are"));
|
||||||
} else {
|
} else {
|
||||||
Strcpy(buf, (ct == 1) ? "a guard's" : "guards'");
|
Strcpy(buf, (ct == 1) ? "a guard's" : "guards'");
|
||||||
|
Soundeffect(se_shrill_whistle, 100);
|
||||||
You_hear("the shrill sound of %s whistle%s.", buf, plur(ct));
|
You_hear("the shrill sound of %s whistle%s.", buf, plur(ct));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+19
-11
@@ -92,10 +92,12 @@ mon_yells(struct monst* mon, const char* shout)
|
|||||||
nolimbs(mon->data) ? mbodypart(mon, HEAD)
|
nolimbs(mon->data) ? mbodypart(mon, HEAD)
|
||||||
: makeplural(mbodypart(mon, ARM)));
|
: makeplural(mbodypart(mon, ARM)));
|
||||||
} else {
|
} else {
|
||||||
if (canspotmon(mon))
|
if (canspotmon(mon)) {
|
||||||
pline("%s yells:", Amonnam(mon));
|
pline("%s yells:", Amonnam(mon));
|
||||||
else
|
} else {
|
||||||
|
Soundeffect(se_someone_yells, 75);
|
||||||
You_hear("someone yell:");
|
You_hear("someone yell:");
|
||||||
|
}
|
||||||
verbalize1(shout);
|
verbalize1(shout);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1625,15 +1627,17 @@ m_move(register struct monst* mtmp, register int after)
|
|||||||
return MMOVE_DIED;
|
return MMOVE_DIED;
|
||||||
} else {
|
} else {
|
||||||
if (Verbose(2, m_move2)) {
|
if (Verbose(2, m_move2)) {
|
||||||
if (canseeit && canspotmon(mtmp))
|
if (canseeit && canspotmon(mtmp)) {
|
||||||
pline("%s unlocks and opens a door.",
|
pline("%s unlocks and opens a door.",
|
||||||
Monnam(mtmp));
|
Monnam(mtmp));
|
||||||
else if (canseeit)
|
} else if (canseeit) {
|
||||||
You_see("a door unlock and open.");
|
You_see("a door unlock and open.");
|
||||||
else if (!Deaf)
|
} else if (!Deaf) {
|
||||||
|
Soundeffect(se_door_unlock_and_open, 50);
|
||||||
You_hear("a door unlock and open.");
|
You_hear("a door unlock and open.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if (here->doormask == D_CLOSED && can_open) {
|
} else if (here->doormask == D_CLOSED && can_open) {
|
||||||
UnblockDoor(here, mtmp, !btrapped ? D_ISOPEN : D_NODOOR);
|
UnblockDoor(here, mtmp, !btrapped ? D_ISOPEN : D_NODOOR);
|
||||||
if (btrapped) {
|
if (btrapped) {
|
||||||
@@ -1641,14 +1645,16 @@ m_move(register struct monst* mtmp, register int after)
|
|||||||
return MMOVE_DIED;
|
return MMOVE_DIED;
|
||||||
} else {
|
} else {
|
||||||
if (Verbose(2, m_move3)) {
|
if (Verbose(2, m_move3)) {
|
||||||
if (canseeit && canspotmon(mtmp))
|
if (canseeit && canspotmon(mtmp)) {
|
||||||
pline("%s opens a door.", Monnam(mtmp));
|
pline("%s opens a door.", Monnam(mtmp));
|
||||||
else if (canseeit)
|
} else if (canseeit) {
|
||||||
You_see("a door open.");
|
You_see("a door open.");
|
||||||
else if (!Deaf)
|
} else if (!Deaf) {
|
||||||
|
Soundeffect(se_door_open, 100);
|
||||||
You_hear("a door open.");
|
You_hear("a door open.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if (here->doormask & (D_LOCKED | D_CLOSED)) {
|
} else if (here->doormask & (D_LOCKED | D_CLOSED)) {
|
||||||
/* mfndpos guarantees this must be a doorbuster */
|
/* mfndpos guarantees this must be a doorbuster */
|
||||||
unsigned mask;
|
unsigned mask;
|
||||||
@@ -1662,15 +1668,17 @@ m_move(register struct monst* mtmp, register int after)
|
|||||||
return MMOVE_DIED;
|
return MMOVE_DIED;
|
||||||
} else {
|
} else {
|
||||||
if (Verbose(2, m_move4)) {
|
if (Verbose(2, m_move4)) {
|
||||||
if (canseeit && canspotmon(mtmp))
|
if (canseeit && canspotmon(mtmp)) {
|
||||||
pline("%s smashes down a door.",
|
pline("%s smashes down a door.",
|
||||||
Monnam(mtmp));
|
Monnam(mtmp));
|
||||||
else if (canseeit)
|
} else if (canseeit) {
|
||||||
You_see("a door crash open.");
|
You_see("a door crash open.");
|
||||||
else if (!Deaf)
|
} else if (!Deaf) {
|
||||||
|
Soundeffect(se_door_crash_open, 50);
|
||||||
You_hear("a door crash open.");
|
You_hear("a door crash open.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
/* if it's a shop door, schedule repair */
|
/* if it's a shop door, schedule repair */
|
||||||
if (*in_rooms(mtmp->mx, mtmp->my, SHOPBASE))
|
if (*in_rooms(mtmp->mx, mtmp->my, SHOPBASE))
|
||||||
add_damage(mtmp->mx, mtmp->my, 0L);
|
add_damage(mtmp->mx, mtmp->my, 0L);
|
||||||
|
|||||||
+10
-4
@@ -377,6 +377,7 @@ ohitmon(
|
|||||||
if (ismimic)
|
if (ismimic)
|
||||||
seemimic(mtmp);
|
seemimic(mtmp);
|
||||||
mtmp->msleeping = 0;
|
mtmp->msleeping = 0;
|
||||||
|
Soundeffect(se_splat_egg, 35);
|
||||||
if (vis) {
|
if (vis) {
|
||||||
if (otmp->otyp == EGG) {
|
if (otmp->otyp == EGG) {
|
||||||
pline("Splat! %s is hit with %s egg!", Monnam(mtmp),
|
pline("Splat! %s is hit with %s egg!", Monnam(mtmp),
|
||||||
@@ -830,6 +831,7 @@ spitmm(struct monst* mtmp, struct attack* mattk, struct monst* mtarg)
|
|||||||
pline("A dry rattle comes from %s throat.",
|
pline("A dry rattle comes from %s throat.",
|
||||||
s_suffix(mon_nam(mtmp)));
|
s_suffix(mon_nam(mtmp)));
|
||||||
} else {
|
} else {
|
||||||
|
Soundeffect(se_dry_throat_rattle, 50);
|
||||||
You_hear("a dry rattle nearby.");
|
You_hear("a dry rattle nearby.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -902,11 +904,13 @@ breamm(struct monst* mtmp, struct attack* mattk, struct monst* mtarg)
|
|||||||
if (m_lined_up(mtarg, mtmp)) {
|
if (m_lined_up(mtarg, mtmp)) {
|
||||||
if (mtmp->mcan) {
|
if (mtmp->mcan) {
|
||||||
if (!Deaf) {
|
if (!Deaf) {
|
||||||
if (canseemon(mtmp))
|
if (canseemon(mtmp)) {
|
||||||
pline("%s coughs.", Monnam(mtmp));
|
pline("%s coughs.", Monnam(mtmp));
|
||||||
else
|
} else {
|
||||||
|
Soundeffect(se_cough, 100);
|
||||||
You_hear("a cough.");
|
You_hear("a cough.");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return MM_MISS;
|
return MM_MISS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1217,11 +1221,13 @@ hit_bars(
|
|||||||
*objp = 0; /* object is now gone */
|
*objp = 0; /* object is now gone */
|
||||||
/* breakage makes its own noises */
|
/* breakage makes its own noises */
|
||||||
if (obj_type == POT_ACID) {
|
if (obj_type == POT_ACID) {
|
||||||
if (cansee(barsx, barsy) && !nodissolve)
|
if (cansee(barsx, barsy) && !nodissolve) {
|
||||||
pline_The("iron bars are dissolved!");
|
pline_The("iron bars are dissolved!");
|
||||||
else
|
} else {
|
||||||
|
Soundeffect(se_angry_snakes, 100);
|
||||||
You_hear(Hallucination ? "angry snakes!"
|
You_hear(Hallucination ? "angry snakes!"
|
||||||
: "a hissing noise.");
|
: "a hissing noise.");
|
||||||
|
}
|
||||||
if (!nodissolve)
|
if (!nodissolve)
|
||||||
dissolve_bars(barsx, barsy);
|
dissolve_bars(barsx, barsy);
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-3
@@ -132,6 +132,7 @@ precheck(struct monst *mon, struct obj *obj)
|
|||||||
int range = couldsee(mon->mx, mon->my) /* 9 or 5 */
|
int range = couldsee(mon->mx, mon->my) /* 9 or 5 */
|
||||||
? (BOLT_LIM + 1) : (BOLT_LIM - 3);
|
? (BOLT_LIM + 1) : (BOLT_LIM - 3);
|
||||||
|
|
||||||
|
Soundeffect(se_zap_then_explosion, 100);
|
||||||
You_hear("a zap and an explosion %s.",
|
You_hear("a zap and an explosion %s.",
|
||||||
(mdistu(mon) <= range * range)
|
(mdistu(mon) <= range * range)
|
||||||
? "nearby" : "in the distance");
|
? "nearby" : "in the distance");
|
||||||
@@ -164,6 +165,7 @@ mzapwand(
|
|||||||
int range = couldsee(mtmp->mx, mtmp->my) /* 9 or 5 */
|
int range = couldsee(mtmp->mx, mtmp->my) /* 9 or 5 */
|
||||||
? (BOLT_LIM + 1) : (BOLT_LIM - 3);
|
? (BOLT_LIM + 1) : (BOLT_LIM - 3);
|
||||||
|
|
||||||
|
Soundeffect(se_zap, 100);
|
||||||
You_hear("a %s zap.", (mdistu(mtmp) <= range * range)
|
You_hear("a %s zap.", (mdistu(mtmp) <= range * range)
|
||||||
? "nearby" : "distant");
|
? "nearby" : "distant");
|
||||||
unknow_object(otmp); /* hero loses info when unseen obj is used */
|
unknow_object(otmp); /* hero loses info when unseen obj is used */
|
||||||
@@ -191,6 +193,7 @@ mplayhorn(
|
|||||||
int range = couldsee(mtmp->mx, mtmp->my) /* 9 or 5 */
|
int range = couldsee(mtmp->mx, mtmp->my) /* 9 or 5 */
|
||||||
? (BOLT_LIM + 1) : (BOLT_LIM - 3);
|
? (BOLT_LIM + 1) : (BOLT_LIM - 3);
|
||||||
|
|
||||||
|
Soundeffect(se_horn_being_played, 50);
|
||||||
You_hear("a horn being played %s.",
|
You_hear("a horn being played %s.",
|
||||||
(mdistu(mtmp) <= range * range)
|
(mdistu(mtmp) <= range * range)
|
||||||
? "nearby" : "in the distance");
|
? "nearby" : "in the distance");
|
||||||
@@ -266,6 +269,7 @@ mquaffmsg(struct monst *mtmp, struct obj *otmp)
|
|||||||
otmp->dknown = 1;
|
otmp->dknown = 1;
|
||||||
pline("%s drinks %s!", Monnam(mtmp), singular(otmp, doname));
|
pline("%s drinks %s!", Monnam(mtmp), singular(otmp, doname));
|
||||||
} else if (!Deaf) {
|
} else if (!Deaf) {
|
||||||
|
Soundeffect(se_mon_chugging_potion, 25);
|
||||||
You_hear("a chugging sound.");
|
You_hear("a chugging sound.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -706,10 +710,12 @@ use_defensive(struct monst* mtmp)
|
|||||||
impossible("No need for unicorn horn?");
|
impossible("No need for unicorn horn?");
|
||||||
return 2;
|
return 2;
|
||||||
case MUSE_BUGLE:
|
case MUSE_BUGLE:
|
||||||
if (vismon)
|
if (vismon) {
|
||||||
pline("%s plays %s!", Monnam(mtmp), doname(otmp));
|
pline("%s plays %s!", Monnam(mtmp), doname(otmp));
|
||||||
else if (!Deaf)
|
} else if (!Deaf) {
|
||||||
|
Soundeffect(se_bugle_playing_reveille, 100);
|
||||||
You_hear("a bugle playing reveille!");
|
You_hear("a bugle playing reveille!");
|
||||||
|
}
|
||||||
awaken_soldiers(mtmp);
|
awaken_soldiers(mtmp);
|
||||||
return 2;
|
return 2;
|
||||||
case MUSE_WAN_TELEPORTATION_SELF:
|
case MUSE_WAN_TELEPORTATION_SELF:
|
||||||
@@ -822,9 +828,11 @@ use_defensive(struct monst* mtmp)
|
|||||||
surface(mtmp->mx, mtmp->my));
|
surface(mtmp->mx, mtmp->my));
|
||||||
pline("%s %s through...", Monnam(mtmp),
|
pline("%s %s through...", Monnam(mtmp),
|
||||||
is_flyer(mtmp->data) ? "dives" : "falls");
|
is_flyer(mtmp->data) ? "dives" : "falls");
|
||||||
} else if (!Deaf)
|
} else if (!Deaf) {
|
||||||
|
Soundeffect(se_crash_through_floor, 100);
|
||||||
You_hear("%s crash through the %s.", something,
|
You_hear("%s crash through the %s.", something,
|
||||||
surface(mtmp->mx, mtmp->my));
|
surface(mtmp->mx, mtmp->my));
|
||||||
|
}
|
||||||
/* we made sure that there is a level for mtmp to go to */
|
/* we made sure that there is a level for mtmp to go to */
|
||||||
migrate_to_level(mtmp, ledger_no(&u.uz) + 1, MIGR_RANDOM,
|
migrate_to_level(mtmp, ledger_no(&u.uz) + 1, MIGR_RANDOM,
|
||||||
(coord *) 0);
|
(coord *) 0);
|
||||||
@@ -1446,6 +1454,7 @@ mbhitm(register struct monst* mtmp, register struct obj* otmp)
|
|||||||
if (hits_you) {
|
if (hits_you) {
|
||||||
if (Antimagic) {
|
if (Antimagic) {
|
||||||
shieldeff(u.ux, u.uy);
|
shieldeff(u.ux, u.uy);
|
||||||
|
Soundeffect(se_boing, 40);
|
||||||
pline("Boing!");
|
pline("Boing!");
|
||||||
} else if (rnd(20) < 10 + u.uac) {
|
} else if (rnd(20) < 10 + u.uac) {
|
||||||
pline_The("wand hits you!");
|
pline_The("wand hits you!");
|
||||||
@@ -1459,6 +1468,7 @@ mbhitm(register struct monst* mtmp, register struct obj* otmp)
|
|||||||
nomul(0);
|
nomul(0);
|
||||||
} else if (resists_magm(mtmp)) {
|
} else if (resists_magm(mtmp)) {
|
||||||
shieldeff(mtmp->mx, mtmp->my);
|
shieldeff(mtmp->mx, mtmp->my);
|
||||||
|
Soundeffect(se_boing, 40);
|
||||||
pline("Boing!");
|
pline("Boing!");
|
||||||
} else if (rnd(20) < 10 + find_mac(mtmp)) {
|
} else if (rnd(20) < 10 + find_mac(mtmp)) {
|
||||||
tmp = d(2, 12);
|
tmp = d(2, 12);
|
||||||
|
|||||||
+14
-6
@@ -252,13 +252,15 @@ do_earthquake(int force)
|
|||||||
mtmp->mundetected = 0;
|
mtmp->mundetected = 0;
|
||||||
newsym(x, y);
|
newsym(x, y);
|
||||||
if (ceiling_hider(mtmp->data)) {
|
if (ceiling_hider(mtmp->data)) {
|
||||||
if (cansee(x, y))
|
if (cansee(x, y)) {
|
||||||
pline("%s is shaken loose from the ceiling!",
|
pline("%s is shaken loose from the ceiling!",
|
||||||
Amonnam(mtmp));
|
Amonnam(mtmp));
|
||||||
else if (!is_flyer(mtmp->data))
|
} else if (!is_flyer(mtmp->data)) {
|
||||||
|
Soundeffect(se_thump, 50);
|
||||||
You_hear("a thump.");
|
You_hear("a thump.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (M_AP_TYPE(mtmp) != M_AP_NOTHING
|
if (M_AP_TYPE(mtmp) != M_AP_NOTHING
|
||||||
&& M_AP_TYPE(mtmp) != M_AP_MONSTER)
|
&& M_AP_TYPE(mtmp) != M_AP_MONSTER)
|
||||||
seemimic(mtmp);
|
seemimic(mtmp);
|
||||||
@@ -365,11 +367,13 @@ do_earthquake(int force)
|
|||||||
|
|
||||||
mtmp->mtrapped = 1;
|
mtmp->mtrapped = 1;
|
||||||
if (!m_already_trapped) { /* suppress messages */
|
if (!m_already_trapped) { /* suppress messages */
|
||||||
if (cansee(x, y))
|
if (cansee(x, y)) {
|
||||||
pline("%s falls into a chasm!", Monnam(mtmp));
|
pline("%s falls into a chasm!", Monnam(mtmp));
|
||||||
else if (humanoid(mtmp->data))
|
} else if (humanoid(mtmp->data)) {
|
||||||
|
Soundeffect(se_scream, 50);
|
||||||
You_hear("a scream!");
|
You_hear("a scream!");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
/* Falling is okay for falling down
|
/* Falling is okay for falling down
|
||||||
within a pit from jostling too */
|
within a pit from jostling too */
|
||||||
mselftouch(mtmp, "Falling, ", TRUE);
|
mselftouch(mtmp, "Falling, ", TRUE);
|
||||||
@@ -795,13 +799,17 @@ do_play_instrument(struct obj* instr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tumblers) {
|
if (tumblers) {
|
||||||
if (gears)
|
if (gears) {
|
||||||
|
Soundeffect(se_tumbler_click, 50);
|
||||||
|
Soundeffect(se_gear_turn, 50);
|
||||||
You_hear("%d tumbler%s click and %d gear%s turn.",
|
You_hear("%d tumbler%s click and %d gear%s turn.",
|
||||||
tumblers, plur(tumblers), gears,
|
tumblers, plur(tumblers), gears,
|
||||||
plur(gears));
|
plur(gears));
|
||||||
else
|
} else {
|
||||||
|
Soundeffect(se_tumbler_click, 50);
|
||||||
You_hear("%d tumbler%s click.", tumblers,
|
You_hear("%d tumbler%s click.", tumblers,
|
||||||
plur(tumblers));
|
plur(tumblers));
|
||||||
|
}
|
||||||
} else if (gears) {
|
} else if (gears) {
|
||||||
You_hear("%d gear%s turn.", gears, plur(gears));
|
You_hear("%d gear%s turn.", gears, plur(gears));
|
||||||
/* could only get `gears == 5' by playing five
|
/* could only get `gears == 5' by playing five
|
||||||
|
|||||||
@@ -1625,6 +1625,7 @@ potionhit(struct monst *mon, struct obj *obj, int how)
|
|||||||
hit_saddle = TRUE;
|
hit_saddle = TRUE;
|
||||||
distance = distu(tx, ty);
|
distance = distu(tx, ty);
|
||||||
if (!cansee(tx, ty)) {
|
if (!cansee(tx, ty)) {
|
||||||
|
Soundeffect(se_potion_crash_and_break, 60);
|
||||||
pline("Crash!");
|
pline("Crash!");
|
||||||
} else {
|
} else {
|
||||||
char *mnam = mon_nam(mon);
|
char *mnam = mon_nam(mon);
|
||||||
@@ -1641,6 +1642,7 @@ potionhit(struct monst *mon, struct obj *obj, int how)
|
|||||||
} else {
|
} else {
|
||||||
Strcpy(buf, mnam);
|
Strcpy(buf, mnam);
|
||||||
}
|
}
|
||||||
|
Soundeffect(se_potion_crash_and_break, 60);
|
||||||
pline_The("%s crashes on %s and breaks into shards.", botlnam,
|
pline_The("%s crashes on %s and breaks into shards.", botlnam,
|
||||||
buf);
|
buf);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1193,6 +1193,7 @@ pleased(aligntyp g_align)
|
|||||||
u.uevent.uheard_tune++;
|
u.uevent.uheard_tune++;
|
||||||
break;
|
break;
|
||||||
} else if (u.uevent.uheard_tune < 2) {
|
} else if (u.uevent.uheard_tune < 2) {
|
||||||
|
Soundeffect(se_divine_music, 50);
|
||||||
You_hear("a divine music...");
|
You_hear("a divine music...");
|
||||||
pline("It sounds like: \"%s\".", gt.tune);
|
pline("It sounds like: \"%s\".", gt.tune);
|
||||||
u.uevent.uheard_tune++;
|
u.uevent.uheard_tune++;
|
||||||
@@ -1720,6 +1721,7 @@ dosacrifice(void)
|
|||||||
offer_too_soon(altaralign);
|
offer_too_soon(altaralign);
|
||||||
return ECMD_TIME;
|
return ECMD_TIME;
|
||||||
}
|
}
|
||||||
|
Soundeffect(se_thunderclap, 100);
|
||||||
You_hear("a nearby thunderclap.");
|
You_hear("a nearby thunderclap.");
|
||||||
if (!otmp->known) {
|
if (!otmp->known) {
|
||||||
You("realize you have made a %s.",
|
You("realize you have made a %s.",
|
||||||
|
|||||||
+6
-1
@@ -1349,10 +1349,15 @@ seffect_scare_monster(struct obj **sobjp)
|
|||||||
ct++; /* pets don't laugh at you */
|
ct++; /* pets don't laugh at you */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (otyp == SCR_SCARE_MONSTER || !ct)
|
if (otyp == SCR_SCARE_MONSTER || !ct) {
|
||||||
|
if (confused || scursed)
|
||||||
|
Soundeffect(se_sad_wailing, 50);
|
||||||
|
else
|
||||||
|
Soundeffect(se_sad_wailing, 50);
|
||||||
You_hear("%s %s.", (confused || scursed) ? "sad wailing"
|
You_hear("%s %s.", (confused || scursed) ? "sad wailing"
|
||||||
: "maniacal laughter",
|
: "maniacal laughter",
|
||||||
!ct ? "in the distance" : "close by");
|
!ct ? "in the distance" : "close by");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
@@ -390,6 +390,7 @@ call_kops(struct monst *shkp, boolean nearshop)
|
|||||||
if (!shkp)
|
if (!shkp)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
Soundeffect(se_alarm, 80);
|
||||||
if (!Deaf)
|
if (!Deaf)
|
||||||
pline("An alarm sounds!");
|
pline("An alarm sounds!");
|
||||||
|
|
||||||
@@ -695,12 +696,14 @@ u_entered_shop(char* enterstring)
|
|||||||
pline_The("atmosphere at %s %s seems unwelcoming.",
|
pline_The("atmosphere at %s %s seems unwelcoming.",
|
||||||
s_suffix(shkname(shkp)), shtypes[rt - SHOPBASE].name);
|
s_suffix(shkname(shkp)), shtypes[rt - SHOPBASE].name);
|
||||||
} else if (eshkp->robbed) {
|
} else if (eshkp->robbed) {
|
||||||
if (!Deaf)
|
if (!Deaf) {
|
||||||
|
Soundeffect(se_mutter_imprecations, 50);
|
||||||
pline("%s mutters imprecations against shoplifters.",
|
pline("%s mutters imprecations against shoplifters.",
|
||||||
Shknam(shkp));
|
Shknam(shkp));
|
||||||
else
|
} else {
|
||||||
pline("%s is combing through %s inventory list.",
|
pline("%s is combing through %s inventory list.",
|
||||||
Shknam(shkp), noit_mhis(shkp));
|
Shknam(shkp), noit_mhis(shkp));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!Deaf && !muteshk(shkp))
|
if (!Deaf && !muteshk(shkp))
|
||||||
verbalize("%s, %s! Welcome%s to %s %s!", Hello(shkp), gp.plname,
|
verbalize("%s, %s! Welcome%s to %s %s!", Hello(shkp), gp.plname,
|
||||||
@@ -3784,11 +3787,13 @@ shk_fixes_damage(struct monst *shkp)
|
|||||||
|
|
||||||
shk_closeby = (mdistu(shkp) <= (BOLT_LIM / 2) * (BOLT_LIM / 2));
|
shk_closeby = (mdistu(shkp) <= (BOLT_LIM / 2) * (BOLT_LIM / 2));
|
||||||
|
|
||||||
if (canseemon(shkp))
|
if (canseemon(shkp)) {
|
||||||
pline("%s whispers %s.", Shknam(shkp),
|
pline("%s whispers %s.", Shknam(shkp),
|
||||||
shk_closeby ? "an incantation" : "something");
|
shk_closeby ? "an incantation" : "something");
|
||||||
else if (!Deaf && shk_closeby)
|
} else if (!Deaf && shk_closeby) {
|
||||||
|
Soundeffect(se_mutter_incantation, 100);
|
||||||
You_hear("someone muttering an incantation.");
|
You_hear("someone muttering an incantation.");
|
||||||
|
}
|
||||||
|
|
||||||
(void) repair_damage(shkp, dam, FALSE);
|
(void) repair_damage(shkp, dam, FALSE);
|
||||||
|
|
||||||
@@ -4442,6 +4447,7 @@ pay_for_damage(const char* dmgstr, boolean cant_mollify)
|
|||||||
if (MON_AT(x, y)) {
|
if (MON_AT(x, y)) {
|
||||||
if (!animal) {
|
if (!animal) {
|
||||||
if (!Deaf && !muteshk(shkp)) {
|
if (!Deaf && !muteshk(shkp)) {
|
||||||
|
Soundeffect(se_angry_voice, 75);
|
||||||
You_hear("an angry voice:");
|
You_hear("an angry voice:");
|
||||||
verbalize("Out of my way, scum!");
|
verbalize("Out of my way, scum!");
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-4
@@ -40,9 +40,14 @@ throne_mon_sound(struct monst *mtmp)
|
|||||||
};
|
};
|
||||||
int which = rn2(3) + (Hallucination ? 1 : 0);
|
int which = rn2(3) + (Hallucination ? 1 : 0);
|
||||||
|
|
||||||
if (which != 2)
|
if (which != 2) {
|
||||||
|
if (which == 0) {
|
||||||
|
Soundeffect(se_courtly_conversation, 30);
|
||||||
|
} else if (which == 1) {
|
||||||
|
Soundeffect(se_sceptor_pounding, 100);
|
||||||
|
}
|
||||||
You_hear1(throne_msg[which]);
|
You_hear1(throne_msg[which]);
|
||||||
else {
|
} else {
|
||||||
DISABLE_WARNING_FORMAT_NONLITERAL
|
DISABLE_WARNING_FORMAT_NONLITERAL
|
||||||
pline(throne_msg[2], uhis());
|
pline(throne_msg[2], uhis());
|
||||||
RESTORE_WARNING_FORMAT_NONLITERAL
|
RESTORE_WARNING_FORMAT_NONLITERAL
|
||||||
@@ -62,12 +67,15 @@ beehive_mon_sound(struct monst *mtmp)
|
|||||||
|
|
||||||
switch (rn2(2) + hallu) {
|
switch (rn2(2) + hallu) {
|
||||||
case 0:
|
case 0:
|
||||||
|
Soundeffect(se_low_buzzing, 30);
|
||||||
You_hear("a low buzzing.");
|
You_hear("a low buzzing.");
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
|
Soundeffect(se_angry_drone, 100);
|
||||||
You_hear("an angry drone.");
|
You_hear("an angry drone.");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
Soundeffect(se_bees, 100);
|
||||||
You_hear("bees in your %sbonnet!",
|
You_hear("bees in your %sbonnet!",
|
||||||
uarmh ? "" : "(nonexistent) ");
|
uarmh ? "" : "(nonexistent) ");
|
||||||
break;
|
break;
|
||||||
@@ -244,17 +252,20 @@ dosounds(void)
|
|||||||
gold_in_vault = TRUE;
|
gold_in_vault = TRUE;
|
||||||
if (vault_occupied(u.urooms)
|
if (vault_occupied(u.urooms)
|
||||||
!= (ROOM_INDEX(sroom) + ROOMOFFSET)) {
|
!= (ROOM_INDEX(sroom) + ROOMOFFSET)) {
|
||||||
if (gold_in_vault)
|
if (gold_in_vault) {
|
||||||
You_hear(!hallu
|
You_hear(!hallu
|
||||||
? "someone counting gold coins."
|
? "someone counting gold coins."
|
||||||
: "the quarterback calling the play.");
|
: "the quarterback calling the play.");
|
||||||
else
|
} else {
|
||||||
|
Soundeffect(se_someone_searching, 30);
|
||||||
You_hear("someone searching.");
|
You_hear("someone searching.");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*FALLTHRU*/
|
/*FALLTHRU*/
|
||||||
case 0:
|
case 0:
|
||||||
|
Soundeffect(se_guards_footsteps, 30);
|
||||||
You_hear("the footsteps of a guard on patrol.");
|
You_hear("the footsteps of a guard on patrol.");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
|||||||
+3
-1
@@ -224,8 +224,10 @@ deadbook(struct obj* book2)
|
|||||||
|
|
||||||
if (!u.uhave.bell || !u.uhave.menorah) {
|
if (!u.uhave.bell || !u.uhave.menorah) {
|
||||||
pline("A chill runs down your %s.", body_part(SPINE));
|
pline("A chill runs down your %s.", body_part(SPINE));
|
||||||
if (!u.uhave.bell)
|
if (!u.uhave.bell) {
|
||||||
|
Soundeffect(se_faint_chime, 30);
|
||||||
You_hear("a faint chime...");
|
You_hear("a faint chime...");
|
||||||
|
}
|
||||||
if (!u.uhave.menorah)
|
if (!u.uhave.menorah)
|
||||||
pline("Vlad's doppelganger is amused.");
|
pline("Vlad's doppelganger is amused.");
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -1727,6 +1727,7 @@ do_storms(void)
|
|||||||
if (levl[u.ux][u.uy].typ == CLOUD) {
|
if (levl[u.ux][u.uy].typ == CLOUD) {
|
||||||
/* Inside a cloud during a thunder storm is deafening. */
|
/* Inside a cloud during a thunder storm is deafening. */
|
||||||
/* Even if already deaf, we sense the thunder's vibrations. */
|
/* Even if already deaf, we sense the thunder's vibrations. */
|
||||||
|
Soundeffect(se_kaboom_boom_boom, 80);
|
||||||
pline("Kaboom!!! Boom!! Boom!!");
|
pline("Kaboom!!! Boom!! Boom!!");
|
||||||
incr_itimeout(&HDeaf, rn1(20, 30));
|
incr_itimeout(&HDeaf, rn1(20, 30));
|
||||||
gc.context.botl = TRUE;
|
gc.context.botl = TRUE;
|
||||||
|
|||||||
+30
-2
@@ -1023,6 +1023,7 @@ trapeffect_arrow_trap(
|
|||||||
|
|
||||||
if (mtmp == &gy.youmonst) {
|
if (mtmp == &gy.youmonst) {
|
||||||
if (trap->once && trap->tseen && !rn2(15)) {
|
if (trap->once && trap->tseen && !rn2(15)) {
|
||||||
|
Soundeffect(se_loud_click, 100);
|
||||||
You_hear("a loud click!");
|
You_hear("a loud click!");
|
||||||
deltrap(trap);
|
deltrap(trap);
|
||||||
newsym(u.ux, u.uy);
|
newsym(u.ux, u.uy);
|
||||||
@@ -1082,6 +1083,7 @@ trapeffect_dart_trap(
|
|||||||
int oldumort = u.umortality;
|
int oldumort = u.umortality;
|
||||||
|
|
||||||
if (trap->once && trap->tseen && !rn2(15)) {
|
if (trap->once && trap->tseen && !rn2(15)) {
|
||||||
|
Soundeffect(se_soft_click, 30);
|
||||||
You_hear("a soft click.");
|
You_hear("a soft click.");
|
||||||
deltrap(trap);
|
deltrap(trap);
|
||||||
newsym(u.ux, u.uy);
|
newsym(u.ux, u.uy);
|
||||||
@@ -1223,6 +1225,12 @@ trapeffect_sqky_board(
|
|||||||
struct trap *trap,
|
struct trap *trap,
|
||||||
unsigned trflags)
|
unsigned trflags)
|
||||||
{
|
{
|
||||||
|
enum sound_effect_entries tsnds[] = {
|
||||||
|
se_squeak_C, se_squeak_D_flat, se_squeak_D,
|
||||||
|
se_squeak_E_flat, se_squeak_E, se_squeak_F,
|
||||||
|
se_squeak_F_sharp, se_squeak_G, se_squeak_G_sharp,
|
||||||
|
se_squeak_A, se_squeak_B_flat, se_squeak_B,
|
||||||
|
};
|
||||||
boolean forcetrap = ((trflags & FORCETRAP) != 0
|
boolean forcetrap = ((trflags & FORCETRAP) != 0
|
||||||
|| (trflags & FAILEDUNTRAP) != 0);
|
|| (trflags & FAILEDUNTRAP) != 0);
|
||||||
|
|
||||||
@@ -1237,6 +1245,9 @@ trapeffect_sqky_board(
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
seetrap(trap);
|
seetrap(trap);
|
||||||
|
if (trap->tnote >= 0 && trap->tnote < SIZE(tsnds)) {
|
||||||
|
Soundeffect(tsnds[trap->tnote], 50);
|
||||||
|
}
|
||||||
pline("A board beneath you %s%s%s.",
|
pline("A board beneath you %s%s%s.",
|
||||||
Deaf ? "vibrates" : "squeaks ",
|
Deaf ? "vibrates" : "squeaks ",
|
||||||
Deaf ? "" : trapnote(trap, FALSE),
|
Deaf ? "" : trapnote(trap, FALSE),
|
||||||
@@ -1251,6 +1262,9 @@ trapeffect_sqky_board(
|
|||||||
/* stepped on a squeaky board */
|
/* stepped on a squeaky board */
|
||||||
if (in_sight) {
|
if (in_sight) {
|
||||||
if (!Deaf) {
|
if (!Deaf) {
|
||||||
|
if (trap->tnote >= 0 && trap->tnote < SIZE(tsnds)) {
|
||||||
|
Soundeffect(tsnds[trap->tnote], 50);
|
||||||
|
}
|
||||||
pline("A board beneath %s squeaks %s loudly.",
|
pline("A board beneath %s squeaks %s loudly.",
|
||||||
mon_nam(mtmp), trapnote(trap, FALSE));
|
mon_nam(mtmp), trapnote(trap, FALSE));
|
||||||
seetrap(trap);
|
seetrap(trap);
|
||||||
@@ -1263,6 +1277,11 @@ trapeffect_sqky_board(
|
|||||||
int range = couldsee(mtmp->mx, mtmp->my) /* 9 or 5 */
|
int range = couldsee(mtmp->mx, mtmp->my) /* 9 or 5 */
|
||||||
? (BOLT_LIM + 1) : (BOLT_LIM - 3);
|
? (BOLT_LIM + 1) : (BOLT_LIM - 3);
|
||||||
|
|
||||||
|
if (trap->tnote >= 0 && trap->tnote < SIZE(tsnds)) {
|
||||||
|
Soundeffect(tsnds[trap->tnote],
|
||||||
|
((mdistu(mtmp) <= range * range)
|
||||||
|
? 40 : 20));
|
||||||
|
}
|
||||||
You_hear("%s squeak %s.", trapnote(trap, FALSE),
|
You_hear("%s squeak %s.", trapnote(trap, FALSE),
|
||||||
(mdistu(mtmp) <= range * range)
|
(mdistu(mtmp) <= range * range)
|
||||||
? "nearby" : "in the distance");
|
? "nearby" : "in the distance");
|
||||||
@@ -1328,9 +1347,11 @@ trapeffect_bear_trap(
|
|||||||
seetrap(trap);
|
seetrap(trap);
|
||||||
} else {
|
} else {
|
||||||
if (mptr == &mons[PM_OWLBEAR]
|
if (mptr == &mons[PM_OWLBEAR]
|
||||||
|| mptr == &mons[PM_BUGBEAR])
|
|| mptr == &mons[PM_BUGBEAR]) {
|
||||||
|
Soundeffect(se_roar, 100);
|
||||||
You_hear("the roaring of an angry bear!");
|
You_hear("the roaring of an angry bear!");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if (forcetrap) {
|
} else if (forcetrap) {
|
||||||
if (in_sight) {
|
if (in_sight) {
|
||||||
pline("%s evades %s bear trap!", Monnam(mtmp),
|
pline("%s evades %s bear trap!", Monnam(mtmp),
|
||||||
@@ -1988,6 +2009,7 @@ trapeffect_web(
|
|||||||
case PM_OWLBEAR: /* Eric Backus */
|
case PM_OWLBEAR: /* Eric Backus */
|
||||||
case PM_BUGBEAR:
|
case PM_BUGBEAR:
|
||||||
if (!in_sight) {
|
if (!in_sight) {
|
||||||
|
Soundeffect(se_roar, 60);
|
||||||
You_hear("the roaring of a confused bear!");
|
You_hear("the roaring of a confused bear!");
|
||||||
mtmp->mtrapped = 1;
|
mtmp->mtrapped = 1;
|
||||||
break;
|
break;
|
||||||
@@ -2256,6 +2278,7 @@ trapeffect_landmine(
|
|||||||
trap->madeby_u ? "the trigger of your mine" : "a trigger");
|
trap->madeby_u ? "the trigger of your mine" : "a trigger");
|
||||||
if (already_seen && rn2(3))
|
if (already_seen && rn2(3))
|
||||||
return Trap_Effect_Finished;
|
return Trap_Effect_Finished;
|
||||||
|
Soundeffect(se_kaablamm_of_mine, 80);
|
||||||
pline("KAABLAMM!!! %s %s%s off!",
|
pline("KAABLAMM!!! %s %s%s off!",
|
||||||
forcebungle ? "Your inept attempt sets"
|
forcebungle ? "Your inept attempt sets"
|
||||||
: "The air currents set",
|
: "The air currents set",
|
||||||
@@ -2858,12 +2881,13 @@ launch_obj(
|
|||||||
if (cansee(x1, y1)) {
|
if (cansee(x1, y1)) {
|
||||||
You_see("%s start to roll.", an(xname(singleobj)));
|
You_see("%s start to roll.", an(xname(singleobj)));
|
||||||
} else if (Hallucination) {
|
} else if (Hallucination) {
|
||||||
|
Soundeffect(se_someone_bowling, 60);
|
||||||
You_hear("someone bowling.");
|
You_hear("someone bowling.");
|
||||||
} else {
|
} else {
|
||||||
|
Soundeffect(se_rumbling, 60);
|
||||||
You_hear("rumbling %s.", (distu(x1, y1) <= 4 * 4) ? "nearby"
|
You_hear("rumbling %s.", (distu(x1, y1) <= 4 * 4) ? "nearby"
|
||||||
: "in the distance");
|
: "in the distance");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
style &= ~LAUNCH_UNSEEN;
|
style &= ~LAUNCH_UNSEEN;
|
||||||
goto roll;
|
goto roll;
|
||||||
@@ -3028,6 +3052,7 @@ launch_obj(
|
|||||||
|| IS_ROCK(levl[gb.bhitpos.x + dx][gb.bhitpos.y + dy].typ))
|
|| IS_ROCK(levl[gb.bhitpos.x + dx][gb.bhitpos.y + dy].typ))
|
||||||
bmsg = " as one boulder hits another";
|
bmsg = " as one boulder hits another";
|
||||||
|
|
||||||
|
Soundeffect(se_loud_crash, 80);
|
||||||
You_hear("a loud crash%s!",
|
You_hear("a loud crash%s!",
|
||||||
cansee(gb.bhitpos.x, gb.bhitpos.y) ? bmsg : "");
|
cansee(gb.bhitpos.x, gb.bhitpos.y) ? bmsg : "");
|
||||||
obj_extract_self(otmp2);
|
obj_extract_self(otmp2);
|
||||||
@@ -3800,6 +3825,7 @@ domagictrap(void)
|
|||||||
|
|
||||||
/* deafness effects */
|
/* deafness effects */
|
||||||
if (!Deaf) {
|
if (!Deaf) {
|
||||||
|
Soundeffect(se_deafening_roar_atmospheric, 100);
|
||||||
You_hear("a deafening roar!");
|
You_hear("a deafening roar!");
|
||||||
incr_itimeout(&HDeaf, rn1(20, 30));
|
incr_itimeout(&HDeaf, rn1(20, 30));
|
||||||
gc.context.botl = TRUE;
|
gc.context.botl = TRUE;
|
||||||
@@ -3820,6 +3846,7 @@ domagictrap(void)
|
|||||||
/* sometimes nothing happens */
|
/* sometimes nothing happens */
|
||||||
break;
|
break;
|
||||||
case 11: /* toggle intrinsic invisibility */
|
case 11: /* toggle intrinsic invisibility */
|
||||||
|
Soundeffect(se_low_hum, 100);
|
||||||
You_hear("a low hum.");
|
You_hear("a low hum.");
|
||||||
if (!Invis) {
|
if (!Invis) {
|
||||||
if (!Blind)
|
if (!Blind)
|
||||||
@@ -5922,6 +5949,7 @@ b_trapped(const char* item, int bodypart)
|
|||||||
int lvl = level_difficulty(),
|
int lvl = level_difficulty(),
|
||||||
dmg = rnd(5 + (lvl < 5 ? lvl : 2 + lvl / 2));
|
dmg = rnd(5 + (lvl < 5 ? lvl : 2 + lvl / 2));
|
||||||
|
|
||||||
|
Soundeffect(se_kaboom, 80);
|
||||||
pline("KABOOM!! %s was booby-trapped!", The(item));
|
pline("KABOOM!! %s was booby-trapped!", The(item));
|
||||||
wake_nearby();
|
wake_nearby();
|
||||||
losehp(Maybe_Half_Phys(dmg), "explosion", KILLED_BY_AN);
|
losehp(Maybe_Half_Phys(dmg), "explosion", KILLED_BY_AN);
|
||||||
|
|||||||
+5
-2
@@ -2614,11 +2614,13 @@ mhitm_ad_curs(struct monst *magr, struct attack *mattk, struct monst *mdef,
|
|||||||
return;
|
return;
|
||||||
if (!magr->mcan && !rn2(10)) {
|
if (!magr->mcan && !rn2(10)) {
|
||||||
if (!Deaf) {
|
if (!Deaf) {
|
||||||
if (Blind)
|
Soundeffect(se_laughter, 40);
|
||||||
|
if (Blind) {
|
||||||
You_hear("laughter.");
|
You_hear("laughter.");
|
||||||
else
|
} else {
|
||||||
pline("%s chuckles.", Monnam(magr));
|
pline("%s chuckles.", Monnam(magr));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (u.umonnum == PM_CLAY_GOLEM) {
|
if (u.umonnum == PM_CLAY_GOLEM) {
|
||||||
pline("Some writing vanishes from your head!");
|
pline("Some writing vanishes from your head!");
|
||||||
/* KMH -- this is okay with unchanging */
|
/* KMH -- this is okay with unchanging */
|
||||||
@@ -3645,6 +3647,7 @@ mhitm_ad_ston(
|
|||||||
You_hear("a cough from %s!", mon_nam(magr));
|
You_hear("a cough from %s!", mon_nam(magr));
|
||||||
} else {
|
} else {
|
||||||
if (Hallucination && !Blind) {
|
if (Hallucination && !Blind) {
|
||||||
|
Soundeffect(se_cockatrice_hiss, 50);
|
||||||
You_hear("hissing."); /* You_hear() deals with Deaf */
|
You_hear("hissing."); /* You_hear() deals with Deaf */
|
||||||
pline("%s appears to be blowing you a kiss...",
|
pline("%s appears to be blowing you a kiss...",
|
||||||
Monnam(magr));
|
Monnam(magr));
|
||||||
|
|||||||
+3
-1
@@ -30,10 +30,12 @@ were_change(struct monst *mon)
|
|||||||
howler = (char *) 0;
|
howler = (char *) 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (howler)
|
if (howler) {
|
||||||
|
Soundeffect(se_canine_howl, 50);
|
||||||
You_hear("a %s howling at the moon.", howler);
|
You_hear("a %s howling at the moon.", howler);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if (!rn2(30) || Protection_from_shape_changers) {
|
} else if (!rn2(30) || Protection_from_shape_changers) {
|
||||||
new_were(mon); /* change back into human form */
|
new_were(mon); /* change back into human form */
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-2
@@ -937,14 +937,17 @@ mon_break_armor(struct monst *mon, boolean polyspot)
|
|||||||
if (breakarm(mdat)) {
|
if (breakarm(mdat)) {
|
||||||
if ((otmp = which_armor(mon, W_ARM)) != 0) {
|
if ((otmp = which_armor(mon, W_ARM)) != 0) {
|
||||||
if ((Is_dragon_scales(otmp) && mdat == Dragon_scales_to_pm(otmp))
|
if ((Is_dragon_scales(otmp) && mdat == Dragon_scales_to_pm(otmp))
|
||||||
|| (Is_dragon_mail(otmp) && mdat == Dragon_mail_to_pm(otmp)))
|
|| (Is_dragon_mail(otmp) && mdat == Dragon_mail_to_pm(otmp))) {
|
||||||
; /* no message here;
|
; /* no message here;
|
||||||
"the dragon merges with his scaly armor" is odd
|
"the dragon merges with his scaly armor" is odd
|
||||||
and the monster's previous form is already gone */
|
and the monster's previous form is already gone */
|
||||||
else if (vis)
|
} else {
|
||||||
|
Soundeffect(se_cracking_sound, 100);
|
||||||
|
if (vis)
|
||||||
pline("%s breaks out of %s armor!", Monnam(mon), ppronoun);
|
pline("%s breaks out of %s armor!", Monnam(mon), ppronoun);
|
||||||
else
|
else
|
||||||
You_hear("a cracking sound.");
|
You_hear("a cracking sound.");
|
||||||
|
}
|
||||||
m_useup(mon, otmp);
|
m_useup(mon, otmp);
|
||||||
}
|
}
|
||||||
if ((otmp = which_armor(mon, W_ARMC)) != 0
|
if ((otmp = which_armor(mon, W_ARMC)) != 0
|
||||||
@@ -958,6 +961,7 @@ mon_break_armor(struct monst *mon, boolean polyspot)
|
|||||||
bypass_obj(otmp);
|
bypass_obj(otmp);
|
||||||
m_lose_armor(mon, otmp);
|
m_lose_armor(mon, otmp);
|
||||||
} else {
|
} else {
|
||||||
|
Soundeffect(se_ripping_sound, 100);
|
||||||
if (vis)
|
if (vis)
|
||||||
pline("%s %s tears apart!", s_suffix(Monnam(mon)),
|
pline("%s %s tears apart!", s_suffix(Monnam(mon)),
|
||||||
cloak_simple_name(otmp));
|
cloak_simple_name(otmp));
|
||||||
@@ -978,6 +982,7 @@ mon_break_armor(struct monst *mon, boolean polyspot)
|
|||||||
boolean passes_thru_clothes = !(mdat->msize <= MZ_SMALL);
|
boolean passes_thru_clothes = !(mdat->msize <= MZ_SMALL);
|
||||||
|
|
||||||
if ((otmp = which_armor(mon, W_ARM)) != 0) {
|
if ((otmp = which_armor(mon, W_ARM)) != 0) {
|
||||||
|
Soundeffect(se_thud, 50);
|
||||||
if (vis)
|
if (vis)
|
||||||
pline("%s armor falls around %s!", s_suffix(Monnam(mon)),
|
pline("%s armor falls around %s!", s_suffix(Monnam(mon)),
|
||||||
pronoun);
|
pronoun);
|
||||||
@@ -1027,6 +1032,7 @@ mon_break_armor(struct monst *mon, boolean polyspot)
|
|||||||
m_lose_armor(mon, otmp);
|
m_lose_armor(mon, otmp);
|
||||||
}
|
}
|
||||||
if ((otmp = which_armor(mon, W_ARMS)) != 0) {
|
if ((otmp = which_armor(mon, W_ARMS)) != 0) {
|
||||||
|
Soundeffect(se_clank, 50);
|
||||||
if (vis)
|
if (vis)
|
||||||
pline("%s can no longer hold %s shield!", Monnam(mon),
|
pline("%s can no longer hold %s shield!", Monnam(mon),
|
||||||
ppronoun);
|
ppronoun);
|
||||||
|
|||||||
@@ -2121,6 +2121,7 @@ bhito(struct obj *obj, struct obj *otmp)
|
|||||||
(the sound could be implicit) */
|
(the sound could be implicit) */
|
||||||
maybelearnit = cansee(obj->ox, obj->oy) || !Deaf;
|
maybelearnit = cansee(obj->ox, obj->oy) || !Deaf;
|
||||||
if (obj->otyp == BOULDER) {
|
if (obj->otyp == BOULDER) {
|
||||||
|
Soundeffect(se_crumbling_sound, 75);
|
||||||
if (cansee(obj->ox, obj->oy))
|
if (cansee(obj->ox, obj->oy))
|
||||||
pline_The("boulder falls apart.");
|
pline_The("boulder falls apart.");
|
||||||
else
|
else
|
||||||
@@ -4781,6 +4782,7 @@ zap_over_floor(
|
|||||||
|
|
||||||
if (IS_WATERWALL(lev->typ)) {
|
if (IS_WATERWALL(lev->typ)) {
|
||||||
/* For now, don't let WATER freeze. */
|
/* For now, don't let WATER freeze. */
|
||||||
|
Soundeffect(se_soft_crackling, 100);
|
||||||
if (see_it)
|
if (see_it)
|
||||||
pline_The("%s freezes for a moment.", hliquid("water"));
|
pline_The("%s freezes for a moment.", hliquid("water"));
|
||||||
else
|
else
|
||||||
@@ -4801,6 +4803,8 @@ zap_over_floor(
|
|||||||
lev->typ = lava ? ROOM : ICE;
|
lev->typ = lava ? ROOM : ICE;
|
||||||
}
|
}
|
||||||
bury_objs(x, y);
|
bury_objs(x, y);
|
||||||
|
if (!lava)
|
||||||
|
Soundeffect(se_soft_crackling, 30);
|
||||||
if (see_it) {
|
if (see_it) {
|
||||||
if (lava)
|
if (lava)
|
||||||
Norep("The %s cools and solidifies.",
|
Norep("The %s cools and solidifies.",
|
||||||
@@ -4810,9 +4814,9 @@ zap_over_floor(
|
|||||||
else
|
else
|
||||||
Norep("The %s freezes.", hliquid("water"));
|
Norep("The %s freezes.", hliquid("water"));
|
||||||
newsym(x, y);
|
newsym(x, y);
|
||||||
} else if (!lava)
|
} else if (!lava) {
|
||||||
You_hear("a crackling sound.");
|
You_hear("a crackling sound.");
|
||||||
|
}
|
||||||
if (u_at(x, y)) {
|
if (u_at(x, y)) {
|
||||||
if (u.uinwater) { /* not just `if (Underwater)' */
|
if (u.uinwater) { /* not just `if (Underwater)' */
|
||||||
/* leave the no longer existent water */
|
/* leave the no longer existent water */
|
||||||
|
|||||||
Reference in New Issue
Block a user