Some air alarm tweaks, as requested
First, filtering now filters chemicals by default, too. Second, draught now only pressurizes up to 1.4x pressure instead of 2x--2x was too much, massive overpressure. Third, all of the alarm types interact with siphoning vents properly. Panic siphon maximizes siphoning vents, draught sets siphoning vents to lower levels etc.
This commit is contained in:
@@ -535,7 +535,7 @@
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 1,
|
||||
"set_filters" = list(GAS_CO2, GAS_MIASMA),
|
||||
"set_filters" = list(GAS_CO2, GAS_MIASMA, GAS_GROUP_CHEMICALS),
|
||||
"scrubbing" = 1,
|
||||
"widenet" = 0,
|
||||
))
|
||||
@@ -562,7 +562,8 @@
|
||||
GAS_STIMULUM,
|
||||
GAS_PLUOXIUM,
|
||||
GAS_METHANE,
|
||||
GAS_METHYL_BROMIDE
|
||||
GAS_METHYL_BROMIDE,
|
||||
GAS_GROUP_CHEMICALS
|
||||
),
|
||||
"scrubbing" = 1,
|
||||
"widenet" = 1,
|
||||
@@ -582,9 +583,16 @@
|
||||
))
|
||||
for(var/device_id in A.air_vent_names)
|
||||
send_signal(device_id, list(
|
||||
"is_pressurizing" = 1,
|
||||
"power" = 1,
|
||||
"checks" = 1,
|
||||
"set_external_pressure" = ONE_ATMOSPHERE*2
|
||||
"set_external_pressure" = ONE_ATMOSPHERE*1.4
|
||||
))
|
||||
send_signal(device_id, list(
|
||||
"is_siphoning" = 1,
|
||||
"power" = 1,
|
||||
"checks" = 1,
|
||||
"set_external_pressure" = ONE_ATMOSPHERE/1.4
|
||||
))
|
||||
if(AALARM_MODE_REFILL)
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
@@ -596,10 +604,15 @@
|
||||
))
|
||||
for(var/device_id in A.air_vent_names)
|
||||
send_signal(device_id, list(
|
||||
"is_pressurizing" = 1,
|
||||
"power" = 1,
|
||||
"checks" = 1,
|
||||
"set_external_pressure" = ONE_ATMOSPHERE * 3
|
||||
))
|
||||
send_signal(device_id, list(
|
||||
"is_siphoning" = 1,
|
||||
"power" = 0,
|
||||
))
|
||||
if(AALARM_MODE_PANIC,
|
||||
AALARM_MODE_REPLACEMENT)
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
@@ -610,8 +623,14 @@
|
||||
))
|
||||
for(var/device_id in A.air_vent_names)
|
||||
send_signal(device_id, list(
|
||||
"is_pressurizing" = 1,
|
||||
"power" = 0
|
||||
))
|
||||
send_signal(device_id, list(
|
||||
"is_siphoning" = 1,
|
||||
"power" = 1,
|
||||
"checks" = 0
|
||||
))
|
||||
if(AALARM_MODE_SIPHON)
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
send_signal(device_id, list(
|
||||
@@ -621,9 +640,14 @@
|
||||
))
|
||||
for(var/device_id in A.air_vent_names)
|
||||
send_signal(device_id, list(
|
||||
"is_pressurizing" = 1,
|
||||
"power" = 0
|
||||
))
|
||||
|
||||
send_signal(device_id, list(
|
||||
"is_siphoning" = 1,
|
||||
"power" = 1,
|
||||
"checks" = 0
|
||||
))
|
||||
if(AALARM_MODE_OFF)
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
send_signal(device_id, list(
|
||||
@@ -641,8 +665,12 @@
|
||||
for(var/device_id in A.air_vent_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 1,
|
||||
"checks" = 2,
|
||||
"set_internal_pressure" = 0
|
||||
"checks" = 0,
|
||||
"is_pressurizing" = 1
|
||||
))
|
||||
send_signal(device_id, list(
|
||||
"power" = 0,
|
||||
"is_siphoning" = 1
|
||||
))
|
||||
|
||||
/obj/machinery/airalarm/update_icon_state()
|
||||
|
||||
@@ -178,6 +178,9 @@
|
||||
|
||||
var/mob/signal_sender = signal.data["user"]
|
||||
|
||||
if((("is_siphoning" in signal.data) && pump_direction == RELEASING) || (("is_pressurizing" in signal.data) && pump_direction == SIPHONING))
|
||||
return
|
||||
|
||||
if("purge" in signal.data)
|
||||
pressure_checks &= ~EXT_BOUND
|
||||
pump_direction = SIPHONING
|
||||
|
||||
Reference in New Issue
Block a user