diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index 0777c6aa41..204081716c 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -278,9 +278,17 @@ datum/controller/game_controller/proc/process_diseases() active_diseases.Cut(i,i+1) datum/controller/game_controller/proc/process_machines() + process_machines_sort() process_machines_process() process_machines_power() process_machines_rebuild() + +/var/global/machinery_sort_required = 0 +datum/controller/game_controller/proc/process_machines_sort() + if(machinery_sort_required) + machinery_sort_required = 0 + machines = dd_sortedObjectList(machines) + datum/controller/game_controller/proc/process_machines_process() var/i = 1 while(i<=machines.len) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index c1438b236d..b4ec54d615 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -114,6 +114,7 @@ Class Procs: /obj/machinery/New() ..() machines += src + machinery_sort_required = 1 /obj/machinery/Del() machines -= src @@ -161,15 +162,15 @@ Class Procs: /obj/machinery/proc/update_use_power(var/new_use_power) if (new_use_power == use_power) return //don't need to do anything - + use_power = new_use_power - + //force area power update //use_power() forces an area power update on the next tick so have to pass the correct power amount for this tick if (use_power >= 2) use_power(active_power_usage) else if (use_power == 1) - use_power(idle_power_usage) + use_power(idle_power_usage) else use_power(0)