From 7caff5dd42206f9cbccae80bd2add648fb03b1fc Mon Sep 17 00:00:00 2001 From: "giacomand@gmail.com" Date: Sat, 15 Dec 2012 18:59:47 +0000 Subject: [PATCH] -Proper fix for the scrubber/vent runtimes. I made the vents and scrubbers update the area scrubber/vent info themselves, meaning that an air alarm isn't required to initialize the area/vent info and to stop it from being null. This will add more flexibility in the future. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5331 316c924e-a436-60f5-8080-3fe189b3f50e --- .../components/unary/vent_pump.dm | 33 +++++++----- .../components/unary/vent_scrubber.dm | 39 ++++++++------ code/game/machinery/alarm.dm | 53 ++----------------- 3 files changed, 47 insertions(+), 78 deletions(-) diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index c40044c4f69..6abdea210d6 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -162,6 +162,12 @@ "sigtype" = "status" ) + if(!initial_loc.air_vent_names[id_tag]) + var/new_name = "[initial_loc.name] Vent Pump #[initial_loc.air_vent_names.len+1]" + initial_loc.air_vent_names[id_tag] = new_name + src.name = new_name + initial_loc.air_vent_info[id_tag] = signal.data + radio_connection.post_signal(src, signal, radio_filter_out) return 1 @@ -183,62 +189,62 @@ if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) return 0 - if("purge" in signal.data) + if(signal.data["purge"] != null) pressure_checks &= ~1 pump_direction = 0 - if("stabalize" in signal.data) + if(signal.data["stabalize"] != null) pressure_checks |= 1 pump_direction = 1 - if("power" in signal.data) + if(signal.data["power"] != null) on = text2num(signal.data["power"]) - if("power_toggle" in signal.data) + if(signal.data["power_toggle"] != null) on = !on - if("checks" in signal.data) + if(signal.data["checks"] != null) pressure_checks = text2num(signal.data["checks"]) - if("checks_toggle" in signal.data) + if(signal.data["checks_toggle"] != null) pressure_checks = (pressure_checks?0:3) - if("direction" in signal.data) + if(signal.data["direction"] != null) pump_direction = text2num(signal.data["direction"]) - if("set_internal_pressure" in signal.data) + if(signal.data["set_internal_pressure"] != null) internal_pressure_bound = between( 0, text2num(signal.data["set_internal_pressure"]), ONE_ATMOSPHERE*50 ) - if("set_external_pressure" in signal.data) + if(signal.data["set_external_pressure"] != null) external_pressure_bound = between( 0, text2num(signal.data["set_external_pressure"]), ONE_ATMOSPHERE*50 ) - if("adjust_internal_pressure" in signal.data) + if(signal.data["adjust_internal_pressure"] != null) internal_pressure_bound = between( 0, internal_pressure_bound + text2num(signal.data["adjust_internal_pressure"]), ONE_ATMOSPHERE*50 ) - if("adjust_external_pressure" in signal.data) + if(signal.data["adjust_external_pressure"] != null) external_pressure_bound = between( 0, external_pressure_bound + text2num(signal.data["adjust_external_pressure"]), ONE_ATMOSPHERE*50 ) - if("init" in signal.data) + if(signal.data["init"] != null) name = signal.data["init"] return - if("status" in signal.data) + if(signal.data["status"] != null) spawn(2) broadcast_status() return //do not update_icon @@ -326,5 +332,6 @@ /obj/machinery/atmospherics/unary/vent_pump/Del() if(initial_loc) initial_loc.air_vent_info -= id_tag + initial_loc.air_vent_names -= id_tag ..() return diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index feb8e9b16ec..a5df87d7c22 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -73,6 +73,11 @@ "filter_n2o" = scrub_N2O, "sigtype" = "status" ) + if(!initial_loc.air_scrub_names[id_tag]) + var/new_name = "[initial_loc.name] Air Scrubber #[initial_loc.air_scrub_names.len+1]" + initial_loc.air_scrub_names[id_tag] = new_name + src.name = new_name + initial_loc.air_scrub_info[id_tag] = signal.data radio_connection.post_signal(src, signal, radio_filter_out) return 1 @@ -167,13 +172,13 @@ if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) return 0 - if("power" in signal.data) + if(signal.data["power"] != null) on = text2num(signal.data["power"]) - if("power_toggle" in signal.data) + if(signal.data["power_toggle"] != null) on = !on - if("panic_siphon" in signal.data) //must be before if("scrubbing" thing - panic = text2num(signal.data["panic_siphon"]) + if(signal.data["panic_siphon"]) //must be before if("scrubbing" thing + panic = text2num(signal.data["panic_siphon"] != null) if(panic) on = 1 scrubbing = 0 @@ -181,7 +186,7 @@ else scrubbing = 1 volume_rate = initial(volume_rate) - if("toggle_panic_siphon" in signal.data) + if(signal.data["toggle_panic_siphon"] != null) panic = !panic if(panic) on = 1 @@ -191,31 +196,31 @@ scrubbing = 1 volume_rate = initial(volume_rate) - if("scrubbing" in signal.data) + if(signal.data["scrubbing"] != null) scrubbing = text2num(signal.data["scrubbing"]) - if("toggle_scrubbing" in signal.data) + if(signal.data["toggle_scrubbing"]) scrubbing = !scrubbing - if("co2_scrub" in signal.data) + if(signal.data["co2_scrub"] != null) scrub_CO2 = text2num(signal.data["co2_scrub"]) - if("toggle_co2_scrub" in signal.data) + if(signal.data["toggle_co2_scrub"]) scrub_CO2 = !scrub_CO2 - if("tox_scrub" in signal.data) + if(signal.data["tox_scrub"] != null) scrub_Toxins = text2num(signal.data["tox_scrub"]) - if("toggle_tox_scrub" in signal.data) + if(signal.data["toggle_tox_scrub"]) scrub_Toxins = !scrub_Toxins - if("n2o_scrub" in signal.data) + if(signal.data["n2o_scrub"] != null) scrub_N2O = text2num(signal.data["n2o_scrub"]) - if("toggle_n2o_scrub" in signal.data) + if(signal.data["toggle_n2o_scrub"]) scrub_N2O = !scrub_N2O - if("init" in signal.data) + if(signal.data["init"] != null) name = signal.data["init"] return - if("status" in signal.data) + if(signal.data["status"] != null) spawn(2) broadcast_status() return //do not update_icon @@ -260,6 +265,8 @@ del(src) /obj/machinery/atmospherics/unary/vent_scrubber/Del() - initial_loc.air_scrub_info -= id_tag + if(initial_loc) + initial_loc.air_scrub_info -= id_tag + initial_loc.air_scrub_names -= id_tag ..() return diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index ad44ab7f02a..0a8cd8d5c2e 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -138,10 +138,10 @@ //all air alarms in area are connected via magic /area var/obj/machinery/alarm/master_air_alarm - var/list/air_vent_names - var/list/air_scrub_names - var/list/air_vent_info - var/list/air_scrub_info + var/list/air_vent_names = list() + var/list/air_scrub_names = list() + var/list/air_vent_info = list() + var/list/air_scrub_info = list() /obj/machinery/alarm/New(nloc, ndir, nbuild) ..() @@ -179,11 +179,6 @@ for (var/obj/machinery/alarm/AA in A) if (!(AA.stat & (NOPOWER|BROKEN))) alarm_area.master_air_alarm = AA - 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 @@ -379,46 +374,6 @@ else return 0 -/obj/machinery/alarm/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 - -/obj/machinery/alarm/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) ) - /obj/machinery/alarm/proc/refresh_all() for(var/id_tag in alarm_area.air_vent_names) var/list/I = alarm_area.air_vent_info[id_tag]