Clean up air tank processing and initialize

This commit is contained in:
Aronai Sieyes
2020-05-13 11:28:22 -04:00
parent 19f165f0cf
commit 696bdeec8f
3 changed files with 22 additions and 38 deletions
@@ -84,9 +84,8 @@
item_state_slots = list(slot_r_hand_str = "jetpack-void", slot_l_hand_str = "jetpack-void")
/obj/item/weapon/tank/jetpack/void/Initialize()
..()
. = ..()
air_contents.adjust_gas("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
return
/obj/item/weapon/tank/jetpack/oxygen
name = "jetpack (oxygen)"
@@ -95,9 +94,8 @@
item_state_slots = list(slot_r_hand_str = "jetpack", slot_l_hand_str = "jetpack")
/obj/item/weapon/tank/jetpack/oxygen/Initialize()
..()
. = ..()
air_contents.adjust_gas("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
return
/obj/item/weapon/tank/jetpack/carbondioxide
name = "jetpack (carbon dioxide)"
@@ -107,9 +105,8 @@
item_state_slots = list(slot_r_hand_str = "jetpack-black", slot_l_hand_str = "jetpack-black")
/obj/item/weapon/tank/jetpack/carbondioxide/Initialize()
..()
. = ..()
air_contents.adjust_gas("carbon_dioxide", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
return
/obj/item/weapon/tank/jetpack/rig
name = "jetpack"
@@ -17,9 +17,8 @@
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
/obj/item/weapon/tank/oxygen/Initialize()
..()
. = ..()
air_contents.adjust_gas("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
return
/obj/item/weapon/tank/oxygen/examine(mob/user)
. = ..()
@@ -43,14 +42,12 @@
icon_state = "anesthetic"
/obj/item/weapon/tank/anesthetic/Initialize()
..()
. = ..()
air_contents.gas["oxygen"] = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD
air_contents.gas["sleeping_agent"] = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD
air_contents.update_values()
return
/*
* Air
*/
@@ -66,12 +63,9 @@
user << sound('sound/effects/alert.ogg')
/obj/item/weapon/tank/air/Initialize()
..()
. = ..()
src.air_contents.adjust_multi("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD, "nitrogen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD)
return
/*
* Phoron
*/
@@ -83,10 +77,8 @@
slot_flags = null //they have no straps!
/obj/item/weapon/tank/phoron/Initialize()
..()
. = ..()
src.air_contents.adjust_gas("phoron", (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C))
return
/obj/item/weapon/tank/phoron/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
@@ -109,10 +101,8 @@
slot_flags = SLOT_BACK //these ones have straps!
/obj/item/weapon/tank/vox/Initialize()
..()
. = ..()
air_contents.adjust_gas("phoron", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
return
/obj/item/weapon/tank/phoron/pressurized
name = "fuel can"
@@ -120,12 +110,9 @@
w_class = ITEMSIZE_NORMAL
/obj/item/weapon/tank/phoron/pressurized/Initialize()
..()
. = ..()
adjust_scale(0.8)
air_contents.adjust_gas("phoron", (7*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
return
/*
* Emergency Oxygen
@@ -149,9 +136,8 @@
gauge_icon = "indicator_emergency"
/obj/item/weapon/tank/emergency/oxygen/Initialize()
..()
. = ..()
src.air_contents.adjust_gas("oxygen", (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
return
/obj/item/weapon/tank/emergency/oxygen/examine(mob/user)
. = ..()
@@ -178,9 +164,8 @@
volume = 10
/obj/item/weapon/tank/stasis/oxygen/Initialize()
..()
. = ..()
src.air_contents.adjust_gas("oxygen", (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
return
/obj/item/weapon/tank/emergency/nitrogen
name = "emergency nitrogen tank"
@@ -205,7 +190,7 @@
gauge_icon = "indicator_emergency"
/obj/item/weapon/tank/emergency/phoron/Initialize()
..()
. = ..()
src.air_contents.adjust_gas("phoron", (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
/obj/item/weapon/tank/emergency/phoron/double
@@ -224,10 +209,8 @@
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
/obj/item/weapon/tank/nitrogen/Initialize()
..()
. = ..()
src.air_contents.adjust_gas("nitrogen", (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C))
return
/obj/item/weapon/tank/nitrogen/examine(mob/user)
. = ..()
@@ -243,6 +226,5 @@
volume = 10
/obj/item/weapon/tank/stasis/nitro_cryo/Initialize()
..()
. = ..()
src.air_contents.adjust_gas_temp("nitrogen", (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*TN60C), TN60C)
return
@@ -59,15 +59,13 @@ var/list/global/tank_gauge_cache = list()
/obj/item/weapon/tank/Initialize()
..()
. = ..()
src.init_proxy()
src.air_contents = new /datum/gas_mixture()
src.air_contents.volume = volume //liters
src.air_contents.temperature = T20C
START_PROCESSING(SSobj, src)
update_gauge()
return
/obj/item/weapon/tank/Destroy()
QDEL_NULL(air_contents)
@@ -81,6 +79,13 @@ var/list/global/tank_gauge_cache = list()
. = ..()
/obj/item/weapon/tank/equipped() // Note that even grabbing into a hand calls this, so it should be fine as a 'has a player touched this'
. = ..()
// An attempt at optimization. There are MANY tanks during rounds that will never get touched.
// Don't see why any of those would explode spontaneously. So only tanks that players touch get processed.
// This could be optimized more, but it's a start!
START_PROCESSING(SSobj, src) // This has a built in safety to avoid multi-processing
/obj/item/weapon/tank/examine(mob/user)
. = ..()
if(loc == user)