Annihilates the global iterator

This commit is contained in:
AffectedArc07
2020-05-27 21:29:58 +01:00
parent d746971cc7
commit 2d252f3b67
3 changed files with 15 additions and 179 deletions
+15 -26
View File
@@ -37,8 +37,6 @@
var/datum/gas_mixture/cabin_air
var/obj/machinery/portable_atmospherics/canister/internal_tank
var/use_internal_tank = 0
var/datum/global_iterator/pr_int_temp_processor //normalizes internal air mixture temperature
var/datum/global_iterator/pr_give_air //moves air from tank to cabin
var/datum/effect_system/trail_follow/ion/space_trail/ion_trail
@@ -117,8 +115,6 @@
src.ion_trail.set_up(src)
src.ion_trail.start()
src.use_internal_tank = 1
pr_int_temp_processor = new /datum/global_iterator/pod_preserve_temp(list(src))
pr_give_air = new /datum/global_iterator/pod_tank_give_air(list(src))
equipment_system = new(src)
equipment_system.installed_modules += battery
GLOB.spacepods_list += src
@@ -127,6 +123,7 @@
cargo_hold.storage_slots = 0 //You need to install cargo modules to use it.
cargo_hold.max_w_class = 5 //fit almost anything
cargo_hold.max_combined_w_class = 0 //you can optimize your stash with larger items
START_PROCESSING(SSobj, src)
/obj/spacepod/Destroy()
if(equipment_system.cargo_system)
@@ -136,8 +133,6 @@
QDEL_NULL(battery)
QDEL_NULL(cabin_air)
QDEL_NULL(internal_tank)
QDEL_NULL(pr_int_temp_processor)
QDEL_NULL(pr_give_air)
QDEL_NULL(ion_trail)
occupant_sanity_check()
if(pilot)
@@ -148,13 +143,14 @@
M.forceMove(get_turf(src))
passengers -= M
GLOB.spacepods_list -= src
STOP_PROCESSING(SSobj, src)
return ..()
/obj/spacepod/process()
give_air()
regulate_temp()
if(src.empcounter > 0)
src.empcounter--
else
STOP_PROCESSING(SSobj, src)
/obj/spacepod/proc/update_icons()
if(!pod_overlays)
@@ -998,22 +994,17 @@
return 1
/datum/global_iterator/pod_preserve_temp //normalizing cabin air temperature to 20 degrees celsium
delay = 20
process(var/obj/spacepod/spacepod)
if(spacepod.cabin_air && spacepod.cabin_air.return_volume() > 0)
var/delta = spacepod.cabin_air.temperature - T20C
spacepod.cabin_air.temperature -= max(-10, min(10, round(delta/4,0.1)))
/datum/global_iterator/pod_tank_give_air
delay = 15
/datum/global_iterator/pod_tank_give_air/process(var/obj/spacepod/spacepod)
if(spacepod && spacepod.internal_tank)
var/datum/gas_mixture/tank_air = spacepod.internal_tank.return_air()
var/datum/gas_mixture/cabin_air = spacepod.cabin_air
// Fun fact, these procs are just copypastes from mech code
// And have been for the past 4 years
// Please send help
/obj/spacepod/proc/regulate_temp()
if(cabin_air && cabin_air.return_volume() > 0)
var/delta = cabin_air.temperature - T20C
cabin_air.temperature -= max(-10, min(10, round(delta/4,0.1)))
/obj/spacepod/proc/give_air()
if(internal_tank)
var/datum/gas_mixture/tank_air = internal_tank.return_air()
var/release_pressure = ONE_ATMOSPHERE
var/cabin_pressure = cabin_air.return_pressure()
var/pressure_delta = min(release_pressure - cabin_pressure, (tank_air.return_pressure() - cabin_pressure)/2)
@@ -1024,7 +1015,7 @@
var/datum/gas_mixture/removed = tank_air.remove(transfer_moles)
cabin_air.merge(removed)
else if(pressure_delta < 0) //cabin pressure higher than release pressure
var/datum/gas_mixture/t_air = spacepod.get_turf_air()
var/datum/gas_mixture/t_air = get_turf_air()
pressure_delta = cabin_pressure - release_pressure
if(t_air)
pressure_delta = min(cabin_pressure - t_air.return_pressure(), pressure_delta)
@@ -1035,8 +1026,6 @@
t_air.merge(removed)
else //just delete the cabin gas, we're in space or some shit
qdel(removed)
else
return stop()
/obj/spacepod/relaymove(mob/user, direction)
if(user != src.pilot)