From cc96e93bf3aa959b479baee9e572186af9fca99f Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Sat, 11 Jul 2020 15:48:47 -0400 Subject: [PATCH] fixes --- code/controllers/subsystem/alarm.dm | 2 +- code/game/area/areas.dm | 10 +++++----- code/game/machinery/alarm.dm | 4 +++- code/game/machinery/firealarm.dm | 4 ++-- code/modules/power/apc.dm | 15 ++++++++++----- 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/code/controllers/subsystem/alarm.dm b/code/controllers/subsystem/alarm.dm index 9e310909120..62267e1ff4e 100644 --- a/code/controllers/subsystem/alarm.dm +++ b/code/controllers/subsystem/alarm.dm @@ -1,7 +1,7 @@ SUBSYSTEM_DEF(alarm) name = "Alarm" flags = SS_NO_INIT | SS_NO_FIRE - var/alarms = list("Motion" = list(), "Fire" = list(), "Atmosphere" = list(), "Power" = list(), "Camera" = list(), "Burglar" = list()) + var/list/alarms = list("Motion" = list(), "Fire" = list(), "Atmosphere" = list(), "Power" = list(), "Camera" = list(), "Burglar" = list()) /datum/controller/subsystem/alarm/proc/triggerAlarm(class, area/A, list/O, obj/alarmsource) var/list/L = alarms[class] diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 9e3dd435a28..3c47082d8b5 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -170,7 +170,7 @@ if(istype(source)) //Only report power alarms on the z-level where the source is located. for(var/thing in cameras) var/obj/machinery/camera/C = locateUID(thing) - if(!QDELETED(C)) + if(!QDELETED(C) && is_station_level(C.z)) if(state == 1) C.network -= "Power Alarms" else @@ -192,7 +192,7 @@ for(var/thing in cameras) var/obj/machinery/camera/C = locateUID(thing) - if(!QDELETED(C)) + if(!QDELETED(C) && is_station_level(C.z)) C.network |= "Atmosphere Alarms" @@ -201,7 +201,7 @@ else if(atmosalm == ATMOS_ALARM_DANGER) for(var/thing in cameras) var/obj/machinery/camera/C = locateUID(thing) - if(!QDELETED(C)) + if(!QDELETED(C) && is_station_level(C.z)) C.network -= "Atmosphere Alarms" SSalarm.cancelAlarm("Atmosphere", src, source) @@ -251,7 +251,7 @@ for(var/thing in cameras) var/obj/machinery/camera/C = locateUID(thing) - if(!QDELETED(C)) + if(!QDELETED(C) && is_station_level(C.z)) C.network |= "Fire Alarms" SSalarm.triggerAlarm("Fire", src, cameras, source) @@ -276,7 +276,7 @@ for(var/thing in cameras) var/obj/machinery/camera/C = locateUID(thing) - if(!QDELETED(C)) + if(!QDELETED(C) && is_station_level(C.z)) C.network -= "Fire Alarms" SSalarm.cancelAlarm("Fire", src, source) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 11e67fd1678..5561327573d 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -539,12 +539,14 @@ for(var/obj/machinery/alarm/AA in alarm_area) if(!(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted) new_area_danger_level = max(new_area_danger_level, AA.danger_level) - if(report_danger_level && alarm_area.atmosalert(new_area_danger_level, src)) //if area was in normal state or if area was in alert state + if(alarm_area.atmosalert(new_area_danger_level, src)) //if area was in normal state or if area was in alert state post_alert(new_area_danger_level) update_icon() /obj/machinery/alarm/proc/post_alert(alert_level) + if(!report_danger_level) + return var/datum/radio_frequency/frequency = SSradio.return_frequency(alarm_frequency) if(!frequency) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 03cb622c8e9..b387f404d8c 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -300,13 +300,13 @@ FIRE ALARM time = min(max(round(time), 0), 120) /obj/machinery/firealarm/proc/reset() - if(!working) + if(!working || !report_fire_alarms) return var/area/A = get_area(src) A.firereset(src) /obj/machinery/firealarm/proc/alarm() - if(!working) + if(!working || !report_fire_alarms) return var/area/A = get_area(src) A.firealert(src) // Manually trigger alarms if the alarm isn't reported diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 279fe4b1a1f..a457b6e6b9d 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1190,27 +1190,31 @@ lighting = autoset(lighting, 1) environ = autoset(environ, 1) autoflag = 3 - area.poweralert(1, src) + if(report_power_alarm) + area.poweralert(1, src) else if(cell.charge < 1250 && cell.charge > 750 && longtermpower < 0) // <30%, turn off equipment if(autoflag != 2) equipment = autoset(equipment, 2) lighting = autoset(lighting, 1) environ = autoset(environ, 1) - area.poweralert(0, src) + if(report_power_alarm) + area.poweralert(0, src) autoflag = 2 else if(cell.charge < 750 && cell.charge > 10) // <15%, turn off lighting & equipment if((autoflag > 1 && longtermpower < 0) || (autoflag > 1 && longtermpower >= 0)) equipment = autoset(equipment, 2) lighting = autoset(lighting, 2) environ = autoset(environ, 1) - area.poweralert(0, src) + if(report_power_alarm) + area.poweralert(0, src) autoflag = 1 else if(cell.charge <= 0) // zero charge, turn all off if(autoflag != 0) equipment = autoset(equipment, 0) lighting = autoset(lighting, 0) environ = autoset(environ, 0) - area.poweralert(0, src) + if(report_power_alarm) + area.poweralert(0, src) autoflag = 0 // now trickle-charge the cell @@ -1265,7 +1269,8 @@ equipment = autoset(equipment, 0) lighting = autoset(lighting, 0) environ = autoset(environ, 0) - area.poweralert(0, src) + if(report_power_alarm) + area.poweralert(0, src) autoflag = 0 // update icon & area power if anything changed