diff --git a/SpacemanDMM.toml b/SpacemanDMM.toml index b827472254..085babef82 100644 --- a/SpacemanDMM.toml +++ b/SpacemanDMM.toml @@ -1,2 +1,5 @@ [langserver] dreamchecker = true + +[debugger] +engine = "auxtools" diff --git a/auxmos.dll b/auxmos.dll index ad7ec78431..55a0bf699e 100644 Binary files a/auxmos.dll and b/auxmos.dll differ diff --git a/auxmos.pdb b/auxmos.pdb index 0962268b8b..77f2ec7d8d 100644 Binary files a/auxmos.pdb and b/auxmos.pdb differ diff --git a/code/__DEFINES/spaceman_dmm.dm b/code/__DEFINES/spaceman_dmm.dm index e21f3dc1c1..f15d6a175f 100644 --- a/code/__DEFINES/spaceman_dmm.dm +++ b/code/__DEFINES/spaceman_dmm.dm @@ -28,6 +28,5 @@ #define VAR_PROTECTED var #endif -/world/proc/enable_debugger() - if (fexists(EXTOOLS)) - call(EXTOOLS, "debug_initialize")() +/proc/enable_debugging() + CRASH("Auxtools not found") diff --git a/code/__HELPERS/_extools_api.dm b/code/__HELPERS/_extools_api.dm index 40df269733..03bbb722af 100644 --- a/code/__HELPERS/_extools_api.dm +++ b/code/__HELPERS/_extools_api.dm @@ -4,11 +4,16 @@ /proc/extools_finalize_logging() -/proc/auxtools_stack_trace(err) - stack_trace(err) +/proc/auxtools_stack_trace(msg) + CRASH(msg) GLOBAL_VAR_INIT(auxtools_initialized,FALSE) #define AUXTOOLS_CHECK\ if (!GLOB.auxtools_initialized && fexists(AUXTOOLS) && findtext(call(AUXTOOLS,"auxtools_init")(),"SUCCESS"))\ GLOB.auxtools_initialized = TRUE;\ + +#define AUXTOOLS_SHUTDOWN\ + if (GLOB.auxtools_initialized && fexists(AUXTOOLS))\ + call(AUXTOOLS,"auxtools_shutdown")();\ + GLOB.auxtools_initialized = FALSE;\ diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 7c73abe1ea..9805af4c74 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -37,9 +37,16 @@ SUBSYSTEM_DEF(air) var/log_explosive_decompression = TRUE // If things get spammy, admemes can turn this off. - var/monstermos_turf_limit = 10 - var/monstermos_hard_turf_limit = 2000 - var/monstermos_enabled = TRUE + // Max number of turfs equalization will grab. + var/equalize_turf_limit = 25 + // Max number of turfs to look for a space turf, and max number of turfs that will be decompressed. + var/equalize_hard_turf_limit = 2000 + // Whether equalization should be enabled at all. + var/equalize_enabled = TRUE + // Max number of times process_turfs will share in a tick. + var/share_max_steps = 1 + // If process_turfs finds no pressure differentials larger than this, it'll stop for that tick. + var/share_pressure_diff_to_stop = 101.325 /datum/controller/subsystem/air/stat_entry(msg) msg += "C:{" @@ -234,7 +241,7 @@ SUBSYSTEM_DEF(air) return /datum/controller/subsystem/air/proc/process_turf_equalize(resumed = 0) - if(process_turf_equalize_extools(MC_TICK_REMAINING_MS)) + if(process_turf_equalize_extools(resumed,MC_TICK_REMAINING_MS)) pause() /* //cache for sanic speed @@ -254,7 +261,7 @@ SUBSYSTEM_DEF(air) */ /datum/controller/subsystem/air/proc/process_turfs(resumed = 0) - if(process_turfs_extools(MC_TICK_REMAINING_MS)) + if(process_turfs_extools(resumed,MC_TICK_REMAINING_MS)) pause() /* //cache for sanic speed @@ -272,12 +279,8 @@ SUBSYSTEM_DEF(air) return */ -/proc/post_process_excited_turf(turf/open/T) - if(istype(T)) - T.update_visuals() - /datum/controller/subsystem/air/proc/process_excited_groups(resumed = 0) - if(!process_excited_groups_extools(MC_TICK_REMAINING_MS)) + if(!process_excited_groups_extools(resumed,MC_TICK_REMAINING_MS)) pause() /datum/controller/subsystem/air/proc/process_turfs_extools() diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index d01cd33cae..5ca22197da 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -156,6 +156,7 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( else if(ispath(path,/turf/closed)) flags |= CHANGETURF_RECALC_ADJACENT + update_air_ref(-1) return ..() // Take off the top layer turf and replace it with the next baseturf down diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 1bf13c2205..cc2eb66fbe 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -92,6 +92,7 @@ var/turf/open/O = src __auxtools_update_turf_temp_info(isspaceturf(get_z_base_turf()) && !O.planetary_atmos) else + update_air_ref(-1) __auxtools_update_turf_temp_info(isspaceturf(get_z_base_turf())) return INITIALIZE_HINT_NORMAL diff --git a/code/game/world.dm b/code/game/world.dm index d99f3f6d36..eb143d3a38 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -10,12 +10,14 @@ GLOBAL_LIST(topic_status_cache) //So subsystems globals exist, but are not initialised /world/New() + var/debug_server = world.GetConfig("env", "AUXTOOLS_DEBUG_DLL") + if (debug_server) + call(debug_server, "auxtools_init")() + enable_debugging() AUXTOOLS_CHECK - //enable_debugger() #ifdef REFERENCE_TRACKING enable_reference_tracking() #endif - world.Profile(PROFILE_START) log_world("World loaded at [TIME_STAMP("hh:mm:ss", FALSE)]!") @@ -269,6 +271,10 @@ GLOBAL_LIST(topic_status_cache) /world/Del() shutdown_logging() // makes sure the thread is closed before end, else we terminate + AUXTOOLS_SHUTDOWN + var/debug_server = world.GetConfig("env", "AUXTOOLS_DEBUG_DLL") + if (debug_server) + call(debug_server, "auxtools_shutdown")() ..() /world/proc/update_status()