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