From 24e32713f49c0582aad109acb2a71549839c2feb Mon Sep 17 00:00:00 2001 From: Leshana Date: Fri, 5 Jan 2018 23:47:34 -0500 Subject: [PATCH] Stop airlocks from sleeping during machine controller process() execution. * Sleeping during process() is BAD BAD BAD! * Since close() sleeps, we make sure to spawn() before calling it. --- code/game/machinery/doors/airlock_control.dm | 10 +++++----- code/game/machinery/doors/door.dm | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm index c87e78cfd50..871f42eb7bf 100644 --- a/code/game/machinery/doors/airlock_control.dm +++ b/code/game/machinery/doors/airlock_control.dm @@ -21,8 +21,7 @@ obj/machinery/door/airlock/receive_signal(datum/signal/signal) if(id_tag != signal.data["tag"] || !signal.data["command"]) return cur_command = signal.data["command"] - spawn() - execute_current_command() + execute_current_command() obj/machinery/door/airlock/proc/execute_current_command() if(operating) @@ -31,9 +30,10 @@ obj/machinery/door/airlock/proc/execute_current_command() if (!cur_command) return - do_command(cur_command) - if (command_completed(cur_command)) - cur_command = null + spawn() + do_command(cur_command) + if (command_completed(cur_command)) + cur_command = null obj/machinery/door/airlock/proc/do_command(var/command) switch(command) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 157e73e4a86..6e1d19d4d31 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -79,7 +79,8 @@ if(close_door_at && world.time >= close_door_at) if(autoclose) close_door_at = next_close_time() - close() + spawn(0) + close() else close_door_at = 0