From 1f17b58975194b90e10756c8dc6ba718a514f830 Mon Sep 17 00:00:00 2001
From: Meghan-Rossi <56671765+Meghan-Rossi@users.noreply.github.com>
Date: Thu, 14 Nov 2019 10:28:00 +0000
Subject: [PATCH 1/2] Improve analyzers and gas mixers
Analyzers can now analyze more things:
-Turfs (also stops runtimes from people trying to analyze turfs)
-Meters (gives results for whatever the meter's attached to)
-All atmos components except valves (gives results for the input, except on mixers. Gives results for the output on mixers)
Gas mixers now show what direction each input is in the menu where you adjust the concentrations of the input nodes.
---
.../components/trinary_devices/mixer.dm | 5 ++-
code/_helpers/atmospherics.dm | 38 +++++++++++++++++--
2 files changed, 37 insertions(+), 6 deletions(-)
diff --git a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm
index 84c5d49daa..8bf3d3477c 100644
--- a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm
+++ b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm
@@ -85,20 +85,21 @@
to_chat(user, "Access denied.")
return
usr.set_machine(src)
+ var/list/node_connects = get_node_connect_dirs()
var/dat = {"Power: [use_power?"On":"Off"]
Set Flow Rate Limit:
[set_flow_rate]L/s | Change
Flow Rate: [round(last_flow_rate, 0.1)]L/s
- Node 1 Concentration:
+ Node 1 ([dir_name(node_connects[1],TRUE)]) Concentration:
-
-
[mixing_inputs[air1]]([mixing_inputs[air1]*100]%)
+
+
- Node 2 Concentration:
+ Node 2 ([dir_name(node_connects[2],TRUE)]) Concentration:
-
-
[mixing_inputs[air2]]([mixing_inputs[air2]*100]%)
diff --git a/code/_helpers/atmospherics.dm b/code/_helpers/atmospherics.dm
index 2fe393b4dc..625210cf85 100644
--- a/code/_helpers/atmospherics.dm
+++ b/code/_helpers/atmospherics.dm
@@ -14,11 +14,11 @@
return 0
/proc/atmosanalyzer_scan(var/obj/target, var/datum/gas_mixture/mixture, var/mob/user)
- var/pressure = mixture.return_pressure()
- var/total_moles = mixture.total_moles
-
var/list/results = list()
- if (total_moles>0)
+
+ if (mixture && mixture.total_moles > 0)
+ var/pressure = mixture.return_pressure()
+ var/total_moles = mixture.total_moles
results += "Pressure: [round(pressure,0.1)] kPa"
for(var/mix in mixture.gas)
results += "[gas_data.name[mix]]: [round((mixture.gas[mix] / total_moles) * 100)]%"
@@ -28,6 +28,9 @@
return results
+/turf/proc/atmosanalyze(var/mob/user)
+ return atmosanalyzer_scan(src, src.air, user)
+
/obj/proc/atmosanalyze(var/mob/user)
return
@@ -40,6 +43,33 @@
/obj/machinery/atmospherics/pipe/atmosanalyze(var/mob/user)
return atmosanalyzer_scan(src, src.parent.air, user)
+/obj/machinery/atmospherics/portables_connector/atmosanalyze(var/mob/user)
+ return atmosanalyzer_scan(src, src.network.gases, user)
+
+/obj/machinery/atmospherics/unary/atmosanalyze(var/mob/user)
+ return atmosanalyzer_scan(src, src.air_contents, user)
+
+/obj/machinery/atmospherics/binary/atmosanalyze(var/mob/user)
+ return atmosanalyzer_scan(src, src.air1, user)
+
+/obj/machinery/atmospherics/trinary/atmos_filter/atmosanalyze(var/mob/user)
+ return atmosanalyzer_scan(src, src.air1, user)
+
+/obj/machinery/atmospherics/trinary/mixer/atmosanalyze(var/mob/user)
+ return atmosanalyzer_scan(src, src.air3, user)
+
+/obj/machinery/atmospherics/omni/atmos_filter/atmosanalyze(var/mob/user)
+ return atmosanalyzer_scan(src, src.input.air, user)
+
+/obj/machinery/atmospherics/omni/mixer/atmosanalyze(var/mob/user)
+ return atmosanalyzer_scan(src, src.output.air, user)
+
+/obj/machinery/meter/atmosanalyze(var/mob/user)
+ var/datum/gas_mixture/mixture = null
+ if(src.target)
+ mixture = src.target.parent.air
+ return atmosanalyzer_scan(src, mixture, user)
+
/obj/machinery/power/rad_collector/atmosanalyze(var/mob/user)
if(P) return atmosanalyzer_scan(src, src.P.air_contents, user)
From f8da69da6a5ae2bd9f4dd5df7914e4f6faa976ca Mon Sep 17 00:00:00 2001
From: Meghan-Rossi <56671765+Meghan-Rossi@users.noreply.github.com>
Date: Thu, 14 Nov 2019 17:14:05 +0000
Subject: [PATCH 2/2] Fix runtimes from trying to analyze mobs.
---
code/_helpers/atmospherics.dm | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/code/_helpers/atmospherics.dm b/code/_helpers/atmospherics.dm
index 625210cf85..e211ed329a 100644
--- a/code/_helpers/atmospherics.dm
+++ b/code/_helpers/atmospherics.dm
@@ -1,4 +1,4 @@
-/obj/proc/analyze_gases(var/obj/A, var/mob/user)
+/obj/proc/analyze_gases(var/atom/A, var/mob/user)
if(src != A)
user.visible_message("\The [user] has used \an [src] on \the [A]")
@@ -13,7 +13,7 @@
user << "Your [src] flashes a red light as it fails to analyze \the [A]."
return 0
-/proc/atmosanalyzer_scan(var/obj/target, var/datum/gas_mixture/mixture, var/mob/user)
+/proc/atmosanalyzer_scan(var/atom/target, var/datum/gas_mixture/mixture, var/mob/user)
var/list/results = list()
if (mixture && mixture.total_moles > 0)
@@ -28,10 +28,10 @@
return results
-/turf/proc/atmosanalyze(var/mob/user)
+/turf/atmosanalyze(var/mob/user)
return atmosanalyzer_scan(src, src.air, user)
-/obj/proc/atmosanalyze(var/mob/user)
+/atom/proc/atmosanalyze(var/mob/user)
return
/obj/item/weapon/tank/atmosanalyze(var/mob/user)