mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-31 00:49:06 +01:00
Alarm centralization completion
Ensures the master area is always used, to avoid issues caused by dynamic lightning which splits areas into sub-areas. Power alarms now handled centrally.
This commit is contained in:
@@ -95,7 +95,7 @@
|
||||
|
||||
/atom/proc/get_alarm_name()
|
||||
var/area/A = get_area(src)
|
||||
return A.name
|
||||
return A.master.name
|
||||
|
||||
/area/get_alarm_name()
|
||||
return name
|
||||
|
||||
@@ -15,8 +15,9 @@
|
||||
/datum/alarm_handler/proc/triggerAlarm(var/atom/origin, var/atom/source, var/duration = 0)
|
||||
var/new_alarm
|
||||
//Proper origin and source mandatory
|
||||
if(!origin || !source)
|
||||
if(!(origin && source))
|
||||
return
|
||||
origin = origin.get_alarm_origin()
|
||||
|
||||
new_alarm = 0
|
||||
//see if there is already an alarm of this origin
|
||||
@@ -37,8 +38,9 @@
|
||||
|
||||
/datum/alarm_handler/proc/clearAlarm(var/atom/origin, var/source)
|
||||
//Proper origin and source mandatory
|
||||
if(!origin || !source)
|
||||
if(!(origin && source))
|
||||
return
|
||||
origin = origin.get_alarm_origin()
|
||||
|
||||
var/datum/alarm/existing = alarms_assoc[origin]
|
||||
if(existing)
|
||||
@@ -53,6 +55,13 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/atom/proc/get_alarm_origin()
|
||||
return src
|
||||
|
||||
/turf/get_alarm_origin()
|
||||
var/area/area = get_area(src)
|
||||
return area.master // Very important to get area.master, as dynamic lightning can and will split areas.
|
||||
|
||||
/datum/alarm_handler/proc/register(var/object, var/procName)
|
||||
listeners[object] = procName
|
||||
|
||||
|
||||
@@ -1,2 +1,10 @@
|
||||
/datum/alarm_handler/power
|
||||
category = "Power"
|
||||
|
||||
/datum/alarm_handler/power/notify_listeners(var/datum/alarm/alarm, var/was_raised)
|
||||
..()
|
||||
var/area/A = alarm.origin
|
||||
if(istype(A))
|
||||
A.power_alert(was_raised)
|
||||
|
||||
/area/proc/power_alert(var/alarming)
|
||||
|
||||
Reference in New Issue
Block a user