Makes Fire Alarms loop, replaces the old, jarring air alarm sound

Newer sound is easier on the ears and loops better. Yes, yes, we use the airalarm.ogg as actual fire alarms in most places, but it is so loud it's usually painful.
This commit is contained in:
Rykka Stormheart
2023-02-13 04:52:06 -08:00
parent c4924ec8f9
commit f74c221b0f
3 changed files with 33 additions and 22 deletions

View File

@@ -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
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@@ -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

View File

@@ -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
@@ -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)]")