From e44dbfcc4eb2c2cf490343532fdd1df5bf1471f9 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 12 Aug 2014 00:34:31 -0400 Subject: [PATCH] Fixes #5953 Conflicts: code/game/machinery/doors/airlock.dm --- code/game/machinery/doors/airlock.dm | 6 +++--- code/game/machinery/doors/airlock_control.dm | 10 ++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index f99567472d6..7c1cf464089 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1251,7 +1251,7 @@ About the new airlock wires panel: return /obj/machinery/door/airlock/proc/lock(var/forced=0) - if (src.locked) return + if (operating || src.locked) return src.locked = 1 for(var/mob/M in range(1,src)) @@ -1259,9 +1259,9 @@ About the new airlock wires panel: update_icon() /obj/machinery/door/airlock/proc/unlock(var/forced=0) - if (!src.locked) return 0 + if (operating || !src.locked) return - if(forced || src.arePowerSystemsOn()) //only can raise bolts if power's on + if (forced || (src.arePowerSystemsOn() && !(stat & NOPOWER))) //only can raise bolts if power's on src.locked = 0 for(var/mob/M in range(1,src)) M.show_message("You hear a click from the bottom of the door.", 2) diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm index 8843fd25193..4f2a85a46db 100644 --- a/code/game/machinery/doors/airlock_control.dm +++ b/code/game/machinery/doors/airlock_control.dm @@ -15,10 +15,13 @@ obj/machinery/door/airlock/proc/can_radio() obj/machinery/door/airlock/process() ..() - execute_current_command() + if (arePowerSystemsOn() && !(stat & NOPOWER)) + execute_current_command() obj/machinery/door/airlock/receive_signal(datum/signal/signal) - if (!can_radio()) return + if (arePowerSystemsOn() && !(stat & NOPOWER)) return //no power + + if (!can_radio()) return //no radio if(!signal || signal.encryption) return @@ -28,6 +31,9 @@ obj/machinery/door/airlock/receive_signal(datum/signal/signal) execute_current_command() obj/machinery/door/airlock/proc/execute_current_command() + if(!operating) + return //emagged or busy doing something else + if (!cur_command) return