Merge pull request #15997 from jupyterkat/update-auxmos
Updates auxmos to latest
This commit is contained in:
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -7,14 +7,15 @@
|
||||
/proc/auxtools_stack_trace(msg)
|
||||
CRASH(msg)
|
||||
|
||||
GLOBAL_LIST_EMPTY(auxtools_initialized)
|
||||
//glob doesn't exist yet at some gas new calls, imma use it anyways
|
||||
GLOBAL_REAL_VAR(list/__auxtools_initialized) = list()
|
||||
|
||||
#define AUXTOOLS_CHECK(LIB)\
|
||||
if (!GLOB.auxtools_initialized[LIB]) {\
|
||||
if (!__auxtools_initialized[LIB]) {\
|
||||
if (fexists(LIB)) {\
|
||||
var/string = call(LIB,"auxtools_init")();\
|
||||
if(findtext(string, "SUCCESS")) {\
|
||||
GLOB.auxtools_initialized[LIB] = TRUE;\
|
||||
__auxtools_initialized[LIB] = TRUE;\
|
||||
} else {\
|
||||
CRASH(string);\
|
||||
}\
|
||||
@@ -24,7 +25,7 @@ GLOBAL_LIST_EMPTY(auxtools_initialized)
|
||||
}\
|
||||
|
||||
#define AUXTOOLS_SHUTDOWN(LIB)\
|
||||
if (GLOB.auxtools_initialized[LIB] && fexists(LIB)){\
|
||||
if (__auxtools_initialized[LIB] && fexists(LIB)){\
|
||||
call(LIB,"auxtools_shutdown")();\
|
||||
GLOB.auxtools_initialized[LIB] = FALSE;\
|
||||
__auxtools_initialized[LIB] = FALSE;\
|
||||
}\
|
||||
|
||||
@@ -29,11 +29,7 @@ SUBSYSTEM_DEF(air)
|
||||
var/list/hotspots = list()
|
||||
var/list/networks = list()
|
||||
var/list/pipenets_needing_rebuilt = list()
|
||||
var/list/deferred_airs = list()
|
||||
var/cur_deferred_airs = 0
|
||||
var/max_deferred_airs = 0
|
||||
var/list/obj/machinery/atmos_machinery = list()
|
||||
var/list/obj/machinery/atmos_air_machinery = list()
|
||||
var/list/pipe_init_dirs_cache = list()
|
||||
|
||||
//atmos singletons
|
||||
@@ -56,9 +52,7 @@ SUBSYSTEM_DEF(air)
|
||||
// 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 is enabled. Can be disabled for performance reasons.
|
||||
var/equalize_enabled = TRUE
|
||||
// Whether equalization should be enabled.
|
||||
var/should_do_equalization = TRUE
|
||||
var/equalize_enabled = FALSE
|
||||
// When above 0, won't equalize; performance handling
|
||||
var/eq_cooldown = 0
|
||||
// Whether turf-to-turf heat exchanging should be enabled.
|
||||
@@ -97,7 +91,6 @@ SUBSYSTEM_DEF(air)
|
||||
msg += "LT:[low_pressure_turfs]|"
|
||||
msg += "ET:[num_equalize_processed]|"
|
||||
msg += "GT:[num_group_turfs_processed]|"
|
||||
msg += "DF:[max_deferred_airs]|"
|
||||
msg += "GA:[get_amt_gas_mixes()]|"
|
||||
msg += "MG:[get_max_gas_mixes()]"
|
||||
return ..()
|
||||
@@ -108,8 +101,8 @@ SUBSYSTEM_DEF(air)
|
||||
setup_atmos_machinery()
|
||||
setup_pipenets()
|
||||
gas_reactions = init_gas_reactions()
|
||||
should_do_equalization = CONFIG_GET(flag/atmos_equalize_enabled)
|
||||
auxtools_update_reactions()
|
||||
equalize_enabled = CONFIG_GET(flag/atmos_equalize_enabled)
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/air/proc/extools_update_ssair()
|
||||
@@ -157,6 +150,35 @@ SUBSYSTEM_DEF(air)
|
||||
if(state != SS_RUNNING)
|
||||
return
|
||||
resumed = FALSE
|
||||
currentpart = SSAIR_ACTIVETURFS
|
||||
|
||||
if(currentpart == SSAIR_ACTIVETURFS)
|
||||
timer = TICK_USAGE_REAL
|
||||
process_turfs(resumed)
|
||||
if(state != SS_RUNNING)
|
||||
return
|
||||
resumed = 0
|
||||
currentpart = SSAIR_EXCITEDGROUPS
|
||||
|
||||
if(currentpart == SSAIR_EXCITEDGROUPS)
|
||||
process_excited_groups(resumed)
|
||||
if(state != SS_RUNNING)
|
||||
return
|
||||
resumed = 0
|
||||
currentpart = equalize_enabled ? SSAIR_EQUALIZE : SSAIR_FINALIZE_TURFS
|
||||
|
||||
if(currentpart == SSAIR_EQUALIZE)
|
||||
equalize_turfs(resumed)
|
||||
if(state != SS_RUNNING)
|
||||
return
|
||||
resumed = 0
|
||||
currentpart = SSAIR_FINALIZE_TURFS
|
||||
|
||||
if(currentpart == SSAIR_FINALIZE_TURFS)
|
||||
finish_turf_processing(resumed)
|
||||
if(state != SS_RUNNING)
|
||||
return
|
||||
resumed = FALSE
|
||||
currentpart = SSAIR_PIPENETS
|
||||
|
||||
if(currentpart == SSAIR_PIPENETS || !resumed)
|
||||
@@ -167,7 +189,6 @@ SUBSYSTEM_DEF(air)
|
||||
return
|
||||
resumed = 0
|
||||
currentpart = SSAIR_ATMOSMACHINERY
|
||||
// This is only machinery like filters, mixers that don't interact with air
|
||||
if(currentpart == SSAIR_ATMOSMACHINERY)
|
||||
timer = TICK_USAGE_REAL
|
||||
process_atmos_machinery(resumed)
|
||||
@@ -184,34 +205,6 @@ SUBSYSTEM_DEF(air)
|
||||
if(state != SS_RUNNING)
|
||||
return
|
||||
resumed = 0
|
||||
currentpart = SSAIR_FINALIZE_TURFS
|
||||
// This literally just waits for the turf processing thread to finish, doesn't do anything else.
|
||||
// this is necessary cause the next step after this interacts with the air--we get consistency
|
||||
// issues if we don't wait for it, disappearing gases etc.
|
||||
if(currentpart == SSAIR_FINALIZE_TURFS)
|
||||
finish_turf_processing(resumed)
|
||||
if(state != SS_RUNNING)
|
||||
cur_thread_wait_ticks++
|
||||
return
|
||||
resumed = 0
|
||||
thread_wait_ticks = MC_AVERAGE(thread_wait_ticks, cur_thread_wait_ticks)
|
||||
cur_thread_wait_ticks = 0
|
||||
currentpart = SSAIR_DEFERRED_AIRS
|
||||
if(currentpart == SSAIR_DEFERRED_AIRS)
|
||||
timer = TICK_USAGE_REAL
|
||||
process_deferred_airs(resumed)
|
||||
cost_deferred_airs = MC_AVERAGE(cost_deferred_airs, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
|
||||
if(state != SS_RUNNING)
|
||||
return
|
||||
resumed = 0
|
||||
currentpart = SSAIR_ATMOSMACHINERY_AIR
|
||||
if(currentpart == SSAIR_ATMOSMACHINERY_AIR)
|
||||
timer = TICK_USAGE_REAL
|
||||
process_atmos_air_machinery(resumed)
|
||||
cost_atmos_machinery = MC_AVERAGE(cost_atmos_machinery, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
|
||||
if(state != SS_RUNNING)
|
||||
return
|
||||
resumed = 0
|
||||
currentpart = SSAIR_HOTSPOTS
|
||||
|
||||
if(currentpart == SSAIR_HOTSPOTS)
|
||||
@@ -221,7 +214,7 @@ SUBSYSTEM_DEF(air)
|
||||
if(state != SS_RUNNING)
|
||||
return
|
||||
resumed = 0
|
||||
currentpart = heat_enabled ? SSAIR_TURF_CONDUCTION : SSAIR_ACTIVETURFS
|
||||
currentpart = heat_enabled ? SSAIR_TURF_CONDUCTION : SSAIR_REBUILD_PIPENETS
|
||||
// Heat -- slow and of questionable usefulness. Off by default for this reason. Pretty cool, though.
|
||||
if(currentpart == SSAIR_TURF_CONDUCTION)
|
||||
timer = TICK_USAGE_REAL
|
||||
@@ -231,48 +224,7 @@ SUBSYSTEM_DEF(air)
|
||||
if(state != SS_RUNNING)
|
||||
return
|
||||
resumed = 0
|
||||
currentpart = SSAIR_ACTIVETURFS
|
||||
// This simply starts the turf thread. It runs in the background until the FINALIZE_TURFS step, at which point it's waited for.
|
||||
// This also happens to do all the commented out stuff below, all in a single separate thread. This is mostly so that the
|
||||
// waiting is consistent.
|
||||
if(currentpart == SSAIR_ACTIVETURFS)
|
||||
run_delay_heuristics()
|
||||
timer = TICK_USAGE_REAL
|
||||
process_turfs(resumed)
|
||||
cost_turfs = MC_AVERAGE(cost_turfs, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
|
||||
if(state != SS_RUNNING)
|
||||
return
|
||||
resumed = 0
|
||||
/*
|
||||
// Monstermos and/or Putnamos--making large pressure deltas move faster
|
||||
if(currentpart == SSAIR_EQUALIZE)
|
||||
timer = TICK_USAGE_REAL
|
||||
process_turf_equalize(resumed)
|
||||
cost_equalize = MC_AVERAGE(cost_equalize, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
|
||||
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)
|
||||
timer = TICK_USAGE_REAL
|
||||
post_process_turfs(resumed)
|
||||
cost_post_process = MC_AVERAGE(cost_post_process, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
|
||||
if(state != SS_RUNNING)
|
||||
return
|
||||
resumed = 0
|
||||
currentpart = SSAIR_HOTSPOTS
|
||||
*/
|
||||
currentpart = SSAIR_REBUILD_PIPENETS
|
||||
currentpart = SSAIR_REBUILD_PIPENETS
|
||||
|
||||
/datum/controller/subsystem/air/proc/process_pipenets(resumed = 0)
|
||||
if (!resumed)
|
||||
@@ -293,32 +245,6 @@ SUBSYSTEM_DEF(air)
|
||||
if(istype(atmos_machine, /obj/machinery/atmospherics))
|
||||
pipenets_needing_rebuilt += atmos_machine
|
||||
|
||||
/datum/controller/subsystem/air/proc/process_deferred_airs(resumed = 0)
|
||||
cur_deferred_airs = deferred_airs.len
|
||||
max_deferred_airs = max(cur_deferred_airs,max_deferred_airs)
|
||||
while(deferred_airs.len)
|
||||
var/list/cur_op = deferred_airs[deferred_airs.len]
|
||||
deferred_airs.len--
|
||||
var/datum/gas_mixture/air1
|
||||
var/datum/gas_mixture/air2
|
||||
if(isopenturf(cur_op[1]))
|
||||
var/turf/open/T = cur_op[1]
|
||||
air1 = T.return_air()
|
||||
else
|
||||
air1 = cur_op[1]
|
||||
if(isopenturf(cur_op[2]))
|
||||
var/turf/open/T = cur_op[2]
|
||||
air2 = T.return_air()
|
||||
else
|
||||
air2 = cur_op[2]
|
||||
if(istype(cur_op[3], /datum/callback))
|
||||
var/datum/callback/cb = cur_op[3]
|
||||
cb.Invoke(air1, air2)
|
||||
else
|
||||
air1.transfer_ratio_to(air2, cur_op[3])
|
||||
if(MC_TICK_CHECK)
|
||||
return
|
||||
|
||||
/datum/controller/subsystem/air/proc/process_atmos_machinery(resumed = 0)
|
||||
var/seconds = wait * 0.1
|
||||
if (!resumed)
|
||||
@@ -333,22 +259,6 @@ SUBSYSTEM_DEF(air)
|
||||
if(MC_TICK_CHECK)
|
||||
return
|
||||
|
||||
/datum/controller/subsystem/air/proc/process_atmos_air_machinery(resumed = 0)
|
||||
var/seconds = wait * 0.1
|
||||
if (!resumed)
|
||||
src.currentrun = atmos_air_machinery.Copy()
|
||||
//cache for sanic speed (lists are references anyways)
|
||||
var/list/currentrun = src.currentrun
|
||||
while(currentrun.len)
|
||||
var/obj/machinery/M = currentrun[currentrun.len]
|
||||
currentrun.len--
|
||||
if(!M || (M.process_atmos(seconds) == PROCESS_KILL))
|
||||
atmos_air_machinery.Remove(M)
|
||||
if(MC_TICK_CHECK)
|
||||
return
|
||||
|
||||
/datum/controller/subsystem/air/proc/process_turf_heat()
|
||||
|
||||
/datum/controller/subsystem/air/proc/process_hotspots(resumed = 0)
|
||||
if (!resumed)
|
||||
src.currentrun = hotspots.Copy()
|
||||
@@ -376,78 +286,31 @@ SUBSYSTEM_DEF(air)
|
||||
return
|
||||
|
||||
/datum/controller/subsystem/air/proc/process_turf_equalize(resumed = 0)
|
||||
if(process_turf_equalize_auxtools(resumed,TICK_REMAINING_MS))
|
||||
if(process_turf_equalize_auxtools(TICK_REMAINING_MS))
|
||||
pause()
|
||||
/*
|
||||
//cache for sanic speed
|
||||
var/fire_count = times_fired
|
||||
if (!resumed)
|
||||
src.currentrun = active_turfs.Copy()
|
||||
//cache for sanic speed (lists are references anyways)
|
||||
var/list/currentrun = src.currentrun
|
||||
while(currentrun.len)
|
||||
var/turf/open/T = currentrun[currentrun.len]
|
||||
currentrun.len--
|
||||
if (T)
|
||||
T.equalize_pressure_in_zone(fire_count)
|
||||
//equalize_pressure_in_zone(T, fire_count)
|
||||
if (MC_TICK_CHECK)
|
||||
return
|
||||
*/
|
||||
|
||||
/datum/controller/subsystem/air/proc/run_delay_heuristics()
|
||||
if(should_do_equalization)
|
||||
if(!equalize_enabled)
|
||||
cost_equalize = 0
|
||||
if(should_do_equalization)
|
||||
eq_cooldown--
|
||||
if(eq_cooldown <= 0)
|
||||
equalize_enabled = TRUE
|
||||
else
|
||||
equalize_enabled = FALSE
|
||||
var/total_thread_time = cost_turfs + cost_equalize + cost_groups + cost_post_process
|
||||
if(total_thread_time)
|
||||
var/wait_ms = wait * 100
|
||||
var/delay_threshold = 1-(total_thread_time/wait_ms + cur_deferred_airs / 50)
|
||||
share_max_steps = max(1,round(share_max_steps_target * delay_threshold, 1))
|
||||
eq_cooldown += (1-delay_threshold) * (cost_equalize / total_thread_time) * 2
|
||||
if(eq_cooldown > 0.5)
|
||||
equalize_enabled = FALSE
|
||||
excited_group_pressure_goal = max(0,excited_group_pressure_goal_target * delay_threshold)
|
||||
|
||||
|
||||
/datum/controller/subsystem/air/proc/process_turfs(resumed = 0)
|
||||
if(process_turfs_auxtools(resumed,TICK_REMAINING_MS))
|
||||
if(process_turfs_auxtools(TICK_REMAINING_MS))
|
||||
pause()
|
||||
/*
|
||||
//cache for sanic speed
|
||||
var/fire_count = times_fired
|
||||
if (!resumed)
|
||||
src.currentrun = active_turfs.Copy()
|
||||
//cache for sanic speed (lists are references anyways)
|
||||
var/list/currentrun = src.currentrun
|
||||
while(currentrun.len)
|
||||
var/turf/open/T = currentrun[currentrun.len]
|
||||
currentrun.len--
|
||||
if (T)
|
||||
T.process_cell(fire_count)
|
||||
if (MC_TICK_CHECK)
|
||||
return
|
||||
*/
|
||||
|
||||
/datum/controller/subsystem/air/proc/process_excited_groups(resumed = 0)
|
||||
if(process_excited_groups_auxtools(resumed,TICK_REMAINING_MS))
|
||||
if(process_excited_groups_auxtools(TICK_REMAINING_MS))
|
||||
pause()
|
||||
|
||||
/datum/controller/subsystem/air/proc/finish_turf_processing(resumed = 0)
|
||||
if(finish_turf_processing_auxtools(TICK_REMAINING_MS) || thread_running())
|
||||
if(finish_turf_processing_auxtools(TICK_REMAINING_MS))
|
||||
pause()
|
||||
|
||||
/datum/controller/subsystem/air/proc/equalize_turfs(resumed = 0)
|
||||
if(equalize_turfs_auxtools(TICK_REMAINING_MS))
|
||||
pause()
|
||||
|
||||
/datum/controller/subsystem/air/proc/post_process_turfs(resumed = 0)
|
||||
if(post_process_turfs_auxtools(resumed,TICK_REMAINING_MS))
|
||||
if(post_process_turfs_auxtools(TICK_REMAINING_MS))
|
||||
pause()
|
||||
|
||||
/datum/controller/subsystem/air/proc/finish_turf_processing_auxtools()
|
||||
/datum/controller/subsystem/air/proc/equalize_turfs_auxtools()
|
||||
/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()
|
||||
@@ -456,6 +319,7 @@ SUBSYSTEM_DEF(air)
|
||||
/datum/controller/subsystem/air/proc/get_max_gas_mixes()
|
||||
/datum/controller/subsystem/air/proc/turf_process_time()
|
||||
/datum/controller/subsystem/air/proc/heat_process_time()
|
||||
/datum/controller/subsystem/air/proc/process_turf_heat()
|
||||
|
||||
/datum/controller/subsystem/air/StartLoadingMap()
|
||||
map_loading = TRUE
|
||||
@@ -478,7 +342,7 @@ SUBSYSTEM_DEF(air)
|
||||
CHECK_TICK
|
||||
|
||||
/datum/controller/subsystem/air/proc/setup_atmos_machinery()
|
||||
for (var/obj/machinery/atmospherics/AM in atmos_machinery + atmos_air_machinery)
|
||||
for (var/obj/machinery/atmospherics/AM in atmos_machinery)
|
||||
AM.atmosinit()
|
||||
CHECK_TICK
|
||||
|
||||
@@ -486,7 +350,7 @@ SUBSYSTEM_DEF(air)
|
||||
// all atmos machinery has to initalize before the first
|
||||
// pipenet can be built.
|
||||
/datum/controller/subsystem/air/proc/setup_pipenets()
|
||||
for (var/obj/machinery/atmospherics/AM in atmos_machinery + atmos_air_machinery)
|
||||
for (var/obj/machinery/atmospherics/AM in atmos_machinery)
|
||||
AM.build_network()
|
||||
CHECK_TICK
|
||||
|
||||
|
||||
@@ -73,11 +73,11 @@
|
||||
|
||||
/obj/machinery/air_sensor/Initialize(mapload)
|
||||
. = ..()
|
||||
SSair.atmos_air_machinery += src
|
||||
SSair.atmos_machinery += src
|
||||
set_frequency(frequency)
|
||||
|
||||
/obj/machinery/air_sensor/Destroy()
|
||||
SSair.atmos_air_machinery -= src
|
||||
SSair.atmos_machinery -= src
|
||||
SSradio.remove_object(src, frequency)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
usr.visible_message("<span class='notice'>[usr] switches [on ? "on" : "off"] \the [src].</span>", "<span class='notice'>You switch [on ? "on" : "off"] \the [src].</span>")
|
||||
update_icon()
|
||||
if (on)
|
||||
SSair.atmos_air_machinery += src
|
||||
SSair.atmos_machinery += src
|
||||
. = TRUE
|
||||
if("mode")
|
||||
setMode = params["mode"]
|
||||
|
||||
@@ -223,8 +223,6 @@
|
||||
air.copy_from_turf(src)
|
||||
update_air_ref(planetary_atmos ? 1 : 2)
|
||||
|
||||
update_visuals()
|
||||
|
||||
ImmediateCalculateAdjacentTurfs()
|
||||
|
||||
/turf/open/proc/GetHeatCapacity()
|
||||
|
||||
@@ -163,8 +163,6 @@
|
||||
return
|
||||
|
||||
/turf/open/floor/update_icon()
|
||||
. = ..()
|
||||
update_visuals()
|
||||
|
||||
/turf/open/floor/attack_paw(mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
@@ -127,10 +127,9 @@
|
||||
var/flags = NONE
|
||||
if(defer_change) // TODO: make the defer change var a var for any changeturf flag
|
||||
flags = CHANGETURF_DEFER_CHANGE
|
||||
var/turf/open/mined = ScrapeAway(null, flags)
|
||||
ScrapeAway(null, flags)
|
||||
addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE)
|
||||
playsound(src, 'sound/effects/break_stone.ogg', 50, TRUE) //beautiful destruction
|
||||
mined.update_visuals()
|
||||
|
||||
/turf/closed/mineral/attack_animal(mob/living/simple_animal/user, list/modifiers)
|
||||
if((user.environment_smash & ENVIRONMENT_SMASH_WALLS) || (user.environment_smash & ENVIRONMENT_SMASH_RWALLS))
|
||||
|
||||
@@ -56,53 +56,35 @@
|
||||
/turf/open/assume_air_moles(datum/gas_mixture/giver, moles)
|
||||
if(!giver)
|
||||
return FALSE
|
||||
if(SSair.thread_running())
|
||||
SSair.deferred_airs += list(list(giver, air, moles / giver.total_moles()))
|
||||
else
|
||||
giver.transfer_to(air, moles)
|
||||
update_visuals()
|
||||
giver.transfer_to(air, moles)
|
||||
return TRUE
|
||||
|
||||
/turf/open/assume_air_ratio(datum/gas_mixture/giver, ratio)
|
||||
if(!giver)
|
||||
return FALSE
|
||||
if(SSair.thread_running())
|
||||
SSair.deferred_airs += list(list(giver, air, ratio))
|
||||
else
|
||||
giver.transfer_ratio_to(air, ratio)
|
||||
update_visuals()
|
||||
giver.transfer_ratio_to(air, ratio)
|
||||
return TRUE
|
||||
|
||||
/turf/open/transfer_air(datum/gas_mixture/taker, moles)
|
||||
if(!taker || !return_air()) // shouldn't transfer from space
|
||||
return FALSE
|
||||
if(SSair.thread_running())
|
||||
SSair.deferred_airs += list(list(air, taker, moles / air.total_moles()))
|
||||
else
|
||||
air.transfer_to(taker, moles)
|
||||
update_visuals()
|
||||
air.transfer_to(taker, moles)
|
||||
return TRUE
|
||||
|
||||
/turf/open/transfer_air_ratio(datum/gas_mixture/taker, ratio)
|
||||
if(!taker || !return_air())
|
||||
return FALSE
|
||||
if(SSair.thread_running())
|
||||
SSair.deferred_airs += list(list(air, taker, ratio))
|
||||
else
|
||||
air.transfer_ratio_to(taker, ratio)
|
||||
update_visuals()
|
||||
air.transfer_ratio_to(taker, ratio)
|
||||
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/remove_air_ratio(ratio)
|
||||
var/datum/gas_mixture/ours = return_air()
|
||||
var/datum/gas_mixture/removed = ours.remove_ratio(ratio)
|
||||
update_visuals()
|
||||
return removed
|
||||
|
||||
/turf/open/proc/copy_air_with_tile(turf/open/T)
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
var/construction_type
|
||||
var/pipe_state //icon_state as a pipe item
|
||||
var/on = FALSE
|
||||
var/interacts_with_air = FALSE
|
||||
|
||||
/obj/machinery/atmospherics/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -73,10 +72,7 @@
|
||||
armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 100, BOMB = 0, BIO = 100, RAD = 100, FIRE = 100, ACID = 70)
|
||||
..()
|
||||
if(process)
|
||||
if(interacts_with_air)
|
||||
SSair.atmos_air_machinery += src
|
||||
else
|
||||
SSair.atmos_machinery += src
|
||||
SSair.atmos_machinery += src
|
||||
SetInitDirections()
|
||||
|
||||
/obj/machinery/atmospherics/Destroy()
|
||||
@@ -84,7 +80,6 @@
|
||||
nullifyNode(i)
|
||||
|
||||
SSair.atmos_machinery -= src
|
||||
SSair.atmos_air_machinery -= src
|
||||
SSair.pipenets_needing_rebuilt -= src
|
||||
|
||||
dropContents()
|
||||
|
||||
@@ -16,8 +16,6 @@
|
||||
|
||||
level = 1
|
||||
|
||||
interacts_with_air = TRUE
|
||||
|
||||
var/frequency = 0
|
||||
var/id = null
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
level = 1
|
||||
interacts_with_air = TRUE
|
||||
layer = GAS_SCRUBBER_LAYER
|
||||
|
||||
pipe_state = "injector"
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
can_unwrench = TRUE
|
||||
|
||||
level = 1
|
||||
interacts_with_air = TRUE
|
||||
layer = GAS_SCRUBBER_LAYER
|
||||
|
||||
pipe_state = "pvent"
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
icon_state = "relief_valve-e-map"
|
||||
can_unwrench = TRUE
|
||||
interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_SET_MACHINE
|
||||
interacts_with_air = TRUE
|
||||
var/opened = FALSE
|
||||
var/open_pressure = ONE_ATMOSPHERE * 3
|
||||
var/close_pressure = ONE_ATMOSPHERE
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
level = 1
|
||||
layer = GAS_SCRUBBER_LAYER
|
||||
|
||||
interacts_with_air = TRUE
|
||||
|
||||
var/id_tag = null
|
||||
var/pump_direction = RELEASING
|
||||
|
||||
|
||||
@@ -13,8 +13,6 @@
|
||||
level = 1
|
||||
layer = GAS_SCRUBBER_LAYER
|
||||
|
||||
interacts_with_air = TRUE
|
||||
|
||||
var/id_tag = null
|
||||
var/scrubbing = SCRUBBING //0 = siphoning, 1 = scrubbing
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
icon_state = "miner"
|
||||
density = FALSE
|
||||
resistance_flags = INDESTRUCTIBLE|ACID_PROOF|FIRE_PROOF
|
||||
interacts_with_air = TRUE
|
||||
var/spawn_id = null
|
||||
var/spawn_temp = T20C
|
||||
var/spawn_mol = MOLES_CELLSTANDARD * 10
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
buckle_lying = 1
|
||||
var/icon_temperature = T20C //stop small changes in temperature causing icon refresh
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF
|
||||
interacts_with_air = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/obj/machinery/portable_atmospherics/New()
|
||||
..()
|
||||
SSair.atmos_air_machinery += src
|
||||
SSair.atmos_machinery += src
|
||||
|
||||
air_contents = new(volume)
|
||||
air_contents.set_temperature(T20C)
|
||||
@@ -24,7 +24,7 @@
|
||||
return 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/Destroy()
|
||||
SSair.atmos_air_machinery -= src
|
||||
SSair.atmos_machinery -= src
|
||||
|
||||
disconnect()
|
||||
qdel(air_contents)
|
||||
|
||||
@@ -195,7 +195,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
/obj/machinery/power/supermatter_crystal/Initialize(mapload)
|
||||
. = ..()
|
||||
uid = gl_uid++
|
||||
SSair.atmos_air_machinery += src
|
||||
SSair.atmos_machinery += src
|
||||
countdown = new(src)
|
||||
countdown.start()
|
||||
GLOB.poi_list |= src
|
||||
@@ -214,7 +214,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
|
||||
/obj/machinery/power/supermatter_crystal/Destroy()
|
||||
investigate_log("has been destroyed.", INVESTIGATE_SUPERMATTER)
|
||||
SSair.atmos_air_machinery -= src
|
||||
SSair.atmos_machinery -= src
|
||||
QDEL_NULL(radio)
|
||||
GLOB.poi_list -= src
|
||||
QDEL_NULL(countdown)
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ export SPACEMAN_DMM_VERSION=suite-1.7
|
||||
export PYTHON_VERSION=3.7.9
|
||||
|
||||
# Auxmos git tag
|
||||
export AUXMOS_VERSION=v2.2.1
|
||||
export AUXMOS_VERSION=v2.4.1
|
||||
|
||||
# Extools git tag
|
||||
export EXTOOLS_VERSION=v0.0.7
|
||||
|
||||
Reference in New Issue
Block a user