Add fire alarm functionality to air alarms (#31970)

* Add fire alarm functionality to air alarms

* prettier
This commit is contained in:
Toastical
2026-05-17 14:56:53 +03:00
committed by GitHub
parent 8a370088c1
commit 87877363a3
4 changed files with 31 additions and 10 deletions
+11 -8
View File
@@ -341,10 +341,7 @@
if(!fire)
set_fire_alarm_effect()
ModifyFiredoors(FALSE)
for(var/item in firealarms)
var/obj/machinery/firealarm/F = item
F.update_icon()
GLOB.firealarm_soundloop.start(F)
start_alarm_sounds()
if(!firealarm_sound_stop_timer)
firealarm_sound_stop_timer = addtimer(CALLBACK(src, PROC_REF(stop_alarm_sounds)), 4 MINUTES, TIMER_STOPPABLE | TIMER_UNIQUE)
@@ -357,10 +354,19 @@
START_PROCESSING(SSobj, src)
/area/proc/start_alarm_sounds()
for(var/obj/machinery/firealarm/F in firealarms)
F.update_icon()
GLOB.firealarm_soundloop.start(F)
for(var/obj/machinery/alarm/A in air_alarms)
GLOB.firealarm_soundloop.start(A)
/area/proc/stop_alarm_sounds()
for(var/obj/machinery/firealarm/F in firealarms)
F.update_icon()
GLOB.firealarm_soundloop.stop(F)
for(var/obj/machinery/alarm/A in air_alarms)
GLOB.firealarm_soundloop.stop(A)
/**
* Reset the firealarm alert for this area
*
@@ -376,10 +382,7 @@
if(firealarm_sound_stop_timer)
deltimer(firealarm_sound_stop_timer)
firealarm_sound_stop_timer = null
for(var/item in firealarms)
var/obj/machinery/firealarm/F = item
F.update_icon()
GLOB.firealarm_soundloop.stop(F, TRUE)
stop_alarm_sounds()
for(var/thing in cameras)
var/obj/machinery/camera/C = locateUID(thing)
@@ -706,6 +706,9 @@ GLOBAL_LIST_INIT(aalarm_modes, list(
data["alarmActivated"] = alarmActivated || danger_level == ATMOS_ALARM_DANGER
data["thresholds"] = generate_thresholds_menu()
var/area/area_loc = get_area(src)
data["fireAlarmActivated"] = area_loc.fire
// Locked when:
// Not sent from atmos console AND
// Not silicon AND locked.
@@ -891,6 +894,12 @@ GLOBAL_LIST_INIT(aalarm_modes, list(
if(RCON_YES)
rcon_setting = RCON_YES
if("set_fire_alarm")
var/area/area_loc = get_area(src)
if(area_loc.fire)
area_loc.firereset(src)
else
area_loc.firealert(src)
if("command")
if(!is_authenticated(usr, active_ui))
+10 -1
View File
@@ -48,7 +48,7 @@ const Danger2Colour = (danger) => {
const AirStatus = (props) => {
const { act, data } = useBackend();
const { air, mode, atmos_alarm, locked, alarmActivated, rcon, target_temp } = data;
const { air, mode, atmos_alarm, locked, alarmActivated, fireAlarmActivated, rcon, target_temp } = data;
let areaStatus;
if (air.danger.overall === 0) {
@@ -162,6 +162,15 @@ const AirStatus = (props) => {
)}
</Box>
</LabeledList.Item>
<LabeledList.Item label="Fire Alarm Status">
{!locked && (
<Button
content={fireAlarmActivated ? 'Reset Fire Alarm' : 'Activate Fire Alarm'}
selected={fireAlarmActivated}
onClick={() => act('set_fire_alarm')}
/>
)}
</LabeledList.Item>
<LabeledList.Item label="Remote Control Settings">
<Button content="Off" selected={rcon === 1} onClick={() => act('set_rcon', { rcon: 1 })} />
<Button content="Auto" selected={rcon === 2} onClick={() => act('set_rcon', { rcon: 2 })} />
File diff suppressed because one or more lines are too long