diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index f7442a7e462..676c1bafcc9 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -267,7 +267,7 @@ datum/controller/game_controller/proc/process() continue - machines = machines - Machinery + Machinery.removeAtProcessing() /datum/controller/game_controller/proc/processObjects() for (var/obj/Object in processing_objects) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 928d0c1d078..d7327f87ec7 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -112,16 +112,27 @@ Class Procs: var/global/gl_uid = 1 var/custom_aghost_alerts=0 var/panel_open = 0 + var/myArea /obj/machinery/New() - ..() + addAtProcessing() + return ..() + +/obj/machinery/proc/addAtProcessing() + myArea = loc.loc machines += src -/obj/machinery/Destroy() +/obj/machinery/proc/removeAtProcessing() + myArea = null machines -= src + +/obj/machinery/Destroy() + if (src in machines) + removeAtProcessing() + ..() -/obj/machinery/process()//If you dont use process or power why are you here +/obj/machinery/process() // If you dont use process or power why are you here return PROCESS_KILL /obj/machinery/emp_act(severity) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index e44f0014315..c57b66c39a0 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -54,12 +54,16 @@ // increment the power usage stats for an area -/obj/machinery/proc/use_power(var/amount, var/chan = -1, var/autocalled = 0) // defaults to power_channel - var/area/A = src.loc.loc // make sure it's in an area + +/obj/machinery/proc/use_power(var/amount, var/chan = -1, var/autocalled = 0) // defaults to power_channel) // defaults to power_channel + var/area/A = src.myArea + if(!A || !isarea(A) || !A.master) return + if(chan == -1) chan = power_channel + A.master.use_power(amount, chan) if(!autocalled) A.master.powerupdate = 2 // Decremented by 2 each GC tick, since it's not auto power change we're going to update power twice.