diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm
index a62da66d77..3c032a6bce 100644
--- a/code/game/machinery/atmo_control.dm
+++ b/code/game/machinery/atmo_control.dm
@@ -1,512 +1,524 @@
-/obj/machinery/air_sensor
- icon = 'icons/obj/stationobjs.dmi'
- icon_state = "gsensor1"
- name = "Gas Sensor"
-
- anchored = 1
- var/state = 0
-
- var/id_tag
- var/frequency = 1439
-
- var/on = 1
- var/output = 3
- //Flags:
- // 1 for pressure
- // 2 for temperature
- // Output >= 4 includes gas composition
- // 4 for oxygen concentration
- // 8 for phoron concentration
- // 16 for nitrogen concentration
- // 32 for carbon dioxide concentration
-
- var/datum/radio_frequency/radio_connection
-
-/obj/machinery/air_sensor/update_icon()
- icon_state = "gsensor[on]"
-
-/obj/machinery/air_sensor/process()
- if(on)
- var/datum/signal/signal = new
- signal.transmission_method = 1 //radio signal
- signal.data["tag"] = id_tag
- signal.data["timestamp"] = world.time
-
- var/datum/gas_mixture/air_sample = return_air()
-
- if(output&1)
- signal.data["pressure"] = num2text(round(air_sample.return_pressure(),0.1),)
- if(output&2)
- signal.data["temperature"] = round(air_sample.temperature,0.1)
-
- if(output>4)
- var/total_moles = air_sample.total_moles
- if(total_moles > 0)
- if(output&4)
- signal.data["oxygen"] = round(100*air_sample.gas["oxygen"]/total_moles,0.1)
- if(output&8)
- signal.data["phoron"] = round(100*air_sample.gas["phoron"]/total_moles,0.1)
- if(output&16)
- signal.data["nitrogen"] = round(100*air_sample.gas["nitrogen"]/total_moles,0.1)
- if(output&32)
- signal.data["carbon_dioxide"] = round(100*air_sample.gas["carbon_dioxide"]/total_moles,0.1)
- else
- signal.data["oxygen"] = 0
- signal.data["phoron"] = 0
- signal.data["nitrogen"] = 0
- signal.data["carbon_dioxide"] = 0
- signal.data["sigtype"]="status"
- radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
-
-
-/obj/machinery/air_sensor/proc/set_frequency(new_frequency)
- radio_controller.remove_object(src, frequency)
- frequency = new_frequency
- radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA)
-
-/obj/machinery/air_sensor/initialize()
- set_frequency(frequency)
-
-/obj/machinery/air_sensor/New()
- ..()
-
- if(radio_controller)
- set_frequency(frequency)
-
-/obj/machinery/computer/general_air_control
- icon = 'icons/obj/computer.dmi'
- icon_state = "tank"
-
- name = "Computer"
-
- var/frequency = 1439
- var/list/sensors = list()
-
- var/list/sensor_information = list()
- var/datum/radio_frequency/radio_connection
- circuit = /obj/item/weapon/circuitboard/air_management
-
-/obj/machinery/computer/general_air_control/attack_hand(mob/user)
- if(..(user))
- return
- user << browse(return_text(),"window=computer")
- user.set_machine(src)
- onclose(user, "computer")
-
-/obj/machinery/computer/general_air_control/process()
- ..()
- src.updateUsrDialog()
-
-/obj/machinery/computer/general_air_control/receive_signal(datum/signal/signal)
- if(!signal || signal.encryption) return
-
- var/id_tag = signal.data["tag"]
- if(!id_tag || !sensors.Find(id_tag)) return
-
- sensor_information[id_tag] = signal.data
-
-/obj/machinery/computer/general_air_control/proc/return_text()
- var/sensor_data
- if(sensors.len)
- for(var/id_tag in sensors)
- var/long_name = sensors[id_tag]
- var/list/data = sensor_information[id_tag]
- var/sensor_part = "[long_name]:
"
-
- if(data)
- if(data["pressure"])
- sensor_part += " Pressure: [data["pressure"]] kPa
"
- if(data["temperature"])
- sensor_part += " Temperature: [data["temperature"]] K
"
- if(data["oxygen"]||data["phoron"]||data["nitrogen"]||data["carbon_dioxide"])
- sensor_part += " Gas Composition :"
- if(data["oxygen"])
- sensor_part += "[data["oxygen"]]% O2; "
- if(data["nitrogen"])
- sensor_part += "[data["nitrogen"]]% N; "
- if(data["carbon_dioxide"])
- sensor_part += "[data["carbon_dioxide"]]% CO2; "
- if(data["phoron"])
- sensor_part += "[data["phoron"]]% TX; "
- sensor_part += "
"
-
- else
- sensor_part = "[long_name] can not be found!
"
-
- sensor_data += sensor_part
-
- else
- sensor_data = "No sensors connected."
-
- var/output = {"[name]
-Sensor Data:
[sensor_data]"}
-
- return output
-
-/obj/machinery/computer/general_air_control/proc/set_frequency(new_frequency)
- radio_controller.remove_object(src, frequency)
- frequency = new_frequency
- radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA)
-
-/obj/machinery/computer/general_air_control/initialize()
- set_frequency(frequency)
-
-
-/obj/machinery/computer/general_air_control/large_tank_control
- icon = 'icons/obj/computer.dmi'
- icon_state = "tank"
-
- frequency = 1441
- var/input_tag
- var/output_tag
-
- var/list/input_info
- var/list/output_info
-
- var/input_flow_setting = 200
- var/pressure_setting = ONE_ATMOSPHERE * 45
- circuit = /obj/item/weapon/circuitboard/air_management/tank_control
-
-
-/obj/machinery/computer/general_air_control/large_tank_control/return_text()
- var/output = ..()
- //if(signal.data)
- // input_info = signal.data // Attempting to fix intake control -- TLE
-
- output += "Tank Control System
"
- if(input_info)
- var/power = (input_info["power"])
- var/volume_rate = round(input_info["volume_rate"], 0.1)
- output += "Input: [power?("Injecting"):("On Hold")] Refresh
Flow Rate Limit: [volume_rate] L/s
"
- output += "Command: Toggle Power Set Flow Rate
"
-
- else
- output += "ERROR: Can not find input port Search
"
-
- output += "Flow Rate Limit: - - - - [round(input_flow_setting, 0.1)] L/s + + + +
"
-
- output += "
"
-
- if(output_info)
- var/power = (output_info["power"])
- var/output_pressure = output_info["internal"]
- output += {"Output: [power?("Open"):("On Hold")] Refresh
-Max Output Pressure: [output_pressure] kPa
"}
- output += "Command: Toggle Power Set Pressure
"
-
- else
- output += "ERROR: Can not find output port Search
"
-
- output += "Max Output Pressure Set: - - - - [pressure_setting] kPa + + + +
"
-
- return output
-
-/obj/machinery/computer/general_air_control/large_tank_control/receive_signal(datum/signal/signal)
- if(!signal || signal.encryption) return
-
- var/id_tag = signal.data["tag"]
-
- if(input_tag == id_tag)
- input_info = signal.data
- else if(output_tag == id_tag)
- output_info = signal.data
- else
- ..(signal)
-
-/obj/machinery/computer/general_air_control/large_tank_control/Topic(href, href_list)
- if(..())
- return
-
- if(href_list["adj_pressure"])
- var/change = text2num(href_list["adj_pressure"])
- pressure_setting = between(0, pressure_setting + change, 50*ONE_ATMOSPHERE)
- spawn(1)
- src.updateUsrDialog()
- return
-
- if(href_list["adj_input_flow_rate"])
- var/change = text2num(href_list["adj_input_flow_rate"])
- input_flow_setting = between(0, input_flow_setting + change, ATMOS_DEFAULT_VOLUME_PUMP + 500) //default flow rate limit for air injectors
- spawn(1)
- src.updateUsrDialog()
- return
-
- if(!radio_connection)
- return 0
- var/datum/signal/signal = new
- signal.transmission_method = 1 //radio signal
- signal.source = src
- if(href_list["in_refresh_status"])
- input_info = null
- signal.data = list ("tag" = input_tag, "status" = 1)
-
- if(href_list["in_toggle_injector"])
- input_info = null
- signal.data = list ("tag" = input_tag, "power_toggle" = 1)
-
- if(href_list["in_set_flowrate"])
- input_info = null
- signal.data = list ("tag" = input_tag, "set_volume_rate" = "[input_flow_setting]")
-
- if(href_list["out_refresh_status"])
- output_info = null
- signal.data = list ("tag" = output_tag, "status" = 1)
-
- if(href_list["out_toggle_power"])
- output_info = null
- signal.data = list ("tag" = output_tag, "power_toggle" = 1)
-
- if(href_list["out_set_pressure"])
- output_info = null
- signal.data = list ("tag" = output_tag, "set_internal_pressure" = "[pressure_setting]")
-
- signal.data["sigtype"]="command"
- radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
-
- spawn(5)
- src.updateUsrDialog()
-
-/obj/machinery/computer/general_air_control/supermatter_core
- icon = 'icons/obj/computer.dmi'
- icon_state = "tank"
-
- frequency = 1438
- var/input_tag
- var/output_tag
-
- var/list/input_info
- var/list/output_info
-
- var/input_flow_setting = 700
- var/pressure_setting = 100
- circuit = /obj/item/weapon/circuitboard/air_management/supermatter_core
-
-
-/obj/machinery/computer/general_air_control/supermatter_core/return_text()
- var/output = ..()
- //if(signal.data)
- // input_info = signal.data // Attempting to fix intake control -- TLE
-
- output += "Core Cooling Control System
"
- if(input_info)
- var/power = (input_info["power"])
- var/volume_rate = round(input_info["volume_rate"], 0.1)
- output += "Coolant Input: [power?("Injecting"):("On Hold")] Refresh
Flow Rate Limit: [volume_rate] L/s
"
- output += "Command: Toggle Power Set Flow Rate
"
-
- else
- output += "ERROR: Can not find input port Search
"
-
- output += "Flow Rate Limit: - - - - [round(input_flow_setting, 0.1)] L/s + + + +
"
-
- output += "
"
-
- if(output_info)
- var/power = (output_info["power"])
- var/pressure_limit = output_info["external"]
- output += {"Core Outpump: [power?("Open"):("On Hold")] Refresh
-Min Core Pressure: [pressure_limit] kPa
"}
- output += "Command: Toggle Power Set Pressure
"
-
- else
- output += "ERROR: Can not find output port Search
"
-
- output += "Min Core Pressure Set: - - - - [pressure_setting] kPa + + + +
"
-
- return output
-
-/obj/machinery/computer/general_air_control/supermatter_core/receive_signal(datum/signal/signal)
- if(!signal || signal.encryption) return
-
- var/id_tag = signal.data["tag"]
-
- if(input_tag == id_tag)
- input_info = signal.data
- else if(output_tag == id_tag)
- output_info = signal.data
- else
- ..(signal)
-
-/obj/machinery/computer/general_air_control/supermatter_core/Topic(href, href_list)
- if(..())
- return
-
- if(href_list["adj_pressure"])
- var/change = text2num(href_list["adj_pressure"])
- pressure_setting = between(0, pressure_setting + change, 10*ONE_ATMOSPHERE)
- spawn(1)
- src.updateUsrDialog()
- return
-
- if(href_list["adj_input_flow_rate"])
- var/change = text2num(href_list["adj_input_flow_rate"])
- input_flow_setting = between(0, input_flow_setting + change, ATMOS_DEFAULT_VOLUME_PUMP + 500) //default flow rate limit for air injectors
- spawn(1)
- src.updateUsrDialog()
- return
-
- if(!radio_connection)
- return 0
- var/datum/signal/signal = new
- signal.transmission_method = 1 //radio signal
- signal.source = src
- if(href_list["in_refresh_status"])
- input_info = null
- signal.data = list ("tag" = input_tag, "status" = 1)
-
- if(href_list["in_toggle_injector"])
- input_info = null
- signal.data = list ("tag" = input_tag, "power_toggle" = 1)
-
- if(href_list["in_set_flowrate"])
- input_info = null
- signal.data = list ("tag" = input_tag, "set_volume_rate" = "[input_flow_setting]")
-
- if(href_list["out_refresh_status"])
- output_info = null
- signal.data = list ("tag" = output_tag, "status" = 1)
-
- if(href_list["out_toggle_power"])
- output_info = null
- signal.data = list ("tag" = output_tag, "power_toggle" = 1)
-
- if(href_list["out_set_pressure"])
- output_info = null
- signal.data = list ("tag" = output_tag, "set_external_pressure" = "[pressure_setting]", "checks" = 1)
-
- signal.data["sigtype"]="command"
- radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
-
- spawn(5)
- src.updateUsrDialog()
-
-/obj/machinery/computer/general_air_control/fuel_injection
- icon = 'icons/obj/computer.dmi'
- icon_state = "atmos"
-
- var/device_tag
- var/list/device_info
-
- var/automation = 0
-
- var/cutoff_temperature = 2000
- var/on_temperature = 1200
- circuit = /obj/item/weapon/circuitboard/air_management/injector_control
-
-/obj/machinery/computer/general_air_control/fuel_injection/process()
- if(automation)
- if(!radio_connection)
- return 0
-
- var/injecting = 0
- for(var/id_tag in sensor_information)
- var/list/data = sensor_information[id_tag]
- if(data["temperature"])
- if(data["temperature"] >= cutoff_temperature)
- injecting = 0
- break
- if(data["temperature"] <= on_temperature)
- injecting = 1
-
- var/datum/signal/signal = new
- signal.transmission_method = 1 //radio signal
- signal.source = src
-
- signal.data = list(
- "tag" = device_tag,
- "power" = injecting,
- "sigtype"="command"
- )
-
- radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
-
- ..()
-
-/obj/machinery/computer/general_air_control/fuel_injection/return_text()
- var/output = ..()
-
- output += "Fuel Injection System
"
- if(device_info)
- var/power = device_info["power"]
- var/volume_rate = device_info["volume_rate"]
- output += {"Status: [power?("Injecting"):("On Hold")] Refresh
-Rate: [volume_rate] L/sec
"}
-
- if(automation)
- output += "Automated Fuel Injection: Engaged
"
- output += "Injector Controls Locked Out
"
- else
- output += "Automated Fuel Injection: Disengaged
"
- output += "Injector: Toggle Power Inject (1 Cycle)
"
-
- else
- output += "ERROR: Can not find device Search
"
-
- return output
-
-/obj/machinery/computer/general_air_control/fuel_injection/receive_signal(datum/signal/signal)
- if(!signal || signal.encryption) return
-
- var/id_tag = signal.data["tag"]
-
- if(device_tag == id_tag)
- device_info = signal.data
- else
- ..(signal)
-
-/obj/machinery/computer/general_air_control/fuel_injection/Topic(href, href_list)
- if(..())
- return
-
- if(href_list["refresh_status"])
- device_info = null
- if(!radio_connection)
- return 0
-
- var/datum/signal/signal = new
- signal.transmission_method = 1 //radio signal
- signal.source = src
- signal.data = list(
- "tag" = device_tag,
- "status" = 1,
- "sigtype"="command"
- )
- radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
-
- if(href_list["toggle_automation"])
- automation = !automation
-
- if(href_list["toggle_injector"])
- device_info = null
- if(!radio_connection)
- return 0
-
- var/datum/signal/signal = new
- signal.transmission_method = 1 //radio signal
- signal.source = src
- signal.data = list(
- "tag" = device_tag,
- "power_toggle" = 1,
- "sigtype"="command"
- )
-
- radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
-
- if(href_list["injection"])
- if(!radio_connection)
- return 0
-
- var/datum/signal/signal = new
- signal.transmission_method = 1 //radio signal
- signal.source = src
- signal.data = list(
- "tag" = device_tag,
- "inject" = 1,
- "sigtype"="command"
- )
-
- radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
-
-
-
-
+/obj/machinery/air_sensor
+ icon = 'icons/obj/stationobjs.dmi'
+ icon_state = "gsensor1"
+ name = "Gas Sensor"
+
+ anchored = 1
+ var/state = 0
+
+ var/id_tag
+ var/frequency = 1439
+
+ var/on = 1
+ var/output = 3
+ //Flags:
+ // 1 for pressure
+ // 2 for temperature
+ // Output >= 4 includes gas composition
+ // 4 for oxygen concentration
+ // 8 for phoron concentration
+ // 16 for nitrogen concentration
+ // 32 for carbon dioxide concentration
+
+ var/datum/radio_frequency/radio_connection
+
+/obj/machinery/air_sensor/update_icon()
+ icon_state = "gsensor[on]"
+
+/obj/machinery/air_sensor/process()
+ if(on)
+ var/datum/signal/signal = new
+ signal.transmission_method = 1 //radio signal
+ signal.data["tag"] = id_tag
+ signal.data["timestamp"] = world.time
+
+ var/datum/gas_mixture/air_sample = return_air()
+
+ if(output&1)
+ signal.data["pressure"] = num2text(round(air_sample.return_pressure(),0.1),)
+ if(output&2)
+ signal.data["temperature"] = round(air_sample.temperature,0.1)
+
+ if(output>4)
+ var/total_moles = air_sample.total_moles
+ if(total_moles > 0)
+ if(output&4)
+ signal.data["oxygen"] = round(100*air_sample.gas["oxygen"]/total_moles,0.1)
+ if(output&8)
+ signal.data["phoron"] = round(100*air_sample.gas["phoron"]/total_moles,0.1)
+ if(output&16)
+ signal.data["nitrogen"] = round(100*air_sample.gas["nitrogen"]/total_moles,0.1)
+ if(output&32)
+ signal.data["carbon_dioxide"] = round(100*air_sample.gas["carbon_dioxide"]/total_moles,0.1)
+ else
+ signal.data["oxygen"] = 0
+ signal.data["phoron"] = 0
+ signal.data["nitrogen"] = 0
+ signal.data["carbon_dioxide"] = 0
+ signal.data["sigtype"]="status"
+ radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
+
+
+/obj/machinery/air_sensor/proc/set_frequency(new_frequency)
+ radio_controller.remove_object(src, frequency)
+ frequency = new_frequency
+ radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA)
+
+/obj/machinery/air_sensor/initialize()
+ set_frequency(frequency)
+
+/obj/machinery/air_sensor/New()
+ ..()
+
+ if(radio_controller)
+ set_frequency(frequency)
+
+/obj/machinery/computer/general_air_control
+ icon = 'icons/obj/computer.dmi'
+ icon_state = "tank"
+
+ name = "Computer"
+
+ var/frequency = 1439
+ var/list/sensors = list()
+
+ var/list/sensor_information = list()
+ var/datum/radio_frequency/radio_connection
+ circuit = /obj/item/weapon/circuitboard/air_management
+
+/obj/machinery/computer/general_air_control/attack_hand(mob/user)
+ if(..(user))
+ return
+ user << browse(return_text(),"window=computer")
+ user.set_machine(src)
+ onclose(user, "computer")
+
+/obj/machinery/computer/general_air_control/process()
+ ..()
+ src.updateUsrDialog()
+
+/obj/machinery/computer/general_air_control/receive_signal(datum/signal/signal)
+ if(!signal || signal.encryption) return
+
+ var/id_tag = signal.data["tag"]
+ if(!id_tag || !sensors.Find(id_tag)) return
+
+ sensor_information[id_tag] = signal.data
+
+/obj/machinery/computer/general_air_control/proc/return_text()
+ var/sensor_data
+ if(sensors.len)
+ for(var/id_tag in sensors)
+ var/long_name = sensors[id_tag]
+ var/list/data = sensor_information[id_tag]
+ var/sensor_part = "[long_name]:
"
+
+ if(data)
+ if(data["pressure"])
+ sensor_part += " Pressure: [data["pressure"]] kPa
"
+ if(data["temperature"])
+ sensor_part += " Temperature: [data["temperature"]] K
"
+ if(data["oxygen"]||data["phoron"]||data["nitrogen"]||data["carbon_dioxide"])
+ sensor_part += " Gas Composition :"
+ if(data["oxygen"])
+ sensor_part += "[data["oxygen"]]% O2; "
+ if(data["nitrogen"])
+ sensor_part += "[data["nitrogen"]]% N; "
+ if(data["carbon_dioxide"])
+ sensor_part += "[data["carbon_dioxide"]]% CO2; "
+ if(data["phoron"])
+ sensor_part += "[data["phoron"]]% TX; "
+ sensor_part += "
"
+
+ else
+ sensor_part = "[long_name] can not be found!
"
+
+ sensor_data += sensor_part
+
+ else
+ sensor_data = "No sensors connected."
+
+ var/output = {"[name]
+Sensor Data:
[sensor_data]"}
+
+ return output
+
+/obj/machinery/computer/general_air_control/proc/set_frequency(new_frequency)
+ radio_controller.remove_object(src, frequency)
+ frequency = new_frequency
+ radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA)
+
+/obj/machinery/computer/general_air_control/initialize()
+ set_frequency(frequency)
+
+
+/obj/machinery/computer/general_air_control/large_tank_control
+ icon = 'icons/obj/computer.dmi'
+ icon_state = "tank"
+
+ frequency = 1441
+ var/input_tag
+ var/output_tag
+
+ var/list/input_info
+ var/list/output_info
+
+ var/input_flow_setting = 200
+ var/pressure_setting = ONE_ATMOSPHERE * 45
+ circuit = /obj/item/weapon/circuitboard/air_management/tank_control
+
+
+/obj/machinery/computer/general_air_control/large_tank_control/return_text()
+ var/output = ..()
+ //if(signal.data)
+ // input_info = signal.data // Attempting to fix intake control -- TLE
+
+ output += "Tank Control System
"
+ if(input_info)
+ var/power = (input_info["power"])
+ var/volume_rate = round(input_info["volume_rate"], 0.1)
+ output += "Input: [power?("Injecting"):("On Hold")] Refresh
Flow Rate Limit: [volume_rate] L/s
"
+ output += "Command: Toggle Power Set Flow Rate
"
+
+ else
+ output += "ERROR: Can not find input port Search
"
+
+ output += "Flow Rate Limit: - - - - [round(input_flow_setting, 0.1)] L/s + + + +
"
+
+ output += "
"
+
+ if(output_info)
+ var/power = (output_info["power"])
+ var/output_pressure = output_info["internal"]
+ output += {"Output: [power?("Open"):("On Hold")] Refresh
+Max Output Pressure: [output_pressure] kPa
"}
+ output += "Command: Toggle Power Set Pressure
"
+
+ else
+ output += "ERROR: Can not find output port Search
"
+
+ output += "Max Output Pressure Set: - - - - [pressure_setting] kPa + + + +
"
+
+ return output
+
+/obj/machinery/computer/general_air_control/large_tank_control/receive_signal(datum/signal/signal)
+ if(!signal || signal.encryption) return
+
+ var/id_tag = signal.data["tag"]
+
+ if(input_tag == id_tag)
+ input_info = signal.data
+ else if(output_tag == id_tag)
+ output_info = signal.data
+ else
+ ..(signal)
+
+/obj/machinery/computer/general_air_control/large_tank_control/Topic(href, href_list)
+ if(..())
+ return 1
+
+ if(href_list["adj_pressure"])
+ var/change = text2num(href_list["adj_pressure"])
+ pressure_setting = between(0, pressure_setting + change, 50*ONE_ATMOSPHERE)
+ spawn(1)
+ src.updateUsrDialog()
+ return 1
+
+ if(href_list["adj_input_flow_rate"])
+ var/change = text2num(href_list["adj_input_flow_rate"])
+ input_flow_setting = between(0, input_flow_setting + change, ATMOS_DEFAULT_VOLUME_PUMP + 500) //default flow rate limit for air injectors
+ spawn(1)
+ src.updateUsrDialog()
+ return 1
+
+ if(!radio_connection)
+ return 0
+ var/datum/signal/signal = new
+ signal.transmission_method = 1 //radio signal
+ signal.source = src
+ if(href_list["in_refresh_status"])
+ input_info = null
+ signal.data = list ("tag" = input_tag, "status" = 1)
+ return 1
+
+ if(href_list["in_toggle_injector"])
+ input_info = null
+ signal.data = list ("tag" = input_tag, "power_toggle" = 1)
+ return 1
+
+ if(href_list["in_set_flowrate"])
+ input_info = null
+ signal.data = list ("tag" = input_tag, "set_volume_rate" = "[input_flow_setting]")
+ return 1
+
+ if(href_list["out_refresh_status"])
+ output_info = null
+ signal.data = list ("tag" = output_tag, "status" = 1)
+ return 1
+
+ if(href_list["out_toggle_power"])
+ output_info = null
+ signal.data = list ("tag" = output_tag, "power_toggle" = 1)
+ return 1
+
+ if(href_list["out_set_pressure"])
+ output_info = null
+ signal.data = list ("tag" = output_tag, "set_internal_pressure" = "[pressure_setting]")
+ return 1
+
+ signal.data["sigtype"]="command"
+ radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
+
+ spawn(5)
+ src.updateUsrDialog()
+
+/obj/machinery/computer/general_air_control/supermatter_core
+ icon = 'icons/obj/computer.dmi'
+ icon_state = "tank"
+
+ frequency = 1438
+ var/input_tag
+ var/output_tag
+
+ var/list/input_info
+ var/list/output_info
+
+ var/input_flow_setting = 700
+ var/pressure_setting = 100
+ circuit = /obj/item/weapon/circuitboard/air_management/supermatter_core
+
+
+/obj/machinery/computer/general_air_control/supermatter_core/return_text()
+ var/output = ..()
+ //if(signal.data)
+ // input_info = signal.data // Attempting to fix intake control -- TLE
+
+ output += "Core Cooling Control System
"
+ if(input_info)
+ var/power = (input_info["power"])
+ var/volume_rate = round(input_info["volume_rate"], 0.1)
+ output += "Coolant Input: [power?("Injecting"):("On Hold")] Refresh
Flow Rate Limit: [volume_rate] L/s
"
+ output += "Command: Toggle Power Set Flow Rate
"
+
+ else
+ output += "ERROR: Can not find input port Search
"
+
+ output += "Flow Rate Limit: - - - - [round(input_flow_setting, 0.1)] L/s + + + +
"
+
+ output += "
"
+
+ if(output_info)
+ var/power = (output_info["power"])
+ var/pressure_limit = output_info["external"]
+ output += {"Core Outpump: [power?("Open"):("On Hold")] Refresh
+Min Core Pressure: [pressure_limit] kPa
"}
+ output += "Command: Toggle Power Set Pressure
"
+
+ else
+ output += "ERROR: Can not find output port Search
"
+
+ output += "Min Core Pressure Set: - - - - [pressure_setting] kPa + + + +
"
+
+ return output
+
+/obj/machinery/computer/general_air_control/supermatter_core/receive_signal(datum/signal/signal)
+ if(!signal || signal.encryption) return
+
+ var/id_tag = signal.data["tag"]
+
+ if(input_tag == id_tag)
+ input_info = signal.data
+ else if(output_tag == id_tag)
+ output_info = signal.data
+ else
+ ..(signal)
+
+/obj/machinery/computer/general_air_control/supermatter_core/Topic(href, href_list)
+ if(..())
+ return 1
+
+ if(href_list["adj_pressure"])
+ var/change = text2num(href_list["adj_pressure"])
+ pressure_setting = between(0, pressure_setting + change, 10*ONE_ATMOSPHERE)
+ spawn(1)
+ src.updateUsrDialog()
+ return 1
+
+ if(href_list["adj_input_flow_rate"])
+ var/change = text2num(href_list["adj_input_flow_rate"])
+ input_flow_setting = between(0, input_flow_setting + change, ATMOS_DEFAULT_VOLUME_PUMP + 500) //default flow rate limit for air injectors
+ spawn(1)
+ src.updateUsrDialog()
+ return 1
+
+ if(!radio_connection)
+ return 0
+ var/datum/signal/signal = new
+ signal.transmission_method = 1 //radio signal
+ signal.source = src
+ if(href_list["in_refresh_status"])
+ input_info = null
+ signal.data = list ("tag" = input_tag, "status" = 1)
+ return 1
+
+ if(href_list["in_toggle_injector"])
+ input_info = null
+ signal.data = list ("tag" = input_tag, "power_toggle" = 1)
+ return 1
+
+ if(href_list["in_set_flowrate"])
+ input_info = null
+ signal.data = list ("tag" = input_tag, "set_volume_rate" = "[input_flow_setting]")
+ return 1
+
+ if(href_list["out_refresh_status"])
+ output_info = null
+ signal.data = list ("tag" = output_tag, "status" = 1)
+ return 1
+
+ if(href_list["out_toggle_power"])
+ output_info = null
+ signal.data = list ("tag" = output_tag, "power_toggle" = 1)
+ return 1
+
+ if(href_list["out_set_pressure"])
+ output_info = null
+ signal.data = list ("tag" = output_tag, "set_external_pressure" = "[pressure_setting]", "checks" = 1)
+ return 1
+
+ signal.data["sigtype"]="command"
+ radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
+
+ spawn(5)
+ src.updateUsrDialog()
+
+/obj/machinery/computer/general_air_control/fuel_injection
+ icon = 'icons/obj/computer.dmi'
+ icon_state = "atmos"
+
+ var/device_tag
+ var/list/device_info
+
+ var/automation = 0
+
+ var/cutoff_temperature = 2000
+ var/on_temperature = 1200
+ circuit = /obj/item/weapon/circuitboard/air_management/injector_control
+
+/obj/machinery/computer/general_air_control/fuel_injection/process()
+ if(automation)
+ if(!radio_connection)
+ return 0
+
+ var/injecting = 0
+ for(var/id_tag in sensor_information)
+ var/list/data = sensor_information[id_tag]
+ if(data["temperature"])
+ if(data["temperature"] >= cutoff_temperature)
+ injecting = 0
+ break
+ if(data["temperature"] <= on_temperature)
+ injecting = 1
+
+ var/datum/signal/signal = new
+ signal.transmission_method = 1 //radio signal
+ signal.source = src
+
+ signal.data = list(
+ "tag" = device_tag,
+ "power" = injecting,
+ "sigtype"="command"
+ )
+
+ radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
+
+ ..()
+
+/obj/machinery/computer/general_air_control/fuel_injection/return_text()
+ var/output = ..()
+
+ output += "Fuel Injection System
"
+ if(device_info)
+ var/power = device_info["power"]
+ var/volume_rate = device_info["volume_rate"]
+ output += {"Status: [power?("Injecting"):("On Hold")] Refresh
+Rate: [volume_rate] L/sec
"}
+
+ if(automation)
+ output += "Automated Fuel Injection: Engaged
"
+ output += "Injector Controls Locked Out
"
+ else
+ output += "Automated Fuel Injection: Disengaged
"
+ output += "Injector: Toggle Power Inject (1 Cycle)
"
+
+ else
+ output += "ERROR: Can not find device Search
"
+
+ return output
+
+/obj/machinery/computer/general_air_control/fuel_injection/receive_signal(datum/signal/signal)
+ if(!signal || signal.encryption) return
+
+ var/id_tag = signal.data["tag"]
+
+ if(device_tag == id_tag)
+ device_info = signal.data
+ else
+ ..(signal)
+
+/obj/machinery/computer/general_air_control/fuel_injection/Topic(href, href_list)
+ if(..())
+ return
+
+ if(href_list["refresh_status"])
+ device_info = null
+ if(!radio_connection)
+ return 0
+
+ var/datum/signal/signal = new
+ signal.transmission_method = 1 //radio signal
+ signal.source = src
+ signal.data = list(
+ "tag" = device_tag,
+ "status" = 1,
+ "sigtype"="command"
+ )
+ radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
+
+ if(href_list["toggle_automation"])
+ automation = !automation
+
+ if(href_list["toggle_injector"])
+ device_info = null
+ if(!radio_connection)
+ return 0
+
+ var/datum/signal/signal = new
+ signal.transmission_method = 1 //radio signal
+ signal.source = src
+ signal.data = list(
+ "tag" = device_tag,
+ "power_toggle" = 1,
+ "sigtype"="command"
+ )
+
+ radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
+
+ if(href_list["injection"])
+ if(!radio_connection)
+ return 0
+
+ var/datum/signal/signal = new
+ signal.transmission_method = 1 //radio signal
+ signal.source = src
+ signal.data = list(
+ "tag" = device_tag,
+ "inject" = 1,
+ "sigtype"="command"
+ )
+
+ radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
+
+
+
+
diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm
index bcd7beda08..b35cfd95a6 100644
--- a/code/game/machinery/computer/Operating.dm
+++ b/code/game/machinery/computer/Operating.dm
@@ -71,7 +71,7 @@
/obj/machinery/computer/operating/Topic(href, href_list)
if(..())
- return
+ return 1
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
usr.set_machine(src)
return
diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm
index 223f9523cc..e9d1f60674 100644
--- a/code/game/machinery/computer/aifixer.dm
+++ b/code/game/machinery/computer/aifixer.dm
@@ -113,7 +113,7 @@
/obj/machinery/computer/aifixer/Topic(href, href_list)
if(..())
- return
+ return 1
if (href_list["fix"])
src.active = 1
src.overlays += image('icons/obj/computer.dmi', "ai-fixer-on")
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 056c45e4f8..db7b44f7ad 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -84,7 +84,7 @@
/obj/machinery/computer/arcade/Topic(href, href_list)
if(..())
- return
+ return 1
if (!src.blocked && !src.gameover)
if (href_list["attack"])
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index 484f39df25..a77a3071b1 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -188,7 +188,7 @@
/obj/machinery/computer/cloning/Topic(href, href_list)
if(..())
- return
+ return 1
if(loading)
return
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index a8403bbede..9df53b039c 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -47,7 +47,7 @@
/obj/machinery/computer/communications/Topic(href, href_list)
if(..())
- return
+ return 1
if (src.z > 1)
usr << "\red Unable to establish a connection: \black You're too far away from the station!"
return
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index b639334c01..304ac7d1af 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -109,12 +109,6 @@
if(istype(user, /mob/dead/observer)) return 0
return ..()
-/obj/machinery/computer/Topic(href, href_list)
- /* Can't use topic as observer by default */
- if(istype(usr, /mob/dead/observer)) return 0
- return ..()
-
-
/obj/machinery/computer/attackby(I as obj, user as mob)
if(istype(I, /obj/item/weapon/screwdriver) && circuit)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm
index 7b524fe989..121942a418 100644
--- a/code/game/machinery/computer/guestpass.dm
+++ b/code/game/machinery/computer/guestpass.dm
@@ -106,7 +106,7 @@
/obj/machinery/computer/guestpass/Topic(href, href_list)
if(..())
- return
+ return 1
usr.set_machine(src)
if (href_list["mode"])
mode = text2num(href_list["mode"])
diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm
index a30f355d2a..bc7892b9bc 100644
--- a/code/game/machinery/computer/message.dm
+++ b/code/game/machinery/computer/message.dm
@@ -283,7 +283,7 @@
/obj/machinery/computer/message_monitor/Topic(href, href_list)
if(..())
- return
+ return 1
if(stat & (NOPOWER|BROKEN))
return
if(!istype(usr, /mob/living))
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index b429c70306..41d73ee2ae 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -98,7 +98,7 @@
/obj/machinery/computer/robotics/Topic(href, href_list)
if(..())
- return
+ return 1
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
usr.set_machine(src)
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index f3a7f80203..5d5d995a41 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -208,7 +208,7 @@ I can't be bothered to look more of the actual code outside of switch but that p
What a mess.*/
/obj/machinery/computer/secure_data/Topic(href, href_list)
if(..())
- return
+ return 1
if (!( data_core.general.Find(active1) ))
active1 = null
if (!( data_core.security.Find(active2) ))
@@ -612,4 +612,4 @@ What a mess.*/
/obj/machinery/computer/secure_data/detective_computer
icon = 'icons/obj/computer.dmi'
- icon_state = "messyfiles"
+ icon_state = "messyfiles"
diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm
index 8382f87185..4d4997d23b 100644
--- a/code/game/machinery/computer/skills.dm
+++ b/code/game/machinery/computer/skills.dm
@@ -148,7 +148,7 @@ I can't be bothered to look more of the actual code outside of switch but that p
What a mess.*/
/obj/machinery/computer/skills/Topic(href, href_list)
if(..())
- return
+ return 1
if (!( data_core.general.Find(active1) ))
active1 = null
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
diff --git a/code/game/machinery/computer/specops_shuttle.dm b/code/game/machinery/computer/specops_shuttle.dm
index a76a19ddd7..8d51017603 100644
--- a/code/game/machinery/computer/specops_shuttle.dm
+++ b/code/game/machinery/computer/specops_shuttle.dm
@@ -283,7 +283,7 @@ var/specops_shuttle_timeleft = 0
/obj/machinery/computer/specops_shuttle/Topic(href, href_list)
if(..())
- return
+ return 1
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
usr.machine = src
@@ -541,7 +541,7 @@ var/specops_shuttle_timeleft = 0
/obj/machinery/computer/specops_shuttle/Topic(href, href_list)
if(..())
- return
+ return 1
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
usr.set_machine(src)
diff --git a/code/game/machinery/computer/supply.dm b/code/game/machinery/computer/supply.dm
index 9f69c7bc1c..e27813ccf6 100644
--- a/code/game/machinery/computer/supply.dm
+++ b/code/game/machinery/computer/supply.dm
@@ -49,7 +49,7 @@
/obj/machinery/computer/ordercomp/Topic(href, href_list)
if(..())
- return
+ return 1
if( isturf(loc) && (in_range(src, usr) || istype(usr, /mob/living/silicon)) )
usr.set_machine(src)
@@ -224,7 +224,7 @@
world.log << "## ERROR: Eek. The supply/shuttle datum is missing somehow."
return
if(..())
- return
+ return 1
if(isturf(loc) && ( in_range(src, usr) || istype(usr, /mob/living/silicon) ) )
usr.set_machine(src)
diff --git a/code/game/machinery/computer/syndicate_specops_shuttle.dm b/code/game/machinery/computer/syndicate_specops_shuttle.dm
index eb8acc83f5..970bb362c3 100644
--- a/code/game/machinery/computer/syndicate_specops_shuttle.dm
+++ b/code/game/machinery/computer/syndicate_specops_shuttle.dm
@@ -218,7 +218,7 @@ var/syndicate_elite_shuttle_timeleft = 0
/obj/machinery/computer/syndicate_elite_shuttle/Topic(href, href_list)
if(..())
- return
+ return 1
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
usr.set_machine(src)