Make fire alarm monitoring work at the area level (#48422)

* Make fire alarm monitoring work at the area level

* Use TRUE/FALSE for arealevelalarm
This commit is contained in:
Iain Price
2019-12-29 15:19:57 +00:00
committed by Jordan Brown
parent a08c3b3946
commit 85b4a62b09
@@ -72,15 +72,23 @@
/datum/computer_file/program/alarm_monitor/proc/cancelAlarm(class, area/A, obj/origin)
var/list/L = alarms[class]
var/cleared = 0
var/arealevelalarm = FALSE // set to TRUE for alarms that set/clear whole areas
if (class=="Fire")
arealevelalarm = TRUE
for (var/I in L)
if (I == A.name)
var/list/alarm = L[I]
var/list/srcs = alarm[3]
if (origin in srcs)
srcs -= origin
if (srcs.len == 0)
if (!arealevelalarm) // the traditional behaviour
var/list/alarm = L[I]
var/list/srcs = alarm[3]
if (origin in srcs)
srcs -= origin
if (srcs.len == 0)
cleared = 1
L -= I
else
L -= I // wipe the instances entirely
cleared = 1
L -= I
update_alarm_display()
return !cleared