diff --git a/code/datums/looping_sounds/alarm_sounds.dm b/code/datums/looping_sounds/alarm_sounds.dm index 9e4ce79970..4453de6de9 100644 --- a/code/datums/looping_sounds/alarm_sounds.dm +++ b/code/datums/looping_sounds/alarm_sounds.dm @@ -23,19 +23,11 @@ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -/datum/looping_sound/alarm/ship_alarm - mid_sounds = list('sound/effects/alarms/ship_alarm.ogg'=1) - mid_length = 20 - volume = 60 - extra_range = 10 - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - /datum/looping_sound/alarm/engineering_alarm mid_sounds = list('sound/effects/alarms/engineering_alarm.ogg'=1) mid_length = 30 - volume = 15 + volume = 20 + extra_range = 30 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -54,3 +46,17 @@ extra_range = 40 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/alarm/sm_critical_alarm + mid_sounds = list('sound/effects/alarms/crit_alarm.ogg'=1) + mid_length = 3 SECONDS + volume = 90 + extra_range = 40 + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/alarm/sm_causality_alarm + mid_sounds = list('sound/effects/alarms/causality_alarm.ogg'=1) + mid_length = 9 SECONDS + volume = 80 + extra_range = 60 diff --git a/code/datums/supplypacks/engineering.dm b/code/datums/supplypacks/engineering.dm index 0529f5aedd..2616d0fe6e 100644 --- a/code/datums/supplypacks/engineering.dm +++ b/code/datums/supplypacks/engineering.dm @@ -220,7 +220,7 @@ /datum/supply_pack/eng/smbig name = "Supermatter Core" - contains = list(/obj/machinery/power/supermatter) + contains = list(/obj/machinery/power/supermatter/station) // CHOMPEdit: Station SM for Cargo Orders cost = 150 containertype = /obj/structure/closet/crate/secure/phoron containername = "Supermatter crate (CAUTION)" diff --git a/code/game/machinery/fire_alarm.dm b/code/game/machinery/fire_alarm.dm index fbeda0c7fa..8c61bec690 100644 --- a/code/game/machinery/fire_alarm.dm +++ b/code/game/machinery/fire_alarm.dm @@ -26,7 +26,10 @@ 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 + var/datum/looping_sound/alarm/fire_alarm/soundloop // CHOMPEdit: Soundloops + var/datum/looping_sound/alarm/engineering_alarm/engalarm // CHOMPEdit: Soundloops + var/datum/looping_sound/alarm/sm_critical_alarm/critalarm // CHOMPEdit: Soundloops + var/datum/looping_sound/alarm/sm_causality_alarm/causality // CHOMPEdit: Soundloops /obj/machinery/firealarm/alarms_hidden alarms_hidden = TRUE @@ -53,10 +56,16 @@ 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 + soundloop = new(list(src), FALSE) // CHOMPEdit: Create soundloop + engalarm = new(list(src), FALSE) // CHOMPEdit: Create soundloop + critalarm = new(list(src), FALSE) // CHOMPEdit: Create soundloop + causality = new(list(src), FALSE) // CHOMPEdit: Create soundloop /obj/machinery/firealarm/Destroy() - QDEL_NULL(soundloop) // Just clearing the loop here + QDEL_NULL(soundloop) // CHOMPEdit: Just clearing the loop here + QDEL_NULL(engalarm) // CHOMPEdit: Clearing the loop here too + QDEL_NULL(critalarm) // CHOMPEdit: Clearing the loop here too + QDEL_NULL(causality) // CHOMPEdit: Clearing the loop here too return ..() /obj/machinery/firealarm/proc/offset_alarm() @@ -185,7 +194,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() + FA.soundloop.stop() // CHOMPEdit: Soundloop update_icon() if(user) log_game("[user] reset a fire alarm at [COORD(src)]") @@ -196,9 +205,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() + FA.soundloop.start() // CHOMPEdit: Soundloop 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) // CHOMPEdit: Disable as per soundloop if(user) log_game("[user] triggered a fire alarm at [COORD(src)]") diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index e1b41b602e..044b0e2fa9 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -451,6 +451,18 @@ var/global/list/light_type_cache = list() update() //VOREstation Edit End + +//CHOMPStation Edit Start +/obj/machinery/light/proc/set_alert_engineering() + if(!shows_alerts) + return + current_alert = "eng" + light_color = "#ff9900" + brightness_color = "#ff9900" + update() + +// CHOMPStation Edit End + // update lighting /obj/machinery/light/proc/update(var/trigger = 1) update_icon() diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 4687f79b94..c2fbbad018 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -114,12 +114,19 @@ var/datum/looping_sound/supermatter/soundloop + var/engwarn = 0 // CHOMPEdit: Looping Alarms + var/critwarn = 0 // CHOMPEdit: Looping Alarms + var/causalitywarn = 0 // CHOMPEdit: Looping Alarms + var/stationcrystal = FALSE // CHOMPEdit: Looping Alarms + /obj/machinery/power/supermatter/New() ..() uid = gl_uid++ /obj/machinery/power/supermatter/Initialize() soundloop = new(list(src), TRUE) + if(src.z in using_map.station_levels) // CHOMPEdit: Looping Alarms + stationcrystal = TRUE // CHOMPEdit: Looping Alarms return ..() /obj/machinery/power/supermatter/Destroy() @@ -174,6 +181,11 @@ anchored = TRUE grav_pulling = 1 exploded = 1 + // CHOMPEdit Start - Looping Alarms. We want to stop the alarm here. + if(stationcrystal) // Are we an on-station crystal? + addtimer(CALLBACK(src, .proc/reset_alarms), 10 SECONDS, TIMER_STOPPABLE) + // CHOMPEdit End + sleep(pull_time) var/turf/TS = get_turf(src) // The turf supermatter is on. SM being in a locker, exosuit, or other container shouldn't block it's effects that way. if(!istype(TS)) @@ -254,14 +266,36 @@ if(damage > emergency_point) alert_msg = emergency_alert + alert_msg lastwarning = world.timeofday - WARNING_DELAY * 4 + // CHOMPEdit Start + if(!critwarn) + if(src.z in using_map.station_levels) + for(var/obj/machinery/firealarm/candidate_alarm in global.machines) + var/area/our_area = get_area(candidate_alarm) + if(istype(our_area, /area/engineering)) + candidate_alarm.critalarm.start() + critwarn = 1 + // CHOMPEdit End else if(damage >= damage_archived) // The damage is still going up + // CHOMPEdit: Looping Alarms - we're not making a proc for initiating the alarms in this case. + if(!engwarn) + if(src.z in using_map.station_levels) + for(var/obj/machinery/firealarm/candidate_alarm in global.machines) + var/area/our_area = get_area(candidate_alarm) + if(istype(our_area, /area/engineering)) + for(var/obj/machinery/light/L in our_area) + L.set_alert_engineering() + candidate_alarm.engalarm.start() + engwarn = 1 // So we don't repeatedly try and start over the soundloop/etc + // CHOMPEdit End safe_warned = 0 alert_msg = warning_alert + alert_msg lastwarning = world.timeofday + else if(!safe_warned) safe_warned = 1 // We are safe, warn only once alert_msg = safe_alert lastwarning = world.timeofday + reset_alarms() // CHOMPEdit: Looping Alarms else alert_msg = null if(alert_msg) @@ -407,6 +441,15 @@ /obj/machinery/power/supermatter/proc/countdown() set waitfor = FALSE + if(!final_countdown) + if(!causalitywarn) + if(src.z in using_map.station_levels) + for(var/obj/machinery/firealarm/candidate_alarm in global.machines) + var/area/our_area = get_area(candidate_alarm) + if(istype(our_area, /area/engineering)) + candidate_alarm.causality.start() + causalitywarn = 1 + if(final_countdown) // We're already doing it go away return final_countdown = TRUE @@ -588,3 +631,21 @@ /obj/item/broken_sm/Destroy() STOP_PROCESSING(SSobj, src) return ..() + +// CHOMP Edit Start +/obj/machinery/power/supermatter/station + stationcrystal = TRUE + +/obj/machinery/power/supermatter/proc/reset_alarms() + for(var/obj/machinery/firealarm/candidate_alarm in global.machines) + var/area/our_area = get_area(candidate_alarm) + if(istype(our_area, /area/engineering)) + for(var/obj/machinery/light/L in our_area) + L.reset_alert() + candidate_alarm.engalarm.stop() + candidate_alarm.causality.stop() // Somehow, in case they reset the alarms and fix the SM. + candidate_alarm.critalarm.stop() + engwarn = 0 + critwarn = 0 + causalitywarn = 0 +// CHOMPEdit End diff --git a/icons/obj/lighting_vr.dmi b/icons/obj/lighting_vr.dmi index 293cedfdc7..3431caf5d8 100644 Binary files a/icons/obj/lighting_vr.dmi and b/icons/obj/lighting_vr.dmi differ diff --git a/sound/effects/alarms/causality_alarm.ogg b/sound/effects/alarms/causality_alarm.ogg new file mode 100644 index 0000000000..081a9e221d Binary files /dev/null and b/sound/effects/alarms/causality_alarm.ogg differ diff --git a/sound/effects/alarms/crit_alarm.ogg b/sound/effects/alarms/crit_alarm.ogg new file mode 100644 index 0000000000..1ba4e8e865 Binary files /dev/null and b/sound/effects/alarms/crit_alarm.ogg differ diff --git a/sound/effects/alarms/door_alarm.ogg b/sound/effects/alarms/door_alarm.ogg deleted file mode 100644 index 25d732b8ca..0000000000 Binary files a/sound/effects/alarms/door_alarm.ogg and /dev/null differ diff --git a/sound/effects/alarms/apex_alarm.ogg b/sound/effects/alarms/sec_alarm.ogg similarity index 100% rename from sound/effects/alarms/apex_alarm.ogg rename to sound/effects/alarms/sec_alarm.ogg diff --git a/sound/effects/alarms/ship_alarm.ogg b/sound/effects/alarms/ship_alarm.ogg deleted file mode 100644 index f5c9d077b8..0000000000 Binary files a/sound/effects/alarms/ship_alarm.ogg and /dev/null differ diff --git a/vorestation.dme b/vorestation.dme index a9c04a59d3..f3b3fa3957 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -405,8 +405,8 @@ #include "code\datums\locations\uueoa_esa.dm" #include "code\datums\locations\vir.dm" #include "code\datums\looping_sounds\_looping_sound.dm" -#include "code\datums\looping_sounds\environment_sounds.dm" #include "code\datums\looping_sounds\alarm_sounds.dm" +#include "code\datums\looping_sounds\environment_sounds.dm" #include "code\datums\looping_sounds\item_sounds.dm" #include "code\datums\looping_sounds\machinery_sounds.dm" #include "code\datums\looping_sounds\sequence.dm"