diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 08c4b15519c3..08f7d59e96fe 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -690,7 +690,7 @@ if(!istype(T)) return var/datum/gas_mixture/environment = T.return_air() - if(!istype(environment)) + if(!environment) return var/pressure = environment.return_pressure() if(pressure <= LAVALAND_EQUIPMENT_EFFECT_PRESSURE) diff --git a/code/datums/components/rot.dm b/code/datums/components/rot.dm index 6a35aecbe75a..eafc103a2284 100644 --- a/code/datums/components/rot.dm +++ b/code/datums/components/rot.dm @@ -21,6 +21,8 @@ return var/datum/gas_mixture/turf_air = T.return_air() + if(!turf_air) + return var/datum/gas_mixture/stank_breath = T.remove_air(1 / turf_air.return_volume() * turf_air.total_moles()) if(!stank_breath) return diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 0535265d02b2..00ca7e71aa4a 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -394,7 +394,7 @@ . = 0 if(M.loc) - environment = M.loc.return_air() + environment = M.return_air() if(environment) if(environment.get_moles(GAS_PLASMA) > GLOB.gas_data.visibility[GAS_PLASMA]) //if there's enough plasma in the air to see . += power * 0.5 diff --git a/code/datums/mutations/actions.dm b/code/datums/mutations/actions.dm index 5471f0e7e461..70ef228f4717 100644 --- a/code/datums/mutations/actions.dm +++ b/code/datums/mutations/actions.dm @@ -42,7 +42,7 @@ /obj/effect/proc_holder/spell/targeted/olfaction/cast(list/targets, mob/living/user = usr) //can we sniff? is there miasma in the air? - var/datum/gas_mixture/air = user.loc.return_air() + var/datum/gas_mixture/air = user.return_air() if(air.get_moles(GAS_MIASMA) >= 0.1) user.adjust_disgust(sensitivity * 45) to_chat(user, span_warning("With your overly sensitive nose, you get a whiff of stench and feel sick! Try moving to a cleaner area!")) diff --git a/code/game/machinery/airlock_cycle_control.dm b/code/game/machinery/airlock_cycle_control.dm index 088fc61e6a16..598171d53e9b 100644 --- a/code/game/machinery/airlock_cycle_control.dm +++ b/code/game/machinery/airlock_cycle_control.dm @@ -135,14 +135,12 @@ airlock.bolt() /obj/machinery/advanced_airlock_controller/update_icon(use_hash = FALSE) - var/turf/location = get_turf(src) - if(!location) + if(!isopenturf(get_turf(src))) return var/pressure = 0 - if(location) - var/datum/gas_mixture/environment = location.return_air() - if(environment) - pressure = environment.return_pressure() + var/datum/gas_mixture/environment = return_air() + if(environment) + pressure = environment.return_pressure() var/maxpressure = (exterior_pressure && (cyclestate == AIRLOCK_CYCLESTATE_OUTCLOSING || cyclestate == AIRLOCK_CYCLESTATE_OUTOPENING || cyclestate == AIRLOCK_CYCLESTATE_OUTOPEN)) ? exterior_pressure : interior_pressure var/pressure_bars = round(pressure / maxpressure * 5 + 0.01) @@ -295,15 +293,13 @@ update_icon(TRUE) return - var/turf/location = get_turf(src) - if(!location) + if(!isopenturf(get_turf(src))) update_icon(TRUE) return var/pressure = 0 - if(location) - var/datum/gas_mixture/environment = location.return_air() - if(environment) - pressure = environment.return_pressure() + var/datum/gas_mixture/environment = return_air() + if(environment) + pressure = environment.return_pressure() update_error_status() var/doors_valid = TRUE @@ -596,10 +592,9 @@ ui.open() /obj/machinery/advanced_airlock_controller/ui_data(mob/user) - var/turf/T = get_turf(src) var/pressure = 0 - if(T) - var/datum/gas_mixture/environment = T.return_air() + if(isopenturf(get_turf(src))) + var/datum/gas_mixture/environment = return_air() if(environment) pressure = environment.return_pressure() diff --git a/code/game/machinery/electrolyzer.dm b/code/game/machinery/electrolyzer.dm index 7ef92440e3e9..1acf24aa7ed9 100644 --- a/code/game/machinery/electrolyzer.dm +++ b/code/game/machinery/electrolyzer.dm @@ -70,8 +70,7 @@ update_icon() return PROCESS_KILL - var/turf/L = loc - if(!istype(L)) + if(!isopenturf(get_turf(src))) if(mode != ELECTROLYZER_MODE_STANDBY) mode = ELECTROLYZER_MODE_STANDBY update_icon() @@ -86,7 +85,7 @@ if(mode == ELECTROLYZER_MODE_STANDBY) return - var/datum/gas_mixture/env = L.return_air() //get air from the turf + var/datum/gas_mixture/env = return_air() //get air from the turf var/datum/gas_mixture/removed = env.remove(0.1 * env.total_moles()) if(!removed) diff --git a/code/game/machinery/shuttle/shuttle_engine.dm b/code/game/machinery/shuttle/shuttle_engine.dm index 2726e21b0b8f..6c62d06978b2 100644 --- a/code/game/machinery/shuttle/shuttle_engine.dm +++ b/code/game/machinery/shuttle/shuttle_engine.dm @@ -111,10 +111,11 @@ //Thanks to spaceheater.dm for inspiration :) /obj/machinery/shuttle/engine/proc/fireEngine() - var/turf/heatTurf = loc - if(!heatTurf) + if(!isopenturf(get_turf(src))) + return + var/datum/gas_mixture/env = return_air() + if(!env) return - var/datum/gas_mixture/env = heatTurf.return_air() var/heat_cap = env.heat_capacity() var/req_power = abs(env.return_temperature() - ENGINE_HEAT_TARGET) * heat_cap req_power = min(req_power, ENGINE_HEATING_POWER) diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index cd52aa4f21fc..5dde2ea18601 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -73,14 +73,13 @@ return PROCESS_KILL if(cell && cell.charge > 0) - var/turf/L = loc - if(!istype(L)) + if(!isopenturf(get_turf(src))) if(mode != HEATER_MODE_STANDBY) mode = HEATER_MODE_STANDBY update_icon() return - var/datum/gas_mixture/env = L.return_air() + var/datum/gas_mixture/env = return_air() var/newMode = HEATER_MODE_STANDBY if(setMode != HEATER_MODE_COOL && env.return_temperature() < targetTemperature - temperatureTolerance) @@ -185,13 +184,10 @@ data["minTemp"] = max(settableTemperatureMedian - settableTemperatureRange - T0C, TCMB) data["maxTemp"] = settableTemperatureMedian + settableTemperatureRange - T0C - var/turf/L = get_turf(loc) var/curTemp - if(istype(L)) - var/datum/gas_mixture/env = L.return_air() - curTemp = env.return_temperature() - else if(isturf(L)) - curTemp = L.return_temperature() + if(isopenturf(get_turf(src))) + var/datum/gas_mixture/env = return_air() + curTemp = env?.return_temperature() if(isnull(curTemp)) data["currentTemp"] = "N/A" else diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 26ef12cd4caf..3eabd4bd65e9 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -148,10 +148,9 @@ GLOBAL_LIST_EMPTY(telecomms_list) /obj/machinery/telecomms/proc/update_speed() if(!on) return - var/turf/T = get_turf(src) //yogs var/speedloss = 0 - var/datum/gas_mixture/env = T.return_air() - var/temperature = env.return_temperature() + var/datum/gas_mixture/env = return_air() + var/temperature = env?.return_temperature() if(temperature <= 150) // 150K optimal operating parameters net_efective = 100 else diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index ca78ee00492a..be8d385e0efc 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -385,14 +385,13 @@ GLOBAL_LIST_EMPTY(PDAs) if (3) dat += "