Makes Nitrous Oxide Visible on Air Alarm, PDA, and Analyzer (#20891)

* Makes N2O not a trace gas

* Back end for nitrous readout on air alarm

* Makes nitrous appear on atmosphere scanners

* adds N2O bar to air alarm UI

* adds nitrous to PDA scanner

* TGUI Rebuild
This commit is contained in:
Silverplate
2023-04-24 19:34:25 +02:00
committed by GitHub
parent 33e13d2fc4
commit 1e3d1dc6d6
7 changed files with 39 additions and 6 deletions
@@ -56,7 +56,7 @@ What are the archived variables for?
return moles
/datum/gas_mixture/proc/total_trace_moles()
var/moles = sleeping_agent + agent_b
var/moles = agent_b
return moles
/// Calculate pressure in kilopascals
@@ -154,6 +154,7 @@
"nitrogen" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa
"carbon dioxide" = new/datum/tlv(-1.0, -1.0, 5, 10), // Partial pressure, kpa
"plasma" = new/datum/tlv(-1.0, -1.0, 0.2, 0.5), // Partial pressure, kpa
"nitrous oxide" = new/datum/tlv(-1.0, -1.0, 0.2, 0.5), // Partial pressure, kpa
"other" = new/datum/tlv(-1.0, -1.0, 0.5, 1.0), // Partial pressure, kpa
"pressure" = new/datum/tlv(ONE_ATMOSPHERE*0.80,ONE_ATMOSPHERE*0.90,ONE_ATMOSPHERE*1.10,ONE_ATMOSPHERE*1.20), /* kpa */
"temperature" = new/datum/tlv(T0C, T0C+10, T0C+40, T0C+66), // K
@@ -165,6 +166,7 @@
"nitrogen" = new/datum/tlv(16, 19, 135, 140), // Partial pressure, kpa
"carbon dioxide" = new/datum/tlv(-1.0, -1.0, 5, 10), // Partial pressure, kpa
"plasma" = new/datum/tlv(-1.0, -1.0, 0.2, 0.5), // Partial pressure, kpa
"nitrous oxide" = new/datum/tlv(-1.0, -1.0, 0.2, 0.5), // Partial pressure, kpa
"other" = new/datum/tlv(-1.0, -1.0, 0.5, 1.0), // Partial pressure, kpa
"pressure" = new/datum/tlv(ONE_ATMOSPHERE*0.80,ONE_ATMOSPHERE*0.90,ONE_ATMOSPHERE*1.10,ONE_ATMOSPHERE*1.20), /* kpa */
"temperature" = new/datum/tlv(T0C, T0C+10, T0C+40, T0C+66), // K
@@ -175,6 +177,7 @@
"nitrogen" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa
"carbon dioxide" = new/datum/tlv(-1.0, -1.0, 5, 10), // Partial pressure, kpa
"plasma" = new/datum/tlv(-1.0, -1.0, 0.2, 0.5), // Partial pressure, kpa
"nitrous oxide" = new/datum/tlv(-1.0, -1.0, 0.2, 0.5), // Partial pressure, kpa
"other" = new/datum/tlv(-1.0, -1.0, 0.5, 1.0), // Partial pressure, kpa
"pressure" = new/datum/tlv(ONE_ATMOSPHERE*0.80,ONE_ATMOSPHERE*0.90,ONE_ATMOSPHERE*1.50,ONE_ATMOSPHERE*1.60), /* kpa */
"temperature" = new/datum/tlv(T0C-50, T0C-20, T0C, T20C), // K
@@ -185,6 +188,7 @@
"nitrogen" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa
"carbon dioxide" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa
"plasma" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa
"nitrous oxide" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa
"other" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa
"pressure" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), /* kpa */
"temperature" = new/datum/tlv(0, 0, T20C + 5, T20C + 15), // K
@@ -196,6 +200,7 @@
"nitrogen" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa
"carbon dioxide" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa
"plasma" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa
"nitrous oxide" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa
"other" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa
"pressure" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), /* kpa */
"temperature" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // K
@@ -295,6 +300,9 @@
cur_tlv = TLV["plasma"]
var/plasma_dangerlevel = cur_tlv.get_danger_level(environment.toxins*GET_PP)
cur_tlv = TLV["nitrous oxide"]
var/sleeping_agent_dangerlevel = cur_tlv.get_danger_level(environment.sleeping_agent*GET_PP)
cur_tlv = TLV["other"]
var/other_dangerlevel = cur_tlv.get_danger_level(environment.total_trace_moles() * GET_PP)
@@ -308,6 +316,7 @@
nitrogen_dangerlevel,
co2_dangerlevel,
plasma_dangerlevel,
sleeping_agent_dangerlevel,
other_dangerlevel,
temperature_dangerlevel
)
@@ -584,7 +593,7 @@
return
var/datum/gas_mixture/environment = location.return_air()
var/known_total = environment.oxygen + environment.nitrogen + environment.carbon_dioxide + environment.toxins
var/known_total = environment.oxygen + environment.nitrogen + environment.carbon_dioxide + environment.toxins + environment.sleeping_agent
var/total = environment.total_moles()
var/datum/tlv/cur_tlv
@@ -610,6 +619,10 @@
var/plasma_dangerlevel = cur_tlv.get_danger_level(environment.toxins*GET_PP)
var/plasma_percent = total ? environment.toxins / total * 100 : 0
cur_tlv = TLV["nitrous oxide"]
var/sleeping_agent_dangerlevel = cur_tlv.get_danger_level(environment.sleeping_agent*GET_PP)
var/sleeping_agent_percent = total ? environment.sleeping_agent / total * 100 : 0
cur_tlv = TLV["other"]
var/other_moles = total - known_total
var/other_dangerlevel = cur_tlv.get_danger_level(other_moles*GET_PP)
@@ -629,6 +642,7 @@
percentages["nitrogen"] = nitrogen_percent
percentages["co2"] = co2_percent
percentages["plasma"] = plasma_percent
percentages["n2o"] = sleeping_agent_percent
percentages["other"] = other_percent
data["contents"] = percentages
@@ -639,6 +653,7 @@
danger["nitrogen"] = nitrogen_dangerlevel
danger["co2"] = co2_dangerlevel
danger["plasma"] = plasma_dangerlevel
danger["n2o"] = sleeping_agent_dangerlevel
danger["other"] = other_dangerlevel
danger["overall"] = max(pressure_dangerlevel,oxygen_dangerlevel,nitrogen_dangerlevel,co2_dangerlevel,plasma_dangerlevel,other_dangerlevel,temperature_dangerlevel)
data["danger"] = danger
@@ -739,6 +754,7 @@
"nitrogen" = "N2",
"carbon dioxide" = "CO2",
"plasma" = "Toxin",
"nitrous oxide" = "N2O",
"other" = "Other")
for(var/g in gas_names)
thresholds += list(list("name" = gas_names[g], "settings" = list()))
+3 -1
View File
@@ -113,7 +113,8 @@
var/n2_level = environment.nitrogen/total_moles
var/co2_level = environment.carbon_dioxide/total_moles
var/plasma_level = environment.toxins/total_moles
var/unknown_level = 1-(o2_level+n2_level+co2_level+plasma_level)
var/n2o_level = environment.sleeping_agent/total_moles
var/unknown_level = 1-(o2_level+n2_level+co2_level+plasma_level+n2o_level)
results = list(
list("entry" = "Pressure", "units" = "kPa", "val" = "[round(pressure,0.1)]", "bad_high" = 120, "poor_high" = 110, "poor_low" = 95, "bad_low" = 80),
list("entry" = "Temperature", "units" = "C", "val" = "[round(environment.temperature-T0C,0.1)]", "bad_high" = 35, "poor_high" = 25, "poor_low" = 15, "bad_low" = 5),
@@ -121,6 +122,7 @@
list("entry" = "Nitrogen", "units" = "%", "val" = "[round(n2_level*100,0.1)]", "bad_high" = 105, "poor_high" = 85, "poor_low" = 50, "bad_low" = 40),
list("entry" = "Carbon Dioxide", "units" = "%", "val" = "[round(co2_level*100,0.1)]", "bad_high" = 10, "poor_high" = 5, "poor_low" = 0, "bad_low" = 0),
list("entry" = "Plasma", "units" = "%", "val" = "[round(plasma_level*100,0.01)]", "bad_high" = 0.5, "poor_high" = 0, "poor_low" = 0, "bad_low" = 0),
list("entry" = "Nitrous Oxide", "units" = "%", "val" = "[round(n2o_level*100,0.01)]", "bad_high" = 0.5, "poor_high" = 0, "poor_low" = 0, "bad_low" = 0),
list("entry" = "Other", "units" = "%", "val" = "[round(unknown_level*100,0.01)]", "bad_high" = 1, "poor_high" = 0.5, "poor_low" = 0, "bad_low" = 0)
)