diff --git a/auxmos.dll b/auxmos.dll index f9f40b0339..54f9e2c381 100644 Binary files a/auxmos.dll and b/auxmos.dll differ diff --git a/auxmos.pdb b/auxmos.pdb index 6958b1c27f..a14eedac51 100644 Binary files a/auxmos.pdb and b/auxmos.pdb differ diff --git a/code/__HELPERS/_extools_api.dm b/code/__HELPERS/_extools_api.dm index 32904d75e3..96c4621306 100644 --- a/code/__HELPERS/_extools_api.dm +++ b/code/__HELPERS/_extools_api.dm @@ -10,13 +10,8 @@ GLOBAL_LIST_EMPTY(auxtools_initialized) #define AUXTOOLS_CHECK(LIB)\ - if (!GLOB.auxtools_initialized[LIB] && fexists(LIB)) {\ - var/status = call(LIB,"auxtools_init")();\ - if(findtext(status,"SUCCESS")) {\ - GLOB.auxtools_initialized[LIB] = TRUE;}\ - else {\ - auxtools_stack_trace("Auxtools failed with status [status]");};\ -}; + if (!GLOB.auxtools_initialized[LIB] && fexists(LIB) && findtext(call(LIB,"auxtools_init")(),"SUCCESS"))\ + GLOB.auxtools_initialized[LIB] = TRUE;\ #define AUXTOOLS_SHUTDOWN(LIB)\ if (GLOB.auxtools_initialized[LIB] && fexists(LIB))\ diff --git a/code/controllers/subsystem/adjacent_air.dm b/code/controllers/subsystem/adjacent_air.dm index c2f2f9a072..e93db07775 100644 --- a/code/controllers/subsystem/adjacent_air.dm +++ b/code/controllers/subsystem/adjacent_air.dm @@ -4,7 +4,6 @@ SUBSYSTEM_DEF(adjacent_air) runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME wait = 10 priority = FIRE_PRIORITY_ATMOS_ADJACENCY - init_order = INIT_ORDER_AIR_TURFS var/list/queue = list() /datum/controller/subsystem/adjacent_air/stat_entry(msg) @@ -18,11 +17,8 @@ SUBSYSTEM_DEF(adjacent_air) /datum/controller/subsystem/adjacent_air/Initialize() while(length(queue)) fire(mc_check = FALSE) - build_zones() return ..() -/datum/controller/subsystem/adjacent_air/proc/build_zones() - /datum/controller/subsystem/adjacent_air/fire(resumed = FALSE, mc_check = TRUE) var/list/queue = src.queue diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 901c4482b8..e4d3d61c31 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -153,6 +153,15 @@ SUBSYSTEM_DEF(air) if(state != SS_RUNNING) return resumed = 0 + currentpart = SSAIR_EXCITEDGROUPS + // Making small pressure deltas equalize immediately so they don't process anymore + if(currentpart == SSAIR_EXCITEDGROUPS) + timer = TICK_USAGE_REAL + process_excited_groups(resumed) + cost_groups = MC_AVERAGE(cost_groups, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer)) + if(state != SS_RUNNING) + return + resumed = 0 currentpart = SSAIR_TURF_POST_PROCESS // Quick multithreaded "should we display/react?" checks followed by finishing those up before the next step if(currentpart == SSAIR_TURF_POST_PROCESS) @@ -306,6 +315,10 @@ SUBSYSTEM_DEF(air) return */ +/datum/controller/subsystem/air/proc/process_excited_groups(resumed = 0) + if(process_excited_groups_auxtools(resumed,MC_TICK_REMAINING_MS)) + pause() + /datum/controller/subsystem/air/proc/finish_turf_processing(resumed = 0) if(finish_turf_processing_auxtools(MC_TICK_REMAINING_MS)) pause() @@ -318,6 +331,7 @@ SUBSYSTEM_DEF(air) /datum/controller/subsystem/air/proc/process_turfs_auxtools() /datum/controller/subsystem/air/proc/post_process_turfs_auxtools() /datum/controller/subsystem/air/proc/process_turf_equalize_auxtools() +/datum/controller/subsystem/air/proc/process_excited_groups_auxtools() /datum/controller/subsystem/air/proc/get_amt_gas_mixes() /datum/controller/subsystem/air/proc/get_max_gas_mixes() /datum/controller/subsystem/air/proc/turf_process_time() diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 2514f41c44..189640a1c6 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -368,6 +368,7 @@ return FALSE /atom/proc/assume_air(datum/gas_mixture/giver) + qdel(giver) return null /atom/proc/remove_air(amount) diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm index e6474d68e3..de76193b99 100644 --- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm +++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm @@ -49,11 +49,13 @@ if(!giver) return FALSE air.merge(giver) + update_visuals() return TRUE /turf/open/remove_air(amount) var/datum/gas_mixture/ours = return_air() var/datum/gas_mixture/removed = ours.remove(amount) + update_visuals() return removed /turf/open/proc/copy_air_with_tile(turf/open/T)