This commit is contained in:
Fox McCloud
2020-07-11 15:48:47 -04:00
parent 2fb2fe99f8
commit cc96e93bf3
5 changed files with 21 additions and 14 deletions
+1 -1
View File
@@ -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]
+5 -5
View File
@@ -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)
+3 -1
View File
@@ -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)
+2 -2
View File
@@ -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
+10 -5
View File
@@ -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