diff --git a/code/datums/looping_sounds/alarm_sounds.dm b/code/datums/looping_sounds/alarm_sounds.dm index 77dc97a6d8..9e4ce79970 100644 --- a/code/datums/looping_sounds/alarm_sounds.dm +++ b/code/datums/looping_sounds/alarm_sounds.dm @@ -1,55 +1,56 @@ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/datum/looping_sound/fire_alarm // Commented out start/end as I don't feel they're very fitting +/datum/looping_sound/alarm + volume_chan = VOLUME_CHANNEL_ALARMS + pref_check = /datum/client_preference/looping_alarms + +/datum/looping_sound/alarm/fire_alarm // Commented out start/end as I don't feel they're very fitting // start_sound = 'sound/effects/alarms/fire_alarm/fire_alarm_start.ogg' // start_length = 40 mid_sounds = list('sound/effects/alarms/fire_alarm/fire_alarm_mid.ogg' = 1) - mid_length = 20 + mid_length = 6 SECONDS // Exact loop, these things should be constantly running while there's a fire actively going // end_sound = 'sound/effects/alarms/fire_alarm/fire_alarm_stop.ogg' volume = 30 - pref_check = /datum/client_preference/looping_alarms + extra_range = 60 // Alarms should be clearly heard from far away /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/datum/looping_sound/decompression_alarm +/datum/looping_sound/alarm/decompression_alarm mid_sounds = list('sound/effects/alarms/decon_alarm.ogg'=1) - mid_length = 60 + mid_length = 4 SECONDS // Delay by 1 second so as to not spam it volume = 100 extra_range = 20 - pref_check = /datum/client_preference/looping_alarms /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/datum/looping_sound/ship_alarm +/datum/looping_sound/alarm/ship_alarm mid_sounds = list('sound/effects/alarms/ship_alarm.ogg'=1) mid_length = 20 volume = 60 extra_range = 10 - pref_check = /datum/client_preference/looping_alarms /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/datum/looping_sound/engineering_alarm +/datum/looping_sound/alarm/engineering_alarm mid_sounds = list('sound/effects/alarms/engineering_alarm.ogg'=1) mid_length = 30 volume = 15 - pref_check = /datum/client_preference/looping_alarms /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/datum/looping_sound/threat_level_high +/datum/looping_sound/alarm/threat_level_high mid_sounds = list('sound/effects/alarms/threat_level_high.ogg'=1) - mid_length = 30 + mid_length = 4 SECONDS volume = 60 - pref_check = /datum/client_preference/looping_alarms + extra_range = 40 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/datum/looping_sound/threat_level_extreme +/datum/looping_sound/alarm/threat_level_extreme mid_sounds = list('sound/effects/alarms/threat_level_extreme.ogg'=1) - mid_length = 30 + mid_length = 4 SECONDS volume = 60 - pref_check = /datum/client_preference/looping_alarms + extra_range = 40 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/game/machinery/air_alarm.dm b/code/game/machinery/air_alarm.dm index 845b58449c..934bbb50af 100644 --- a/code/game/machinery/air_alarm.dm +++ b/code/game/machinery/air_alarm.dm @@ -84,7 +84,7 @@ var/alarms_hidden = FALSE //If the alarms from this machine are visible on consoles - var/datum/looping_sound/decompression_alarm/soundloop + var/datum/looping_sound/alarm/decompression_alarm/soundloop /obj/machinery/alarm/nobreach breach_detection = 0 @@ -864,4 +864,4 @@ // CHOMPEdit END #undef LOAD_TLV_VALUES #undef TEST_TLV_VALUES -#undef DECLARE_TLV_VALUES \ No newline at end of file +#undef DECLARE_TLV_VALUES diff --git a/code/game/machinery/fire_alarm.dm b/code/game/machinery/fire_alarm.dm index a7e0da37f6..fbeda0c7fa 100644 --- a/code/game/machinery/fire_alarm.dm +++ b/code/game/machinery/fire_alarm.dm @@ -26,6 +26,8 @@ FIRE ALARM circuit = /obj/item/weapon/circuitboard/firealarm var/alarms_hidden = FALSE //If the alarms from this machine are visible on consoles + var/datum/looping_sound/alarm/fire_alarm/soundloop + /obj/machinery/firealarm/alarms_hidden alarms_hidden = TRUE @@ -51,6 +53,12 @@ FIRE ALARM if(z in using_map.contact_levels) set_security_level(security_level ? get_security_level() : "green") + soundloop = new(list(src), FALSE) // Create soundloop + +/obj/machinery/firealarm/Destroy() + QDEL_NULL(soundloop) // Just clearing the loop here + return ..() + /obj/machinery/firealarm/proc/offset_alarm() pixel_x = (dir & 3) ? 0 : (dir == 4 ? 26 : -26) pixel_y = (dir & 3) ? (dir == 1 ? -26 : 26) : 0 @@ -88,14 +96,14 @@ FIRE ALARM if("blue") set_light(l_range = 2, l_power = 0.25, l_color = "#1024A9") if("red") set_light(l_range = 4, l_power = 0.9, l_color = "#ff0000") if("delta") set_light(l_range = 4, l_power = 0.9, l_color = "#FF6633") - + . += mutable_appearance(icon, fire_state) . += emissive_appearance(icon, fire_state) - + if(seclevel) . += mutable_appearance(icon, "overlay_[seclevel]") . += emissive_appearance(icon, "overlay_[seclevel]") - + add_overlay(.) /obj/machinery/firealarm/fire_act(datum/gas_mixture/air, temperature, volume) @@ -177,6 +185,7 @@ FIRE ALARM var/area/area = get_area(src) for(var/obj/machinery/firealarm/FA in area) fire_alarm.clearAlarm(src.loc, FA) + FA.soundloop.stop() update_icon() if(user) log_game("[user] reset a fire alarm at [COORD(src)]") @@ -187,8 +196,9 @@ FIRE ALARM var/area/area = get_area(src) for(var/obj/machinery/firealarm/FA in area) fire_alarm.triggerAlarm(loc, FA, duration, hidden = alarms_hidden) + FA.soundloop.start() update_icon() - playsound(src, 'sound/machines/airalarm.ogg', 25, 0, 4, volume_channel = VOLUME_CHANNEL_ALARMS) + // playsound(src, 'sound/machines/airalarm.ogg', 25, 0, 4, volume_channel = VOLUME_CHANNEL_ALARMS) if(user) log_game("[user] triggered a fire alarm at [COORD(src)]")