mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-20 23:31:04 +00:00
32 lines
1011 B
Plaintext
32 lines
1011 B
Plaintext
SUBSYSTEM_DEF(alarm)
|
|
name = "Alarm"
|
|
flags = SS_NO_INIT | SS_NO_FIRE
|
|
var/list/alarms = list("Motion" = list(), "Fire" = list(), "Atmosphere" = list(), "Power" = list(), "Burglar" = list())
|
|
|
|
/datum/controller/subsystem/alarm/proc/triggerAlarm(class, area/A, list/O, obj/alarmsource)
|
|
var/list/L = alarms[class]
|
|
for(var/I in L)
|
|
if(I == A.name)
|
|
var/list/alarm = L[I]
|
|
var/list/sources = alarm[3]
|
|
if(!(alarmsource.UID() in sources))
|
|
sources += alarmsource.UID()
|
|
return TRUE
|
|
L[A.name] = list(get_area_name(A, TRUE), O, list(alarmsource.UID()))
|
|
SEND_SIGNAL(SSalarm, COMSIG_TRIGGERED_ALARM, class, A, O, alarmsource)
|
|
return TRUE
|
|
|
|
/datum/controller/subsystem/alarm/proc/cancelAlarm(class, area/A, obj/origin)
|
|
var/list/L = alarms[class]
|
|
var/cleared = FALSE
|
|
for(var/I in L)
|
|
if(I == A.name)
|
|
var/list/alarm = L[I]
|
|
var/list/srcs = alarm[3]
|
|
srcs -= origin.UID()
|
|
if(!length(srcs))
|
|
cleared = TRUE
|
|
L -= I
|
|
|
|
SEND_SIGNAL(SSalarm, COMSIG_CANCELLED_ALARM, class, A, origin, cleared)
|