diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 2f7253f045c..a8a0b13b9dc 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -24,6 +24,12 @@ var/welded = 0 // Added for aliens -- TLE + var/frequency = 1439 + var/datum/radio_frequency/radio_connection + + var/radio_filter_out + var/radio_filter_in + New() var/area/A = get_area(loc) if (A.master) @@ -37,22 +43,14 @@ broadcast_status() ..() - Del() - var/area/alarm_area = get_area(src) - if(alarm_area && "\"[id_tag]\"" in alarm_area.master.air_vents) - alarm_area.master.air_vents.Remove("\"[id_tag]\"") - ..() - high_volume name = "Large Air Vent" + power_channel = EQUIP New() ..() air_contents.volume = 1000 - initialize() - spawn(20) - broadcast_status() update_icon() if(welded) @@ -70,7 +68,7 @@ process() ..() - broadcast_status() +// broadcast_status() if(stat & (NOPOWER|BROKEN)) return if (!node) @@ -129,73 +127,99 @@ + //Radio remote control + + proc/set_frequency(new_frequency) + radio_controller.remove_object(src, frequency) + frequency = new_frequency + if(frequency) + radio_connection = radio_controller.add_object(src, frequency,radio_filter_in) + proc/broadcast_status() - var/area/alarm_area = get_area(src) - if(alarm_area.master.master_air_alarm) - if(!id_tag) - if(alarm_area.master.master_air_alarm) - alarm_area.master.master_air_alarm.register_env_machine(src) - world << "No ID, air alarm. New ID = [id_tag]" - else - world << "No ID, no air alarm." - else if(!"\"[id_tag]\"" in alarm_area.air_vents) - if(alarm_area.master.master_air_alarm) - alarm_area.master.master_air_alarm.register_env_machine(src) - world << "ID, air alarm. New ID = [id_tag]" - else - world << "ID = [id_tag], no air alarm." - else if(stat & (NOPOWER|BROKEN)) - alarm_area.master.air_vents.Remove("\"[id_tag]\"") - world << "Broken" - else - world << "Trying to register (No alarm)" + if(!radio_connection) + return 0 + + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + + signal.data = list( + "area" = src.area_uid, + "tag" = src.id_tag, + "device" = "AVP", + "power" = on, + "direction" = pump_direction?("release"):("siphon"), + "checks" = pressure_checks, + "internal" = internal_pressure_bound, + "external" = external_pressure_bound, + "timestamp" = world.time, + "sigtype" = "status", + "setting" = pump_speed + ) + + radio_connection.post_signal(src, signal, radio_filter_out) + + return 1 - proc/receive(var/list/signal) + initialize() + ..() + + //some vents work his own spesial way + radio_filter_in = frequency==1439?(RADIO_FROM_AIRALARM):null + radio_filter_out = frequency==1439?(RADIO_TO_AIRALARM):null + if(frequency) + set_frequency(frequency) + + + receive_signal(datum/signal/signal) if(stat & (NOPOWER|BROKEN)) return + //log_admin("DEBUG \[[world.timeofday]\]: /obj/machinery/atmospherics/unary/vent_pump/receive_signal([signal.debug_print()])") + if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) + return 0 - if("purge" in signal) + if("purge" in signal.data) pressure_checks &= ~1 pump_direction = 0 - if("stabalize" in signal) + if("stabalize" in signal.data) pressure_checks |= 1 pump_direction = 1 - if("power" in signal) - on = text2num(signal["power"]) + if("power" in signal.data) + on = text2num(signal.data["power"]) - if("power_toggle" in signal) + if("power_toggle" in signal.data) on = !on - if("checks" in signal) - pressure_checks = text2num(signal["checks"]) + if("checks" in signal.data) + pressure_checks = text2num(signal.data["checks"]) - if("checks_toggle" in signal) + if("checks_toggle" in signal.data) pressure_checks = (pressure_checks?0:3) if("direction" in signal) - pump_direction = text2num(signal["direction"]) + pump_direction = text2num(signal.data["direction"]) - if("set_internal_pressure" in signal) - internal_pressure_bound = between(0, text2num(signal["set_internal_pressure"]), ONE_ATMOSPHERE*50) + if("set_internal_pressure" in signal.data) + internal_pressure_bound = between(0, text2num(signal.data["set_internal_pressure"]), ONE_ATMOSPHERE*50) - if("set_external_pressure" in signal) - external_pressure_bound = between(0, text2num(signal["set_external_pressure"]), ONE_ATMOSPHERE*50) + if("set_external_pressure" in signal.data) + external_pressure_bound = between(0, text2num(signal.data["set_external_pressure"]), ONE_ATMOSPHERE*50) - if("adjust_internal_pressure" in signal) - internal_pressure_bound = between(0, text2num(signal["adjust_internal_pressure"]), ONE_ATMOSPHERE*50) + if("adjust_internal_pressure" in signal.data) + internal_pressure_bound = between(0, text2num(signal.data["adjust_internal_pressure"]), ONE_ATMOSPHERE*50) - if("adjust_external_pressure" in signal) - external_pressure_bound = between(0, text2num(signal["adjust_external_pressure"]), ONE_ATMOSPHERE*50) + if("adjust_external_pressure" in signal.data) + external_pressure_bound = between(0, text2num(signal.data["adjust_external_pressure"]), ONE_ATMOSPHERE*50) - if("init" in signal) - name = signal["init"] + if("init" in signal.data) + name = signal.data["init"] return - if("setting" in signal) - pump_speed = text2num(signal["setting"]) + if("setting" in signal.data) + pump_speed = text2num(signal.data["setting"]) //log_admin("DEBUG \[[world.timeofday]\]: vent_pump/receive_signal: unknown command \"[signal["command"]]\"\n[signal.debug_print()]") spawn(2) diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index a26f82bc306..93aa24f5de0 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -20,6 +20,12 @@ var/panic = 0 //is this scrubber panicked? var/area_uid + + var/frequency = 1439 + var/datum/radio_frequency/radio_connection + var/radio_filter_out + var/radio_filter_in + New() var/area/A = get_area(loc) if (A.master) @@ -33,16 +39,6 @@ broadcast_status() ..() - Del() - var/area/alarm_area = get_area(src) - if(alarm_area && "\"[id_tag]\"" in alarm_area.master.air_scrubbers) - alarm_area.master.air_scrubbers.Remove("\"[id_tag]\"") - ..() - - initialize() - spawn(20) - broadcast_status() - update_icon() if(node && on && !(stat & (NOPOWER|BROKEN))) if(scrubbing) @@ -53,22 +49,46 @@ icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]off" return - proc/broadcast_status() - var/area/alarm_area = get_area(src) - if(alarm_area.master.master_air_alarm) - if(!id_tag) - if(alarm_area.master.master_air_alarm) - alarm_area.master.master_air_alarm.register_env_machine(src) - else if(!"\"[id_tag]\"" in alarm_area.air_scrubbers) - if(alarm_area.master.master_air_alarm) - alarm_area.master.master_air_alarm.register_env_machine(src) - else if(stat & (NOPOWER|BROKEN)) - alarm_area.master.air_scrubbers.Remove("\"[id_tag]\"") - return + proc + set_frequency(new_frequency) + radio_controller.remove_object(src, frequency) + frequency = new_frequency + radio_connection = radio_controller.add_object(src, frequency, radio_filter_in) + + broadcast_status() + if(!radio_connection) + return 0 + + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + signal.data = list( + "area" = area_uid, + "tag" = id_tag, + "device" = "AScr", + "timestamp" = world.time, + "power" = on, + "scrubbing" = scrubbing, + "panic" = panic, + "filter_co2" = scrub_CO2, + "filter_toxins" = scrub_Toxins, + "filter_n2o" = scrub_N2O, + "sigtype" = "status" + ) + radio_connection.post_signal(src, signal, radio_filter_out) + + return 1 + + initialize() + ..() + radio_filter_in = frequency==initial(frequency)?(RADIO_FROM_AIRALARM):null + radio_filter_out = frequency==initial(frequency)?(RADIO_TO_AIRALARM):null + if (frequency) + set_frequency(frequency) process() ..() - broadcast_status() +// broadcast_status() if(stat & (NOPOWER|BROKEN)) return if (!node) @@ -142,17 +162,19 @@ return */ - proc/receive(var/list/signal) + receive_signal(datum/signal/signal) if(stat & (NOPOWER|BROKEN)) return + if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) + return 0 - if("power" in signal) - on = text2num(signal["power"]) - if("power_toggle" in signal) + if("power" in signal.data) + on = text2num(signal.data["power"]) + if("power_toggle" in signal.data) on = !on - if("panic_siphon" in signal) //must be before if("scrubbing" thing - panic = text2num(signal["panic_siphon"]) + if("panic_siphon" in signal.data) //must be before if("scrubbing" thing + panic = text2num(signal.data["panic_siphon"]) if(panic) on = 1 scrubbing = 0 @@ -160,7 +182,7 @@ else scrubbing = 1 volume_rate = initial(volume_rate) - if("toggle_panic_siphon" in signal) + if("toggle_panic_siphon" in signal.data) panic = !panic if(panic) on = 1 @@ -170,33 +192,39 @@ scrubbing = 1 volume_rate = initial(volume_rate) - if("scrubbing" in signal) - scrubbing = text2num(signal["scrubbing"]) - if("toggle_scrubbing" in signal) + if("scrubbing" in signal.data) + scrubbing = text2num(signal.data["scrubbing"]) + if("toggle_scrubbing" in signal.data) scrubbing = !scrubbing - if("co2_scrub" in signal) - scrub_CO2 = text2num(signal["co2_scrub"]) - if("toggle_co2_scrub" in signal) + if("co2_scrub" in signal.data) + scrub_CO2 = text2num(signal.data["co2_scrub"]) + if("toggle_co2_scrub" in signal.data) scrub_CO2 = !scrub_CO2 - if("tox_scrub" in signal) - scrub_Toxins = text2num(signal["tox_scrub"]) - if("toggle_tox_scrub" in signal) + if("tox_scrub" in signal.data) + scrub_Toxins = text2num(signal.data["tox_scrub"]) + if("toggle_tox_scrub" in signal.data) scrub_Toxins = !scrub_Toxins - if("n2o_scrub" in signal) - scrub_N2O = text2num(signal["n2o_scrub"]) - if("toggle_n2o_scrub" in signal) + if("n2o_scrub" in signal.data) + scrub_N2O = text2num(signal.data["n2o_scrub"]) + if("toggle_n2o_scrub" in signal.data) scrub_N2O = !scrub_N2O - if("init" in signal) - name = signal["init"] + if("init" in signal.data) + name = signal.data["init"] return - if("setting" in signal) - scrub_rate = text2num(signal["setting"]) + if("status" in signal.data) + spawn(2) + broadcast_status() + return //do not update_icon + if("setting" in signal.data) + scrub_rate = text2num(signal.data["setting"]) + +// log_admin("DEBUG \[[world.timeofday]\]: vent_scrubber/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]") spawn(2) broadcast_status() update_icon() diff --git a/code/WorkInProgress/Mini/atmos_control.dm b/code/WorkInProgress/Mini/atmos_control.dm index 9c06eb7013b..553fa907001 100644 --- a/code/WorkInProgress/Mini/atmos_control.dm +++ b/code/WorkInProgress/Mini/atmos_control.dm @@ -63,7 +63,7 @@ "panic_siphon", "scrubbing" ) - current.send(device_id, list (href_list["command"] = text2num(href_list["val"]))) + current.send_signal(device_id, list (href_list["command"] = text2num(href_list["val"]))) spawn(3) src.updateUsrDialog() //if("adjust_threshold") //was a good idea but required very wide window @@ -156,19 +156,24 @@ output += "ACTIVATE PANIC SYPHON IN AREA" if (AALARM_SCREEN_VENT) var/sensor_data = "" - if(current.alarm_area.air_vents.len) - for(var/id_tag in current.alarm_area.air_vents) - var/obj/machinery/atmospherics/unary/vent_pump/data = current.alarm_area.air_vents[id_tag] + if(current.alarm_area.air_vent_names.len) + for(var/id_tag in current.alarm_area.air_vent_names) + var/long_name = current.alarm_area.air_vent_names[id_tag] + var/list/data = current.alarm_area.air_vent_info[id_tag] + var/state = "" if(!data) - continue + state = " can not be found!" + data = list("external" = 0) //for "0" instead of empty string + else if (data["timestamp"]+AALARM_REPORT_TIMEOUT < world.time) + state = " not responding!" sensor_data += {" -[id_tag]
+[long_name][state]
Operating: -[data.on?"on":"off"] +[data["power"]?"on":"off"]
Pressure checks: -external -internal +external +internal
External pressure bound: - @@ -182,7 +187,7 @@ +
"} - if (!data.pump_direction) + if (data["direction"] == "siphon") sensor_data += {" Direction: siphoning @@ -194,34 +199,39 @@ siphoning output = {"Main menu
[sensor_data]"} if (AALARM_SCREEN_SCRUB) var/sensor_data = "" - if(current.alarm_area.air_scrubbers.len) - for(var/id_tag in current.alarm_area.air_scrubbers) - var/obj/machinery/atmospherics/unary/vent_scrubber/data = current.alarm_area.air_scrubbers[id_tag] + if(current.alarm_area.air_scrub_names.len) + for(var/id_tag in current.alarm_area.air_scrub_names) + var/long_name = current.alarm_area.air_scrub_names[id_tag] + var/list/data = current.alarm_area.air_scrub_info[id_tag] + var/state = "" if(!data) - continue + state = " can not be found!" + data = list("external" = 0) //for "0" instead of empty string + else if (data["timestamp"]+AALARM_REPORT_TIMEOUT < world.time) + state = " not responding!" sensor_data += {" -[id_tag]
+[long_name][state]
Operating: -[data.on?"on":"off"]
+[data["power"]?"on":"off"]
Type: -[data.scrubbing?"scrubbing":"syphoning"]
+[data["scrubbing"]?"scrubbing":"syphoning"]
"} if(data["scrubbing"]) sensor_data += {" Filtering: Carbon Dioxide -[data.scrub_CO2?"on":"off"]; +[data["filter_co2"]?"on":"off"]; Toxins -[data.scrub_Toxins?"on":"off"]; +[data["filter_toxins"]?"on":"off"]; Nitrous Oxide -[data.scrub_N2O?"on":"off"] +[data["filter_n2o"]?"on":"off"]
"} sensor_data += {" -Panic syphon: [data.panic?"PANIC SYPHON ACTIVATED":""] -Dea":"red'>A")]ctivate
+Panic syphon: [data["panic"]?"PANIC SYPHON ACTIVATED":""] +Dea":"red'>A")]ctivate

"} else @@ -235,9 +245,9 @@ Nitrous Oxide var/list/modes = list( AALARM_MODE_SCRUBBING = "Filtering", AALARM_MODE_PANIC = "PANIC", - AALARM_MODE_REPLACEMENT = "REPLACE AIR", + AALARM_MODE_CYCLE = "CYCLE", AALARM_MODE_FILL = "FILL", - AALARM_MODE_CYCLE = "CYCLE" + AALARM_MODE_REPLACEMENT = "REPLACE AIR", ) for (var/m=1,m<=modes.len,m++) if (current.mode==m) diff --git a/code/game/communications.dm b/code/game/communications.dm index 6e89648c400..b5449e60d6e 100644 --- a/code/game/communications.dm +++ b/code/game/communications.dm @@ -123,14 +123,16 @@ var/NUKE_FREQ = 1200 //Randomised on nuke rounds. #define TRANSMISSION_RADIO 1 /* filters */ -var/const/RADIO_CHAT = "1" -var/const/RADIO_ATMOSIA = "2" -var/const/RADIO_NAVBEACONS = "3" -var/const/RADIO_AIRLOCK = "4" -var/const/RADIO_SECBOT = "5" -var/const/RADIO_MULEBOT = "6" -var/const/RADIO_MAGNETS = "7" -var/const/RADIO_POWER = "8" +var/const/RADIO_TO_AIRALARM = "1" +var/const/RADIO_FROM_AIRALARM = "2" +var/const/RADIO_CHAT = "3" +var/const/RADIO_ATMOSIA = "4" +var/const/RADIO_NAVBEACONS = "5" +var/const/RADIO_AIRLOCK = "6" +var/const/RADIO_SECBOT = "7" +var/const/RADIO_MULEBOT = "8" +var/const/RADIO_MAGNETS = "9" +var/const/RADIO_POWER = "10" var/global/datum/controller/radio/radio_controller diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 3393a2847b3..71c63ba1169 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -46,11 +46,14 @@ #define RCON_AUTO 2 #define RCON_YES 3 +//all air alarms in area are connected via magic //all air alarms in area are connected via magic /area var/obj/machinery/alarm/master_air_alarm - var/list/air_vents - var/list/air_scrubbers + var/list/air_vent_names + var/list/air_scrub_names + var/list/air_vent_info + var/list/air_scrub_info /obj/machinery/alarm name = "alarm" @@ -80,6 +83,8 @@ var/area/alarm_area var/danger_level = 0 + var/datum/radio_frequency/radio_connection + var/list/TLV = list() server/New() @@ -110,6 +115,7 @@ TLV["temperature"] = list(T0C, T0C+10, T0C+40, T0C+66) // K initialize() + set_frequency(frequency) if (!master_is_operating()) elect_master() @@ -188,9 +194,11 @@ for (var/obj/machinery/alarm/AA in A) if (!(AA.stat & (NOPOWER|BROKEN))) alarm_area.master_air_alarm = AA - if (!alarm_area.air_vents) - alarm_area.air_vents = list() - alarm_area.air_scrubbers = list() + if (!alarm_area.air_vent_names) + alarm_area.air_vent_names = new + alarm_area.air_scrub_names = new + alarm_area.air_vent_info = new + alarm_area.air_scrub_info = new return 1 return 0 @@ -216,58 +224,107 @@ if (2) icon_state = "alarm1" - proc/send(var/target, var/list/command)//sends signal 'command' to 'target'. Returns 0 if no radio connection, 1 otherwise - if(target in alarm_area.air_vents) - var/obj/machinery/atmospherics/unary/vent_pump/target_machine = alarm_area.air_vents[target] - target_machine.receive(command) + receive_signal(datum/signal/signal) + if(stat & (NOPOWER|BROKEN)) + return + if (alarm_area.master_air_alarm != src) + if (master_is_operating()) + return + elect_master() + if (alarm_area.master_air_alarm != src) + return + if(!signal || signal.encryption) + return + var/id_tag = signal.data["tag"] + if (!id_tag) + return + if (signal.data["area"] != area_uid) + return + if (signal.data["sigtype"] != "status") + return + + var/dev_type = signal.data["device"] + if(!(id_tag in alarm_area.air_scrub_names) && !(id_tag in alarm_area.air_vent_names)) + register_env_machine(id_tag, dev_type) + if(dev_type == "AScr") + alarm_area.air_scrub_info[id_tag] = signal.data + else if(dev_type == "AVP") + alarm_area.air_vent_info[id_tag] = signal.data + + proc/register_env_machine(var/m_id, var/device_type) + var/new_name + if (device_type=="AVP") + new_name = "[alarm_area.name] Vent Pump #[alarm_area.air_vent_names.len+1]" + alarm_area.air_vent_names[m_id] = new_name + else if (device_type=="AScr") + new_name = "[alarm_area.name] Air Scrubber #[alarm_area.air_scrub_names.len+1]" + alarm_area.air_scrub_names[m_id] = new_name + else + return + spawn (10) + send_signal(m_id, list("init" = new_name) ) + + proc/refresh_all() + for(var/id_tag in alarm_area.air_vent_names) + var/list/I = alarm_area.air_vent_info[id_tag] + if (I && I["timestamp"]+AALARM_REPORT_TIMEOUT/2 > world.time) + continue + send_signal(id_tag, list("status") ) + for(var/id_tag in alarm_area.air_scrub_names) + var/list/I = alarm_area.air_scrub_info[id_tag] + if (I && I["timestamp"]+AALARM_REPORT_TIMEOUT/2 > world.time) + continue + send_signal(id_tag, list("status") ) + + proc/set_frequency(new_frequency) + radio_controller.remove_object(src, frequency) + frequency = new_frequency + radio_connection = radio_controller.add_object(src, frequency, RADIO_TO_AIRALARM) + + proc/send_signal(var/target, var/list/command)//sends signal 'command' to 'target'. Returns 0 if no radio connection, 1 otherwise + if(!radio_connection) + return 0 + + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + + signal.data = command + signal.data["tag"] = target + signal.data["sigtype"] = "command" + + radio_connection.post_signal(src, signal, RADIO_FROM_AIRALARM) + // world << text("Signal [] Broadcasted to []", command, target) - else if(target in alarm_area.air_scrubbers) - var/obj/machinery/atmospherics/unary/vent_scrubber/target_machine = alarm_area.air_scrubbers[target] - target_machine.receive(command) return 1 - proc/register_env_machine(var/obj/machinery/source_machine) - if (istype(source_machine, /obj/machinery/atmospherics/unary/vent_pump)) - var/new_name = "[alarm_area] Vent Pump #[alarm_area.air_vents.len+1]" - alarm_area.air_vents += "\"[new_name]\"" - alarm_area.air_vents["\"[new_name]\""] = source_machine - source_machine:id_tag = new_name - source_machine.name = new_name - else if (istype(source_machine, /obj/machinery/atmospherics/unary/vent_scrubber)) - var/new_name = "[alarm_area] Air Scrubber #[alarm_area.air_scrubbers.len+1]" - alarm_area.air_scrubbers += "\"[new_name]\"" - alarm_area.air_scrubbers["\"[new_name]\""] = source_machine - source_machine:id_tag = new_name - source_machine.name = new_name - return - proc/apply_mode() var/current_pressures = TLV["pressure"] var/target_pressure = (current_pressures[2] + current_pressures[3])/2 switch(mode) if(AALARM_MODE_SCRUBBING) - for(var/device_id in alarm_area.air_scrubbers) - send(device_id, list("power"= 1, "co2_scrub"= 1, "setting"= 1, "scrubbing"= 1, "panic_siphon"= 0) ) - for(var/device_id in alarm_area.air_vents) - send(device_id, list("power"= 1, "checks"= 1, "setting"= 1, "set_external_pressure"= target_pressure) ) + for(var/device_id in alarm_area.air_scrub_names) + send_signal(device_id, list("power"= 1, "co2_scrub"= 1, "setting"= 1, "scrubbing"= 1, "panic_siphon"= 0) ) + for(var/device_id in alarm_area.air_vent_names) + send_signal(device_id, list("power"= 1, "checks"= 1, "setting"= 1, "set_external_pressure"= target_pressure) ) if(AALARM_MODE_PANIC, AALARM_MODE_CYCLE) - for(var/device_id in alarm_area.air_scrubbers) - send(device_id, list("power"= 1, "panic_siphon"= 1) ) - for(var/device_id in alarm_area.air_vents) - send(device_id, list("power"= 0) ) + for(var/device_id in alarm_area.air_scrub_names) + send_signal(device_id, list("power"= 1, "panic_siphon"= 1) ) + for(var/device_id in alarm_area.air_vent_names) + send_signal(device_id, list("power"= 0) ) if(AALARM_MODE_REPLACEMENT) - for(var/device_id in alarm_area.air_scrubbers) - send(device_id, list("power"= 1, "co2_scrub"= 1, "setting"= 2, "scrubbing"= 1, "panic_siphon"= 0) ) - for(var/device_id in alarm_area.air_vents) - send(device_id, list("power"= 1, "checks"= 1, "setting"= 2, "set_external_pressure"= target_pressure) ) + for(var/device_id in alarm_area.air_scrub_names) + send_signal(device_id, list("power"= 1, "co2_scrub"= 1, "setting"= 2, "scrubbing"= 1, "panic_siphon"= 0) ) + for(var/device_id in alarm_area.air_vent_names) + send_signal(device_id, list("power"= 1, "checks"= 1, "setting"= 2, "set_external_pressure"= target_pressure) ) if(AALARM_MODE_FILL) - for(var/device_id in alarm_area.air_scrubbers) - send(device_id, list("power"= 0) ) - for(var/device_id in alarm_area.air_vents) - send(device_id, list("power"= 1, "checks"= 1, "setting"= 2, "set_external_pressure"= target_pressure) ) + for(var/device_id in alarm_area.air_scrub_names) + send_signal(device_id, list("power"= 0) ) + for(var/device_id in alarm_area.air_vent_names) + send_signal(device_id, list("power"= 1, "checks"= 1, "setting"= 2, "set_external_pressure"= target_pressure) ) proc/apply_danger_level(var/new_danger_level) alarm_area.atmosalm = new_danger_level @@ -635,92 +692,94 @@ Toxins: [plasma_percent]%
if (AALARM_SCREEN_VENT) var/sensor_data = "" - if(alarm_area.air_vents.len) - for(var/id_tag in alarm_area.air_vents) - var/obj/machinery/atmospherics/unary/vent_pump/data = alarm_area.air_vents[id_tag] + if(alarm_area.air_vent_names.len) + for(var/id_tag in alarm_area.air_vent_names) + var/long_name = alarm_area.air_vent_names[id_tag] + var/list/data = alarm_area.air_vent_info[id_tag] if(!data) - continue + continue; + var/state = "" sensor_data += {" -[id_tag]
-Operating: -[data.on?"on":"off"] -
-Pressure checks: -external -internal -
-External pressure bound: -- -- -- -- -[data["external"]] -+ -+ -+ -+ - (reset) -
"} - if (!data.pump_direction) + [long_name][state]
+ Operating: + [data["power"]?"on":"off"] +
+ Pressure checks: + external + internal +
+ External pressure bound: + - + - + - + - + [data["external"]] + + + + + + + + + (reset) +
+ "} + if (data["direction"] == "siphon") sensor_data += {" -Direction: -siphoning -
-"} + Direction: + siphoning +
+ "} sensor_data += {"
"} else sensor_data = "No vents connected.
" - output = "Main menu
[sensor_data]" - - + output = {"Main menu
[sensor_data]"} if (AALARM_SCREEN_SCRUB) var/sensor_data = "" - if(alarm_area.air_scrubbers.len) - for(var/id_tag in alarm_area.air_scrubbers) - var/obj/machinery/atmospherics/unary/vent_scrubber/data = alarm_area.air_scrubbers[id_tag] + if(alarm_area.air_scrub_names.len) + for(var/id_tag in alarm_area.air_scrub_names) + var/long_name = alarm_area.air_scrub_names[id_tag] + var/list/data = alarm_area.air_scrub_info[id_tag] if(!data) - continue + continue; + var/state = "" sensor_data += {" -[id_tag]
-Operating: -[data.on ?"on":"off"]
-Type: -[data.scrubbing?"scrubbing":"syphoning"]
-"} + [long_name][state]
+ Operating: + [data["power"]?"on":"off"]
+ Type: + [data["scrubbing"]?"scrubbing":"syphoning"]
+ "} - if(data.scrubbing) + if(data["scrubbing"]) sensor_data += {" -Filtering: -Carbon Dioxide -[data.scrub_CO2?"on":"off"]; -Toxins -[data.scrub_Toxins?"on":"off"]; -Nitrous Oxide -[data.scrub_N2O?"on":"off"] -
-"} + Filtering: + Carbon Dioxide + [data["filter_co2"]?"on":"off"]; + Toxins + [data["filter_toxins"]?"on":"off"]; + Nitrous Oxide + [data["filter_n2o"]?"on":"off"] +
+ "} sensor_data += {" -Panic syphon: [data.panic?"PANIC SYPHON ACTIVATED":"Disabled"] -Dea":"red'>A")]ctivate
-
-"} + Panic syphon: [data["panic"]?"PANIC SYPHON ACTIVATED":""] + Dea":"red'>A")]ctivate
+
+ "} else sensor_data = "No scrubbers connected.
" output = {"Main menu
[sensor_data]"} - if (AALARM_SCREEN_MODE) output += "Main menu
Air machinery mode for the area: