diff --git a/code/controllers/subsystem/machinery.dm b/code/controllers/subsystem/machinery.dm index a3e4d4bdb0c..5d1ad6922ce 100644 --- a/code/controllers/subsystem/machinery.dm +++ b/code/controllers/subsystem/machinery.dm @@ -11,6 +11,7 @@ SUBSYSTEM_DEF(machines) var/list/currentrun = list() var/list/powernets = list() var/list/deferred_powernet_rebuilds = list() + var/list/deferred_process = list() var/currentpart = SSMACHINES_DEFERREDPOWERNETS @@ -90,6 +91,22 @@ SUBSYSTEM_DEF(machines) while(currentrun.len) var/obj/machinery/thing = currentrun[currentrun.len] currentrun.len-- + if( thing.deferred_processing ) + deferred_process += thing + else{ + if(!QDELETED(thing) && thing.process(seconds) != PROCESS_KILL) + if(thing.use_power) + thing.auto_use_power() //add back the power state + else + processing -= thing + if(!QDELETED(thing)) + thing.isprocessing = FALSE + } + if(MC_TICK_CHECK) + return + while(deferred_process.len) + var/obj/machinery/thing = deferred_process[deferred_process.len] + deferred_process.len-- if(!QDELETED(thing) && thing.process(seconds) != PROCESS_KILL) if(thing.use_power) thing.auto_use_power() //add back the power state diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 18fc505a49b..3eb5d08bb66 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -118,6 +118,7 @@ Class Procs: var/list/settagwhitelist = list()//WHITELIST OF VARIABLES THAT THE set_tag HREF CAN MODIFY, DON'T PUT SHIT YOU DON'T NEED ON HERE, AND IF YOU'RE GONNA USE set_tag (format_tag() proc), ADD TO THIS LIST. atom_say_verb = "beeps" var/speed_process = 0 // Process as fast as possible? + var/deferred_processing = 0 /obj/machinery/Initialize() addAtProcessing() diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 27229a2d8b3..136b933c92f 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -13,6 +13,7 @@ icon_state = "smes" density = 1 anchored = 1 + deferred_processing = 1 var/capacity = 5e6 // maximum charge var/charge = 0 // actual charge @@ -39,7 +40,6 @@ var/building_terminal = 0 //Suggestions about how to avoid clickspam building several terminals accepted! var/obj/machinery/power/terminal/terminal = null - /obj/machinery/power/smes/New() ..() component_parts = list()