diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 70453f57ce..413d06718c 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -439,7 +439,12 @@ GLOBAL_LIST_EMPTY(##LIST_NAME);\ #define VOLUME_CHANNEL_DOORS "Doors" #define VOLUME_CHANNEL_INSTRUMENTS "Instruments" #define VOLUME_CHANNEL_WEATHER "Weather" -#define VOLUME_CHANNEL_SPECIES_SOUNDS "Species Sounds" +#define VOLUME_CHANNEL_SPECIES_SOUNDS "Species Sounds (Verbal Injury Feedback)" +#define VOLUME_CHANNEL_HUD_WARNINGS "SS13 HUD (Clientside-only sounds)" +#define VOLUME_CHANNEL_DEATH_SOUNDS "Death Sounds" +#define VOLUME_CHANNEL_INJURY_SOUNDS "Mob Injury Sounds (Non-Verbal Feedback)" +#define VOLUME_CHANNEL_MACHINERY "Machinery Noises" +#define VOLUME_CHANNEL_MACHINERY_IDLE "Machinery Idle Noises" // Make sure you update this or clients won't be able to adjust the channel GLOBAL_LIST_INIT(all_volume_channels, list( @@ -450,7 +455,12 @@ GLOBAL_LIST_INIT(all_volume_channels, list( VOLUME_CHANNEL_DOORS, VOLUME_CHANNEL_INSTRUMENTS, VOLUME_CHANNEL_WEATHER, - VOLUME_CHANNEL_SPECIES_SOUNDS + VOLUME_CHANNEL_SPECIES_SOUNDS, + VOLUME_CHANNEL_HUD_WARNINGS, + VOLUME_CHANNEL_DEATH_SOUNDS, + VOLUME_CHANNEL_INJURY_SOUNDS, + VOLUME_CHANNEL_MACHINERY, + VOLUME_CHANNEL_MACHINERY_IDLE )) #define APPEARANCECHANGER_CHANGED_RACE "Race" diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm index 19cf43d190..8c40e9045b 100644 --- a/code/datums/looping_sounds/_looping_sound.dm +++ b/code/datums/looping_sounds/_looping_sound.dm @@ -36,6 +36,7 @@ var/pref_check var/volume_chan //CHOMPedit var/exclusive + var/falloff // CHOMPEdit: Add Falloff var/timerid var/started @@ -106,7 +107,7 @@ continue SEND_SOUND(thing, S) else - playsound(thing, S, volume, vary, extra_range, ignore_walls = !opacity_check, preference = pref_check, volume_channel = volume_chan) // CHOMPEdit - Weather volume channel + playsound(thing, S, volume, vary, extra_range, falloff = falloff, ignore_walls = !opacity_check, preference = pref_check, volume_channel = volume_chan) // CHOMPEdit - Weather volume channel CHOMPEdit again: falloff /datum/looping_sound/proc/get_sound(starttime, _mid_sounds) if(!_mid_sounds) diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm index d7011dd094..931168d84a 100644 --- a/code/datums/looping_sounds/machinery_sounds.dm +++ b/code/datums/looping_sounds/machinery_sounds.dm @@ -115,3 +115,37 @@ mid_length = 6 end_sound = 'sound/machines/vehicle/engine_end.ogg' volume = 20 + +// CHOMPAdd: Fridges! +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/fridge + mid_sounds = list('sound/machines/kitchen/fridge/fridge_loop.ogg' = 1) + mid_length = 60 + volume = 10 + extra_range = -1 // Short-range + pref_check = /datum/client_preference/fridge_hum + volume_chan = VOLUME_CHANNEL_MACHINERY_IDLE + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/tcomms + start_sound = 'sound/machines/tcomms/tcomms_pulse.ogg' + mid_sounds = list('sound/machines/tcomms/tcomms_01.ogg' = 1) + mid_length = 20 + end_sound = 'sound/machines/tcomms/tcomms_pulse.ogg' + volume = 40 + opacity_check = TRUE // We don't want to drown people with noise outside Tcomms + falloff = 0.2 // Harsh + volume_chan = VOLUME_CHANNEL_MACHINERY_IDLE + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/shield_generator + start_sound = 'modular_chomp/sound/machines/shield_hum/shield_generator_whir.ogg' + mid_sounds = list('modular_chomp/sound/machines/shield_hum/shield_generator_hum2.ogg', 'modular_chomp/sound/machines/shield_hum/shield_generator_hum3.ogg') + mid_length = 60 + end_sound = 'modular_chomp/sound/machines/shield_hum/shield_generator_whir.ogg' + volume = 40 + volume_chan = VOLUME_CHANNEL_MACHINERY + exclusive = TRUE diff --git a/code/datums/looping_sounds/mob_sounds.dm b/code/datums/looping_sounds/mob_sounds.dm index 1a3d6fcf93..eb65eed926 100644 --- a/code/datums/looping_sounds/mob_sounds.dm +++ b/code/datums/looping_sounds/mob_sounds.dm @@ -5,7 +5,7 @@ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /datum/looping_sound/mob - // volume_chan = VOLUME_CHANNEL_INJ_DEATH // Commented out until pain/etc PR is in + // volume_chan = VOLUME_CHANNEL_MOB_SOUNDS /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -18,7 +18,7 @@ volume = 40 direct = TRUE // We send this sound directly to the mob, bc they only hear it when they're deaf. exclusive = TRUE // This should only occur once, because we can only be deafened once. - // volume_chan = VOLUME_CHANNEL_INJ_DEATH // Commented out until pain/etc PR is in + volume_chan = VOLUME_CHANNEL_HUD_WARNINGS /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -29,6 +29,25 @@ pref_check = /datum/client_preference/sleep_music direct = TRUE // We send this sound directly to the mob, bc they only hear it when they're asleep. exclusive = TRUE // This should only occur once, because we only want one music loop running while we snooze. - // volume_chan = VOLUME_CHANNEL_INJ_DEATH // Commented out until pain/etc PR is in + volume_chan = VOLUME_CHANNEL_HUD_WARNINGS /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/mob/on_fire + mid_sounds = list('sound/effects/mob_effects/on_fire/on_fire_loop.ogg'=1) + mid_length = 6 SECONDS + end_sound = 'sound/effects/mob_effects/on_fire/fire_extinguish.ogg' + volume = 20 + exclusive = TRUE // This should only occur once, because we only want one loop running while we're on fire, even if we're set on fire multiple times. + volume_chan = VOLUME_CHANNEL_INJURY_SOUNDS + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/mob/stunned // Going to hang onto this one for later + mid_sounds = list('sound/effects/mob_effects/stun_loop.ogg'=1) + mid_length = 3 SECONDS + volume = 70 + direct = TRUE // Send this one directly to the mob, only applies when we're Weakened() + exclusive = TRUE // This should only occur once, because we only want one loop running. + volume_chan = VOLUME_CHANNEL_HUD_WARNINGS +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 24a7d21a5f..4313ba5c2f 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -50,12 +50,19 @@ var/global/list/minor_air_alarms = list() var/list/alarms = atmosphere_alarm.major_alarms() if(alarms.len) icon_screen = "alert:2" + playsound(src, 'modular_chomp/sound/effects/comp_alert_major.ogg', 70, 1) // CHOMPEdit: Alarm notifications + spawn(100) // Wait 10 seconds, then play it again + playsound(src, 'modular_chomp/sound/effects/comp_alert_major.ogg', 70, 1) // CHOMPEdit: Alarm notifications else alarms = atmosphere_alarm.minor_alarms() if(alarms.len) icon_screen = "alert:1" + playsound(src, 'modular_chomp/sound/effects/comp_alert_minor.ogg', 50, 1) // CHOMPEdit: Alarm notifications + spawn(100) // Wait 10 seconds, then play it again + playsound(src, 'modular_chomp/sound/effects/comp_alert_minor.ogg', 50, 1) // CHOMPEdit: Alarm notifications else icon_screen = initial(icon_screen) + playsound(src, 'modular_chomp/sound/effects/comp_alert_clear.ogg', 50, 1) // CHOMPEdit: Alarm notifications ..() /obj/machinery/computer/atmos_alert/tgui_act(action, params) diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index 051a8e368b..b4da38c52d 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -49,6 +49,8 @@ var/list/alarms = alarm_monitor ? alarm_monitor.major_alarms() : list() if(alarms.len) icon_screen = "alert:2" + playsound(src, 'modular_chomp/sound/effects/comp_alert_major.ogg', 70, 1) // CHOMPEdit: Alarm notifications else icon_screen = initial(icon_screen) + playsound(src, 'modular_chomp/sound/effects/comp_alert_clear.ogg', 50, 1) // CHOMPEdit: Alarm notifications ..() diff --git a/code/game/machinery/exonet_node.dm b/code/game/machinery/exonet_node.dm index 1eda308142..01f140e9d2 100644 --- a/code/game/machinery/exonet_node.dm +++ b/code/game/machinery/exonet_node.dm @@ -17,6 +17,9 @@ var/list/logs = list() // Gets written to by exonet's send_message() function. circuit = /obj/item/weapon/circuitboard/telecomms/exonet_node + + var/datum/looping_sound/tcomms/soundloop // CHOMPStation Add: Hummy noises + var/noisy = TRUE // CHOMPStation Add: Hummy noises, this starts on // Proc: New() // Parameters: None // Description: Adds components to the machine for deconstruction. @@ -26,6 +29,24 @@ desc = "This machine is one of many, many nodes inside [using_map.starsys_name]'s section of the Exonet, connecting the [using_map.station_short] to the rest of the system, at least \ electronically." + // CHOMPAdd: Exonet Machinery humming + soundloop = new(list(src), FALSE) + if(prob(60)) // 60% chance to change the midloop + if(prob(40)) + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_02.ogg' = 1) + soundloop.mid_length = 40 + else if(prob(20)) + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_03.ogg' = 1) + soundloop.mid_length = 10 + else + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_04.ogg' = 1) + soundloop.mid_length = 30 + // CHOMPAdd End + soundloop.start() // CHOMPStation Edit: This starts on + +/obj/machinery/exonet_node/Destroy() // CHOMPAdd: Just in case. + QDEL_NULL(soundloop) // CHOMPAdd: Exonet noises + // Proc: update_icon() // Parameters: None // Description: Self explanatory. @@ -48,12 +69,19 @@ if(stat & (BROKEN|NOPOWER|EMPED)) on = 0 update_idle_power_usage(0) + soundloop.stop() // CHOMPStation Add: Hummy noises + noisy = FALSE // CHOMPStation Add: Hummy noises else on = 1 update_idle_power_usage(2500) else on = 0 update_idle_power_usage(0) + soundloop.stop() // CHOMPStation Add: Hummy noises + noisy = FALSE // CHOMPStation Add: Hummy noises + if(!noisy && on) // CHOMPStation Add: Hummy noises, safety in case it was already on + soundloop.start() // CHOMPStation Add: Hummy noises + noisy = TRUE // CHOMPStation Add: Hummy noises update_icon() // Proc: emp_act() diff --git a/code/game/machinery/pda_multicaster.dm b/code/game/machinery/pda_multicaster.dm index ef7612bf87..8d8b36eaa2 100644 --- a/code/game/machinery/pda_multicaster.dm +++ b/code/game/machinery/pda_multicaster.dm @@ -12,6 +12,9 @@ var/toggle = 1 // If we /should/ be active or not, var/list/internal_PDAs = list() // Assoc list of PDAs inside of this, with the department name being the index, + var/datum/looping_sound/tcomms/soundloop // CHOMPStation Add: Hummy noises + var/noisy = TRUE // CHOMPStation Add: Hummy noises + /obj/machinery/pda_multicaster/New() ..() internal_PDAs = list("command" = new /obj/item/device/pda/multicaster/command(src), @@ -23,6 +26,24 @@ "cargo" = new /obj/item/device/pda/multicaster/cargo(src), "civilian" = new /obj/item/device/pda/multicaster/civilian(src)) +/obj/machinery/pda_multicaster/Initialize() + . = ..() + + // CHOMPAdd: PDA Multicaster Server humming + soundloop = new(list(src), FALSE) + if(prob(60)) // 60% chance to change the midloop + if(prob(40)) + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_02.ogg' = 1) + soundloop.mid_length = 40 + else if(prob(20)) + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_03.ogg' = 1) + soundloop.mid_length = 10 + else + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_04.ogg' = 1) + soundloop.mid_length = 30 + soundloop.start() // Have to do this here bc it starts on + // CHOMPAdd End + /obj/machinery/pda_multicaster/prebuilt/Initialize() . = ..() default_apply_parts() @@ -30,6 +51,7 @@ /obj/machinery/pda_multicaster/Destroy() for(var/atom/movable/AM in contents) qdel(AM) + QDEL_NULL(soundloop) ..() /obj/machinery/pda_multicaster/update_icon() @@ -73,14 +95,20 @@ on = 0 update_PDAs(1) // 1 being to turn off. update_idle_power_usage(0) + soundloop.stop() // CHOMPStation Add: Hummy noises + noisy = FALSE // CHOMPStation Add: Hummy noises else on = 1 update_PDAs(0) update_idle_power_usage(750) + soundloop.start() // CHOMPStation Add: Hummy noises + noisy = TRUE // CHOMPStation Add: Hummy noises else on = 0 update_PDAs(1) update_idle_power_usage(0) + soundloop.stop() // CHOMPStation Add: Hummy noises + noisy = FALSE // CHOMPStation Add: Hummy noises update_icon() /obj/machinery/pda_multicaster/process() diff --git a/code/game/machinery/pointdefense.dm b/code/game/machinery/pointdefense.dm index e249697272..ac032cfd61 100644 --- a/code/game/machinery/pointdefense.dm +++ b/code/game/machinery/pointdefense.dm @@ -14,7 +14,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) icon = 'icons/obj/pointdefense.dmi' icon_state = "control" power_channel = EQUIP // CHOMPStation Edit Starts - use_power = USE_POWER_ACTIVE + use_power = USE_POWER_ACTIVE active_power_usage = 5 KILOWATTS // CHOMPStation Edit Ends density = TRUE anchored = TRUE @@ -141,6 +141,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) var/rotation_speed = 4.5 SECONDS //How quickly we turn to face threats var/datum/weakref/engaging = null // The meteor we're shooting at var/id_tag = null + var/fire_sounds = list('sound/weapons/frigate_turret/frigate_turret_fire1.ogg', 'sound/weapons/frigate_turret/frigate_turret_fire2.ogg', 'sound/weapons/frigate_turret/frigate_turret_fire3.ogg', 'sound/weapons/frigate_turret/frigate_turret_fire4.ogg') // CHOMPEdit: Pew /obj/machinery/pointdefense/Initialize() . = ..() @@ -225,9 +226,11 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) return //We throw a laser but it doesnt have to hit for meteor to explode var/obj/item/projectile/beam/pointdefense/beam = new(get_turf(src)) - playsound(src, 'sound/weapons/mandalorian.ogg', 75, 1) + playsound(src, fire_sounds, 75, 1, 40, pressure_affected = FALSE, ignore_walls = TRUE) // CHOMPEdit: Pew use_power_oneoff(idle_power_usage * 10) beam.launch_projectile(target = M.loc, user = src) + spawn(10) + playsound(src, fire_sounds, 75, 1, 40, pressure_affected = FALSE, ignore_walls = TRUE) // CHOMPEdit: Pew /obj/machinery/pointdefense/process() ..() @@ -269,7 +272,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) engaging = target Shoot(target) return - + // Then, focus fire on existing targets for(var/obj/effect/meteor/M in existing_targets) if(targeting_check(M)) diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index e23f7dd8b2..9c25b9f650 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -37,6 +37,8 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() var/hide = 0 // Is it a hidden machine? var/listening_level = 0 // 0 = auto set in New() - this is the z level that the machine is listening to. + var/datum/looping_sound/tcomms/soundloop // CHOMPStation Add: Hummy noises + var/noisy = TRUE // CHOMPStation Add: Hummy noises, this starts on /obj/machinery/telecomms/proc/relay_information(datum/signal/signal, filter, copysig, amount = 20) // relay signal to all linked machinery that are of type [filter]. If signal has been sent [amount] times, stop sending @@ -132,6 +134,20 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() else for(var/obj/machinery/telecomms/T in telecomms_list) add_link(T) + // CHOMPAdd: TComms humming + soundloop = new(list(src), FALSE) + if(prob(60)) // 60% chance to change the midloop + if(prob(40)) + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_02.ogg' = 1) + soundloop.mid_length = 40 + else if(prob(20)) + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_03.ogg' = 1) + soundloop.mid_length = 10 + else + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_04.ogg' = 1) + soundloop.mid_length = 30 + soundloop.start() + // CHOMPAdd End . = ..() /obj/machinery/telecomms/Destroy() @@ -139,6 +155,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() for(var/obj/machinery/telecomms/comm in telecomms_list) comm.links -= src links = list() + QDEL_NULL(soundloop) // CHOMPAdd: Tcomms noises ..() // Used in auto linking @@ -162,10 +179,17 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() if(toggled) if(stat & (BROKEN|NOPOWER|EMPED) || integrity <= 0) // if powered, on. if not powered, off. if too damaged, off on = 0 + soundloop.stop() // CHOMPAdd: Tcomms noises + noisy = FALSE else on = 1 else on = 0 + soundloop.stop() // CHOMPAdd: Tcomms noises + noisy = FALSE + if(!noisy) // CHOMPAdd: Tcomms noises + soundloop.start() // CHOMPAdd: Tcomms noises + noisy = TRUE /obj/machinery/telecomms/process() update_power() @@ -183,6 +207,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() if(prob(100/severity)) if(!(stat & EMPED)) stat |= EMPED + playsound(src, 'sound/machines/tcomms/tcomms_pulse.ogg', 70, 1, 30) // CHOMPAdd: Tcomms noises var/duration = (300 * 10)/severity spawn(rand(duration - 20, duration + 20)) // Takes a long time for the machines to reboot. stat &= ~EMPED diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index 66695f3511..c94683a260 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -10,8 +10,8 @@ /obj/item/weapon/reagent_containers/food/condiment/spacespice = 2 ) - open_sound = 'sound/machines/click.ogg' - close_sound = 'sound/machines/click.ogg' + open_sound = 'sound/machines/kitchen/fridge/open_fridge.ogg' // CHOMPEdit: Fridge sounds~ + close_sound = 'sound/machines/kitchen/fridge/close_fridge.ogg' // CHOMPEdit: Fridge sounds~ /obj/structure/closet/secure_closet/freezer/kitchen/mining req_access = list() @@ -22,6 +22,9 @@ icon = 'icons/obj/closets/fridge.dmi' closet_appearance = null + open_sound = 'sound/machines/kitchen/fridge/open_fridge.ogg' // CHOMPEdit: Fridge sounds~ + close_sound = 'sound/machines/kitchen/fridge/close_fridge.ogg' // CHOMPEdit: Fridge sounds~ + starts_with = list( /obj/item/weapon/reagent_containers/food/snacks/meat/monkey = 10) @@ -31,6 +34,9 @@ icon = 'icons/obj/closets/fridge.dmi' closet_appearance = null + open_sound = 'sound/machines/kitchen/fridge/open_fridge.ogg' // CHOMPEdit: Fridge sounds~ + close_sound = 'sound/machines/kitchen/fridge/close_fridge.ogg' // CHOMPEdit: Fridge sounds~ + starts_with = list( /obj/item/weapon/reagent_containers/food/drinks/milk = 6, /obj/item/weapon/reagent_containers/food/drinks/soymilk = 4, diff --git a/code/modules/client/preference_setup/global/setting_datums.dm b/code/modules/client/preference_setup/global/setting_datums.dm index dc4e0ebf1e..d229bf8afe 100644 --- a/code/modules/client/preference_setup/global/setting_datums.dm +++ b/code/modules/client/preference_setup/global/setting_datums.dm @@ -163,6 +163,12 @@ var/list/_client_preferences_by_type enabled_description = "Audible" disabled_description = "Silent" +/datum/client_preference/fridge_hum // CHOMPStation Add: Misc Sounds + description ="Fridge Humming" + key = "SOUND_FRIDGEHUM" + enabled_description = "Audible" + disabled_description = "Silent" + /datum/client_preference/old_door_sounds description ="Old Door Sounds" key = "SOUND_OLDDOORS" diff --git a/code/modules/food/kitchen/smartfridge/smartfridge.dm b/code/modules/food/kitchen/smartfridge/smartfridge.dm index c683bf9a60..0e767b41d7 100644 --- a/code/modules/food/kitchen/smartfridge/smartfridge.dm +++ b/code/modules/food/kitchen/smartfridge/smartfridge.dm @@ -24,6 +24,9 @@ var/datum/wires/smartfridge/wires = null var/persistent = null // Path of persistence datum used to track contents + var/datum/looping_sound/fridge/soundloop // CHOMPEdit: Fridges hum! + var/playing_sound = FALSE // CHOMPEdit: Fridges hum! + /obj/machinery/smartfridge/secure is_secure = 1 @@ -35,6 +38,8 @@ wires = new/datum/wires/smartfridge/secure(src) else wires = new/datum/wires/smartfridge(src) + + soundloop = new(list(src), FALSE) // CHOMPEdit: Fridge hum! update_icon() /obj/machinery/smartfridge/Destroy() @@ -44,6 +49,7 @@ wires = null if(persistent) SSpersistence.forget_value(src, persistent) + QDEL_NULL(soundloop) // CHOMPEdit: Fridge hum! return ..() /obj/machinery/smartfridge/proc/accept_check(var/obj/item/O as obj) @@ -51,7 +57,12 @@ /obj/machinery/smartfridge/process() if(stat & (BROKEN|NOPOWER)) + soundloop.stop() // CHOMPEdit: Fridges don't hum while they lack power. + playing_sound = FALSE // CHOMPEdit: Fridges don't hum while they lack power. return + if(!playing_sound && !stat) // CHOMPEdit: Fridges hum while they have power. + soundloop.start() + playing_sound = TRUE if(src.seconds_electrified > 0) src.seconds_electrified-- if(src.shoot_inventory && prob(2)) @@ -62,6 +73,14 @@ ..() if(old_stat != stat) update_icon() + // CHOMPEdit Start: Fridge hum + if(stat & (NOPOWER | BROKEN)) + soundloop.stop() + playing_sound = FALSE + else + soundloop.start() + playing_sound = TRUE + // CHOMPEdit End /obj/machinery/smartfridge/update_icon() cut_overlays() diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 8b6f2576e3..1fbbcf9408 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -95,7 +95,7 @@ playsound(src, species.death_sound, 80, 1, 1) */ if(!gibbed && !isbelly(loc)) - playsound(src, pick(get_species_sound(get_gendered_sound(src))["death"]), src.species.death_volume, 1, 20, volume_channel = VOLUME_CHANNEL_SPECIES_SOUNDS) + playsound(src, pick(get_species_sound(get_gendered_sound(src))["death"]), src.species.death_volume, 1, 20, volume_channel = VOLUME_CHANNEL_DEATH_SOUNDS) // CHOMPEdit End if(ticker && ticker.mode) diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 90c0b8f42b..9cfa3582b2 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -29,10 +29,10 @@ // CHOMPStation Edit: All mobs can play a death_sound if set. On carbons, this is going to be handled by species. if(!gibbed && !isbelly(loc)) if(src.death_sound_override) // Do we override the death sounds from our species list - used by only a few specific mobs. If we do, do the next one instead - playsound(src, death_sound_override, 50, 1, 20, volume_channel = VOLUME_CHANNEL_SPECIES_SOUNDS) + playsound(src, death_sound_override, 50, 1, 20, volume_channel = VOLUME_CHANNEL_DEATH_SOUNDS) else if(!ishuman(src)) // Safety, we're not going to double up on death noises if we're not human. - playsound(src, pick(get_species_sound(get_gendered_sound(src))["death"]), 50, 1, 20, volume_channel = VOLUME_CHANNEL_SPECIES_SOUNDS) + playsound(src, pick(get_species_sound(get_gendered_sound(src))["death"]), 50, 1, 20, volume_channel = VOLUME_CHANNEL_DEATH_SOUNDS) // CHOMPStation Add End . = ..() diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 86a9afb81e..c12bc4a9c5 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -135,16 +135,20 @@ if(stunned) AdjustStunned(-1) throw_alert("stunned", /obj/screen/alert/stunned) + stunnedloop.start() // CHOMPAdd: Stunned Loop else clear_alert("stunned") + stunnedloop.stop() // CHOMPAdd: Stunned Loop return stunned /mob/living/proc/handle_weakened() if(weakened) AdjustWeakened(-1) throw_alert("weakened", /obj/screen/alert/weakened) + stunnedloop.start() // CHOMPAdd: Stunned Loop else clear_alert("weakened") + stunnedloop.stop() // CHOMPAdd: Stunned Loop return weakened /mob/living/proc/handle_stuttering() diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index c86f4ee3b7..e1a3e02d15 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -403,6 +403,7 @@ new/obj/effect/dummy/lighting_obj/moblight/fire(src) throw_alert("fire", /obj/screen/alert/fire) update_fire() + firesoundloop.start() /mob/living/proc/ExtinguishMob() if(on_fire) @@ -412,6 +413,7 @@ qdel(F) clear_alert("fire") update_fire() + firesoundloop.stop() if(has_modifier_of_type(/datum/modifier/fire)) remove_modifiers_of_type(/datum/modifier/fire) diff --git a/code/modules/modular_computers/NTNet/NTNet_relay.dm b/code/modules/modular_computers/NTNet/NTNet_relay.dm index 8da5a9972f..6002014f42 100644 --- a/code/modules/modular_computers/NTNet/NTNet_relay.dm +++ b/code/modules/modular_computers/NTNet/NTNet_relay.dm @@ -19,6 +19,9 @@ var/dos_capacity = 500 // Amount of DoS "packets" in buffer required to crash the relay var/dos_dissipate = 1 // Amount of DoS "packets" dissipated over time. + var/datum/looping_sound/tcomms/soundloop // CHOMPStation Add: Hummy noises + var/noisy = TRUE // CHOMPStation Add: Hummy noises + // TODO: Implement more logic here. For now it's only a placeholder. /obj/machinery/ntnet_relay/operable() @@ -33,8 +36,13 @@ /obj/machinery/ntnet_relay/update_icon() if(operable()) icon_state = initial(icon_state) + if(!noisy) + soundloop.start() // CHOMPStation Add: Hummy noises + noisy = TRUE // CHOMPStation Add: Hummy noises else icon_state = "[initial(icon_state)]_off" + soundloop.stop() // CHOMPStation Add: Hummy noises + noisy = FALSE // CHOMPStation Add: Hummy noises /obj/machinery/ntnet_relay/process() if(operable()) @@ -106,6 +114,20 @@ ntnet_global.relays.Add(src) NTNet = ntnet_global ntnet_global.add_log("New quantum relay activated. Current amount of linked relays: [NTNet.relays.len]") + // CHOMPAdd: PDA Multicaster Server humming + soundloop = new(list(src), FALSE) + if(prob(60)) // 60% chance to change the midloop + if(prob(40)) + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_02.ogg' = 1) + soundloop.mid_length = 40 + else if(prob(20)) + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_03.ogg' = 1) + soundloop.mid_length = 10 + else + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_04.ogg' = 1) + soundloop.mid_length = 30 + soundloop.start() // Have to do this here bc it starts on + // CHOMPAdd End /obj/machinery/ntnet_relay/Destroy() if(ntnet_global) @@ -115,6 +137,7 @@ for(var/datum/computer_file/program/ntnet_dos/D in dos_sources) D.target = null D.error = "Connection to quantum relay severed" + QDEL_NULL(soundloop) . = ..() /obj/machinery/ntnet_relay/attackby(var/obj/item/W as obj, var/mob/user as mob) diff --git a/code/modules/modular_computers/computers/modular_computer/core.dm b/code/modules/modular_computers/computers/modular_computer/core.dm index 827b7204f8..9335a7df24 100644 --- a/code/modules/modular_computers/computers/modular_computer/core.dm +++ b/code/modules/modular_computers/computers/modular_computer/core.dm @@ -86,9 +86,9 @@ . += emissive_appearance(overlay_icon, icon_state_screensaver) set_light(0) return add_overlay(.) - + set_light(light_strength) - + if(active_program) var/program_state = active_program.program_icon_state ? active_program.program_icon_state : icon_state_menu . += mutable_appearance(overlay_icon, program_state) @@ -98,7 +98,7 @@ else . += mutable_appearance(overlay_icon, icon_state_menu) . += emissive_appearance(overlay_icon, icon_state_menu) - + return add_overlay(.) /obj/item/modular_computer/proc/turn_on(var/mob/user) @@ -119,6 +119,7 @@ else to_chat(user, "You press the power button and start up \the [src]") enable_computer(user) + playsound(src, 'modular_chomp/sound/machines/console_power_on.ogg', 60, 1, volume_channel = VOLUME_CHANNEL_MACHINERY) else // Unpowered if(issynth) @@ -297,4 +298,4 @@ if(hard_drive) . = hard_drive.find_file_by_uid(uid) if(portable_drive && !.) - . = portable_drive.find_file_by_uid(uid) \ No newline at end of file + . = portable_drive.find_file_by_uid(uid) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 416734eae9..920142f11b 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -57,6 +57,11 @@ GLOBAL_LIST_EMPTY(smeses) var/should_be_mapped = 0 // If this is set to 0 it will send out warning on New() var/grid_check = FALSE // If true, suspends all I/O. + // CHOMPAdd: More humming noises + var/datum/looping_sound/generator/soundloop + var/noisy = FALSE + // CHOMPAdd End + /obj/machinery/power/smes/drain_power(var/drain_check, var/surge, var/amount = 0) if(drain_check) @@ -70,6 +75,9 @@ GLOBAL_LIST_EMPTY(smeses) . = ..() GLOB.smeses += src add_nearby_terminals() + soundloop = new(list(src), FALSE) // CHOMPEdit: hmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm + soundloop.extra_range = -3 // CHOMPEdit: Doing this here bc we're reusing the generator hum, and can't directly edit that one + soundloop.opacity_check = TRUE // CHOMPEdit: Doing this here bc we're reusing the generator hum, and can't directly edit that one. This is expensive, but we need it to not be annoying. if(!check_terminals()) stat |= BROKEN return @@ -84,6 +92,7 @@ GLOBAL_LIST_EMPTY(smeses) T.master = null terminals = null GLOB.smeses -= src + QDEL_NULL(soundloop) return ..() /obj/machinery/power/smes/proc/add_nearby_terminals() @@ -154,7 +163,10 @@ GLOBAL_LIST_EMPTY(smeses) charge -= amount*SMESRATE /obj/machinery/power/smes/process() - if(stat & BROKEN) return + if(stat & BROKEN) + soundloop.stop() + noisy = FALSE + return // only update icon if state changed if(last_disp != chargedisplay() || last_chrg != inputting || last_onln != outputting) @@ -191,6 +203,17 @@ GLOBAL_LIST_EMPTY(smeses) else output_used = 0 + if(!noisy && outputting) // Are we actually outputting power? + soundloop.start() + noisy = TRUE + if(noisy && outputting) + // Capped to 80 volume since higher volumes get annoying and it sounds worse. + // Formula previously was min(round(power/10)+1, 20) + soundloop.volume = CLAMP((output_used / 1000), 1, 80) + if(!outputting) + soundloop.stop() + noisy = FALSE + // called after all power processes are finished // restores charge level to smes if there was excess this ptick /obj/machinery/power/smes/proc/restore(var/percent_load) @@ -511,4 +534,4 @@ GLOBAL_LIST_EMPTY(smeses) // Description: Sets output setting on this SMES. Trims it if limits are exceeded. /obj/machinery/power/smes/proc/set_output(var/new_output = 0) output_level = between(0, new_output, output_level_max) - update_icon() \ No newline at end of file + update_icon() diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index 2c8918e401..adfbef6938 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -70,15 +70,33 @@ var/global/list/obj/machinery/message_server/message_servers = list() //Messages having theese tokens will be rejected by server. Case sensitive var/spamfilter_limit = MESSAGE_SERVER_DEFAULT_SPAM_LIMIT //Maximal amount of tokens + var/datum/looping_sound/tcomms/soundloop // CHOMPStation Add: Hummy noises + var/noisy = FALSE // CHOMPStation Add: Hummy noises + /obj/machinery/message_server/New() message_servers += src decryptkey = GenerateKey() send_pda_message("System Administrator", "system", "This is an automated message. The messaging system is functioning correctly.") + + // CHOMPAdd: PDA Messaging Server humming + soundloop = new(list(src), FALSE) + if(prob(60)) // 60% chance to change the midloop + if(prob(40)) + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_02.ogg' = 1) + soundloop.mid_length = 40 + else if(prob(20)) + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_03.ogg' = 1) + soundloop.mid_length = 10 + else + soundloop.mid_sounds = list('sound/machines/tcomms/tcomms_04.ogg' = 1) + soundloop.mid_length = 30 + // CHOMPAdd End ..() return /obj/machinery/message_server/Destroy() message_servers -= src + QDEL_NULL(soundloop) // CHOMPStation Add: Hummy noises ..() return @@ -99,7 +117,12 @@ var/global/list/obj/machinery/message_server/message_servers = list() // decryptkey = generateKey() if(active && (stat & (BROKEN|NOPOWER))) active = 0 + soundloop.stop() // CHOMPStation Add: Hummy noises + noisy = FALSE // CHOMPStation Add: Hummy noises return + if(!noisy && active) // CHOMPStation Add: Hummy noises + soundloop.start() // CHOMPStation Add: Hummy noises + noisy = TRUE // CHOMPStation Add: Hummy noises update_icon() return diff --git a/code/modules/shieldgen/shield_gen.dm b/code/modules/shieldgen/shield_gen.dm index 2617d6c28f..edfe05e5c4 100644 --- a/code/modules/shieldgen/shield_gen.dm +++ b/code/modules/shieldgen/shield_gen.dm @@ -25,6 +25,7 @@ use_power = USE_POWER_OFF //doesn't use APC power interact_offline = TRUE // don't check stat & NOPOWER|BROKEN for our UI. We check BROKEN ourselves. var/id //for button usage + var/datum/looping_sound/shield_generator/shield_hum /obj/machinery/shield_gen/advanced name = "advanced bubble shield generator" @@ -41,10 +42,12 @@ if(get_dir(cap, src) == cap.dir) capacitors |= cap cap.owned_gen = src + shield_hum = new(list(src), FALSE) return ..() /obj/machinery/shield_gen/Destroy() QDEL_LIST_NULL(field) + QDEL_NULL(shield_hum) return ..() /obj/machinery/shield_gen/emag_act(var/remaining_charges, var/mob/user) @@ -245,6 +248,7 @@ to_chat(M, "\icon[src][bicon(src)] You hear heavy droning start up.") for(var/obj/effect/energy_field/E in field) // Update the icons here to ensure all the shields have been made already. E.update_icon() + shield_hum.start() else for(var/obj/effect/energy_field/D in field) field.Remove(D) @@ -253,11 +257,13 @@ for(var/mob/M in view(5,src)) to_chat(M, "\icon[src][bicon(src)] You hear heavy droning fade out.") + shield_hum.stop() /obj/machinery/shield_gen/update_icon() if(stat & BROKEN) icon_state = "broke" set_light(0) + shield_hum.stop() else if (src.active) icon_state = "generator1" diff --git a/modular_chomp/code/modules/mob/living/living.dm b/modular_chomp/code/modules/mob/living/living.dm index 76c36f6309..23b139236f 100644 --- a/modular_chomp/code/modules/mob/living/living.dm +++ b/modular_chomp/code/modules/mob/living/living.dm @@ -11,6 +11,8 @@ var/species_sounds = "None" // By default, we have nothing. var/death_sound_override = null var/virtual_reality_mob = FALSE // gross boolean for keeping VR mobs in VR + var/datum/looping_sound/mob/on_fire/firesoundloop + var/datum/looping_sound/mob/stunned/stunnedloop /* // Not sure if needed, screams aren't a carbon thing rn. var/scream_sound = null var/female_scream_sound = null @@ -22,11 +24,23 @@ . = ..() deaf_loop = new(list(src), FALSE) + firesoundloop = new(list(src), FALSE) + stunnedloop = new(list(src), FALSE) + if(firesoundloop) // Partly safety, partly so we can have different probs for randomization + if(prob(40)) // Randomize our end_sound. Can't really do this easily in looping_sound without some work + if(prob(30)) + firesoundloop.end_sound = 'sound/effects/mob_effects/on_fire/fire_extinguish2.ogg' + else if(prob(20)) + firesoundloop.end_sound = 'sound/effects/mob_effects/on_fire/fire_extinguish3.ogg' + else + firesoundloop.end_sound = 'sound/effects/mob_effects/on_fire/fire_extinguish4.ogg' /mob/living/Destroy() . = ..() QDEL_NULL(deaf_loop) + QDEL_NULL(firesoundloop) + QDEL_NULL(stunnedloop) /mob/living/proc/vs_animate(var/belly_to_animate) return diff --git a/modular_chomp/sound/effects/comp_alert_clear.ogg b/modular_chomp/sound/effects/comp_alert_clear.ogg new file mode 100644 index 0000000000..9bbce3892b Binary files /dev/null and b/modular_chomp/sound/effects/comp_alert_clear.ogg differ diff --git a/modular_chomp/sound/effects/comp_alert_major.ogg b/modular_chomp/sound/effects/comp_alert_major.ogg new file mode 100644 index 0000000000..093bb58016 Binary files /dev/null and b/modular_chomp/sound/effects/comp_alert_major.ogg differ diff --git a/modular_chomp/sound/effects/comp_alert_minor.ogg b/modular_chomp/sound/effects/comp_alert_minor.ogg new file mode 100644 index 0000000000..94d60aa81a Binary files /dev/null and b/modular_chomp/sound/effects/comp_alert_minor.ogg differ diff --git a/modular_chomp/sound/machines/console_power_on.ogg b/modular_chomp/sound/machines/console_power_on.ogg new file mode 100644 index 0000000000..3d57a202cd Binary files /dev/null and b/modular_chomp/sound/machines/console_power_on.ogg differ diff --git a/modular_chomp/sound/machines/shield_hum/shield_generator_hum1.ogg b/modular_chomp/sound/machines/shield_hum/shield_generator_hum1.ogg new file mode 100644 index 0000000000..c02d0dcbfa Binary files /dev/null and b/modular_chomp/sound/machines/shield_hum/shield_generator_hum1.ogg differ diff --git a/modular_chomp/sound/machines/shield_hum/shield_generator_hum2.ogg b/modular_chomp/sound/machines/shield_hum/shield_generator_hum2.ogg new file mode 100644 index 0000000000..84682a7d93 Binary files /dev/null and b/modular_chomp/sound/machines/shield_hum/shield_generator_hum2.ogg differ diff --git a/modular_chomp/sound/machines/shield_hum/shield_generator_hum3.ogg b/modular_chomp/sound/machines/shield_hum/shield_generator_hum3.ogg new file mode 100644 index 0000000000..d082b6219d Binary files /dev/null and b/modular_chomp/sound/machines/shield_hum/shield_generator_hum3.ogg differ diff --git a/modular_chomp/sound/machines/shield_hum/shield_generator_hum4.ogg b/modular_chomp/sound/machines/shield_hum/shield_generator_hum4.ogg new file mode 100644 index 0000000000..a2a217341e Binary files /dev/null and b/modular_chomp/sound/machines/shield_hum/shield_generator_hum4.ogg differ diff --git a/modular_chomp/sound/machines/shield_hum/shield_generator_whir.ogg b/modular_chomp/sound/machines/shield_hum/shield_generator_whir.ogg new file mode 100644 index 0000000000..f4cb4230d6 Binary files /dev/null and b/modular_chomp/sound/machines/shield_hum/shield_generator_whir.ogg differ diff --git a/sound/effects/mob_effects/on_fire/fire_extinguish.ogg b/sound/effects/mob_effects/on_fire/fire_extinguish.ogg new file mode 100644 index 0000000000..749e5975fb Binary files /dev/null and b/sound/effects/mob_effects/on_fire/fire_extinguish.ogg differ diff --git a/sound/effects/mob_effects/on_fire/fire_extinguish2.ogg b/sound/effects/mob_effects/on_fire/fire_extinguish2.ogg new file mode 100644 index 0000000000..85f104d8ac Binary files /dev/null and b/sound/effects/mob_effects/on_fire/fire_extinguish2.ogg differ diff --git a/sound/effects/mob_effects/on_fire/fire_extinguish3.ogg b/sound/effects/mob_effects/on_fire/fire_extinguish3.ogg new file mode 100644 index 0000000000..e26937d7f2 Binary files /dev/null and b/sound/effects/mob_effects/on_fire/fire_extinguish3.ogg differ diff --git a/sound/effects/mob_effects/on_fire/fire_extinguish4.ogg b/sound/effects/mob_effects/on_fire/fire_extinguish4.ogg new file mode 100644 index 0000000000..121d22de73 Binary files /dev/null and b/sound/effects/mob_effects/on_fire/fire_extinguish4.ogg differ diff --git a/sound/effects/mob_effects/on_fire/on_fire_loop.ogg b/sound/effects/mob_effects/on_fire/on_fire_loop.ogg new file mode 100644 index 0000000000..40a334566c Binary files /dev/null and b/sound/effects/mob_effects/on_fire/on_fire_loop.ogg differ diff --git a/sound/effects/mob_effects/stun_loop.ogg b/sound/effects/mob_effects/stun_loop.ogg new file mode 100644 index 0000000000..28a7e794c2 Binary files /dev/null and b/sound/effects/mob_effects/stun_loop.ogg differ diff --git a/sound/machines/kitchen/fridge/close_fridge.ogg b/sound/machines/kitchen/fridge/close_fridge.ogg new file mode 100644 index 0000000000..f8ee3ab8aa Binary files /dev/null and b/sound/machines/kitchen/fridge/close_fridge.ogg differ diff --git a/sound/machines/kitchen/fridge/fridge_loop.ogg b/sound/machines/kitchen/fridge/fridge_loop.ogg new file mode 100644 index 0000000000..dcd112f8ee Binary files /dev/null and b/sound/machines/kitchen/fridge/fridge_loop.ogg differ diff --git a/sound/machines/kitchen/fridge/open_fridge.ogg b/sound/machines/kitchen/fridge/open_fridge.ogg new file mode 100644 index 0000000000..0ac523eefe Binary files /dev/null and b/sound/machines/kitchen/fridge/open_fridge.ogg differ diff --git a/sound/machines/tcomms/tcomms_01.ogg b/sound/machines/tcomms/tcomms_01.ogg new file mode 100644 index 0000000000..3e877371b6 Binary files /dev/null and b/sound/machines/tcomms/tcomms_01.ogg differ diff --git a/sound/machines/tcomms/tcomms_02.ogg b/sound/machines/tcomms/tcomms_02.ogg new file mode 100644 index 0000000000..fc8a6a5191 Binary files /dev/null and b/sound/machines/tcomms/tcomms_02.ogg differ diff --git a/sound/machines/tcomms/tcomms_03.ogg b/sound/machines/tcomms/tcomms_03.ogg new file mode 100644 index 0000000000..a22a3575f0 Binary files /dev/null and b/sound/machines/tcomms/tcomms_03.ogg differ diff --git a/sound/machines/tcomms/tcomms_04.ogg b/sound/machines/tcomms/tcomms_04.ogg new file mode 100644 index 0000000000..15ec8a342e Binary files /dev/null and b/sound/machines/tcomms/tcomms_04.ogg differ diff --git a/sound/machines/tcomms/tcomms_pulse.ogg b/sound/machines/tcomms/tcomms_pulse.ogg new file mode 100644 index 0000000000..bdc44e991a Binary files /dev/null and b/sound/machines/tcomms/tcomms_pulse.ogg differ diff --git a/sound/weapons/frigate_turret/frigate_turret_fire1.ogg b/sound/weapons/frigate_turret/frigate_turret_fire1.ogg new file mode 100644 index 0000000000..a6321ec4ae Binary files /dev/null and b/sound/weapons/frigate_turret/frigate_turret_fire1.ogg differ diff --git a/sound/weapons/frigate_turret/frigate_turret_fire2.ogg b/sound/weapons/frigate_turret/frigate_turret_fire2.ogg new file mode 100644 index 0000000000..1915c88a11 Binary files /dev/null and b/sound/weapons/frigate_turret/frigate_turret_fire2.ogg differ diff --git a/sound/weapons/frigate_turret/frigate_turret_fire3.ogg b/sound/weapons/frigate_turret/frigate_turret_fire3.ogg new file mode 100644 index 0000000000..ba6f1c9304 Binary files /dev/null and b/sound/weapons/frigate_turret/frigate_turret_fire3.ogg differ diff --git a/sound/weapons/frigate_turret/frigate_turret_fire4.ogg b/sound/weapons/frigate_turret/frigate_turret_fire4.ogg new file mode 100644 index 0000000000..61f7dfc5cb Binary files /dev/null and b/sound/weapons/frigate_turret/frigate_turret_fire4.ogg differ