diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index d2988a6474f..fe7e2b0067c 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -114,4 +114,9 @@ // Atmos pipe limits #define MAX_OUTPUT_PRESSURE 4500 // (kPa) What pressure pumps and powered equipment max out at. -#define MAX_TRANSFER_RATE 200 // (L/s) Maximum speed powered equipment can work at. \ No newline at end of file +#define MAX_TRANSFER_RATE 200 // (L/s) Maximum speed powered equipment can work at. + +// Atmos alarm defines +#define ATMOS_ALARM_NONE 0 +#define ATMOS_ALARM_WARNING 1 +#define ATMOS_ALARM_DANGER 2 \ No newline at end of file diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 8ec413450b0..fd6b0938108 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -17,7 +17,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area var/fire = null - var/atmosalm = 0 + var/atmosalm = ATMOS_ALARM_NONE var/poweralm = 1 var/party = null var/radalert = 0 diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index ec70d50c504..96ffc936a7b 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -53,7 +53,7 @@ /area/proc/atmosalert(danger_level, var/alarm_source) - if(danger_level == 0) + if(danger_level == ATMOS_ALARM_NONE) atmosphere_alarm.clearAlarm(src, alarm_source) else atmosphere_alarm.triggerAlarm(src, alarm_source, severity = danger_level) @@ -64,10 +64,10 @@ danger_level = max(danger_level, AA.danger_level) if(danger_level != atmosalm) - if(danger_level < 1 && atmosalm >= 1) + if(danger_level < ATMOS_ALARM_WARNING && atmosalm >= ATMOS_ALARM_WARNING) //closing the doors on red and opening on green provides a bit of hysteresis that will hopefully prevent fire doors from opening and closing repeatedly due to noise air_doors_open() - else if(danger_level >= 2 && atmosalm < 2) + else if(danger_level >= ATMOS_ALARM_DANGER && atmosalm < ATMOS_ALARM_DANGER) air_doors_close() atmosalm = danger_level diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index efa6a1ded81..632177d7358 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -14,14 +14,14 @@ /datum/tlv/proc/get_danger_level(curval as num) if(max2 >=0 && curval>max2) - return 2 + return ATMOS_ALARM_DANGER if(min2 >=0 && curval=0 && curval>max1) - return 1 + return ATMOS_ALARM_WARNING if(min1 >=0 && curval[user] begins forcing \the [src].", \ + "You begin forcing \the [src].") + if(do_after(user, force_open_time, target = src)) + user.visible_message("[user] forces \the [src].", \ + "You force \the [src].") + autoclose = TRUE open() - else - close() - + /obj/machinery/door/firedoor/attack_ai(mob/user) attack_hand(user) @@ -133,7 +141,13 @@ /obj/machinery/door/firedoor/close() . = ..() + crush() latetoggle() + +/obj/machinery/door/firedoor/autoclose() + var/area/A = get_area(src) + if(A && A.atmosalm >= ATMOS_ALARM_DANGER) + ..() /obj/machinery/door/firedoor/proc/latetoggle() if(operating || stat & NOPOWER || !nextstate) diff --git a/code/modules/nano/modules/atmos_control.dm b/code/modules/nano/modules/atmos_control.dm index 0670193e498..9dbb508f16e 100644 --- a/code/modules/nano/modules/atmos_control.dm +++ b/code/modules/nano/modules/atmos_control.dm @@ -25,7 +25,7 @@ if(ui_ref) var/obj/machinery/alarm/alarm = locate(href_list["alarm"]) in (monitored_alarms ? monitored_alarms : machines) if(alarm) - var/datum/topic_state/TS = generate_state(alarm) + var/datum/topic_state/air_alarm/TS = generate_state(alarm) alarm.ui_interact(usr, master_ui = ui_ref, state = TS) /datum/nano_module/atmos_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state) @@ -63,7 +63,7 @@ /datum/topic_state/air_alarm/href_list(var/mob/user) var/list/extra_href = list() - extra_href["remote_connection"] = 1 + extra_href["remote_connection"] = TRUE extra_href["remote_access"] = has_access(user) return extra_href