diff --git a/auxmos.dll b/auxmos.dll index 45f64a4ede..c4933ac8ef 100644 Binary files a/auxmos.dll and b/auxmos.dll differ diff --git a/auxmos.pdb b/auxmos.pdb index b48a99aea9..fc60e6db0b 100644 Binary files a/auxmos.pdb and b/auxmos.pdb differ diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 1b4cd690ec..bbf477b62c 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -105,6 +105,15 @@ SUBSYSTEM_DEF(air) /datum/controller/subsystem/air/proc/auxtools_update_reactions() +/proc/reset_all_air() + SSair.can_fire = 0 + message_admins("Air reset begun.") + for(var/turf/open/T in world) + T.Initalize_Atmos(0) + CHECK_TICK + message_admins("Air reset done.") + SSair.can_fire = 1 + /datum/controller/subsystem/air/proc/thread_running() return FALSE @@ -113,7 +122,7 @@ SUBSYSTEM_DEF(air) /datum/admins/proc/fixcorruption() set category = "Debug" set desc="Fixes air that has weird NaNs (-1.#IND and such). Hopefully." - set name="Fix Air" + set name="Fix Infinite Air" fix_corrupted_atmos() /datum/controller/subsystem/air/fire(resumed = 0) diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index 5ca22197da..35f8c59f7c 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -148,16 +148,20 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( . = ..() if (!.) // changeturf failed or didn't do anything QDEL_NULL(stashed_air) - update_air_ref(planetary_atmos ? 1 : 2) return var/turf/open/newTurf = . newTurf.air.copy_from(stashed_air) + update_air_ref(planetary_atmos ? 1 : 2) QDEL_NULL(stashed_air) else if(ispath(path,/turf/closed)) flags |= CHANGETURF_RECALC_ADJACENT update_air_ref(-1) - return ..() + . = ..() + else + . = ..() + if(!istype(air,/datum/gas_mixture)) + Initalize_Atmos(0) // Take off the top layer turf and replace it with the next baseturf down /turf/proc/ScrapeAway(amount=1, flags) diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 41617e361c..7bd8754fe4 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -218,6 +218,12 @@ flash_color(L, flash_color = "#C80000", flash_time = 10) /turf/open/Initalize_Atmos(times_fired) + if(!blocks_air) + if(!istype(air,/datum/gas_mixture/turf)) + air = new(2500,src) + air.copy_from_turf(src) + update_air_ref(planetary_atmos ? 1 : 2) + update_visuals() ImmediateCalculateAdjacentTurfs() diff --git a/code/game/world.dm b/code/game/world.dm index f375bd1bd0..f466913346 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -272,6 +272,7 @@ GLOBAL_LIST(topic_status_cache) log_world("World rebooted at [TIME_STAMP("hh:mm:ss", FALSE)]") shutdown_logging() // Past this point, no logging procs can be used, at risk of data loss. + AUXTOOLS_SHUTDOWN(AUXMOS) ..() /world/Del() diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 9e784e72cb..0727149b9b 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -193,6 +193,7 @@ GLOBAL_PROTECT(admin_verbs_debug) // /client/proc/check_missing_sprites, // #endif /datum/admins/proc/create_or_modify_area, + /datum/admins/proc/fixcorruption, #ifdef REFERENCE_TRACKING /datum/admins/proc/view_refs, /datum/admins/proc/view_del_failures, diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm index 39e9978083..43884aa3bc 100644 --- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm +++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm @@ -35,11 +35,6 @@ update_air_ref(planetary_atmos ? 1 : 2) . = ..() -/turf/open/proc/force_air_reset() - air = new(2500,src) - air.copy_from_turf(src) - update_air_ref(planetary_atmos ? 1 : 2) - /turf/open/Destroy() if(active_hotspot) QDEL_NULL(active_hotspot) diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index ee1ac5006f..a287856db1 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -217,6 +217,8 @@ // air_contents.add_gas(gas_type) if(starter_temp) air_contents.set_temperature(starter_temp) + if(!air_contents.return_volume()) + CRASH("Auxtools is failing somehow! Gas with pointer [air_contents._extools_pointer_gasmixture] is not valid.") air_contents.set_moles(gas_type,(maximum_pressure * filled) * air_contents.return_volume() / (R_IDEAL_GAS_EQUATION * air_contents.return_temperature())) /obj/machinery/portable_atmospherics/canister/air/create_gas()