diff --git a/code/game/machinery/embedded_controller/airlock_docking_controller.dm b/code/game/machinery/embedded_controller/airlock_docking_controller.dm index 0e9877d797..6edf07e221 100644 --- a/code/game/machinery/embedded_controller/airlock_docking_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_docking_controller.dm @@ -108,7 +108,9 @@ //are we ready for undocking? /datum/computer/file/embedded_program/docking/airlock/ready_for_undocking() - return airlock_program.check_doors_secured() + var/ext_closed = airlock_program.check_exterior_door_secured() + var/int_closed = airlock_program.check_interior_door_secured() + return (ext_closed || int_closed) //An airlock controller to be used by the airlock-based docking port controller. //Same as a regular airlock controller but allows disabling of the regular airlock functions when docking diff --git a/code/game/machinery/embedded_controller/airlock_program.dm b/code/game/machinery/embedded_controller/airlock_program.dm index 627f9844a3..3d7d306df3 100644 --- a/code/game/machinery/embedded_controller/airlock_program.dm +++ b/code/game/machinery/embedded_controller/airlock_program.dm @@ -248,9 +248,15 @@ return (state == STATE_WAIT && target_state == TARGET_NONE) //are the doors closed and locked? +/datum/computer/file/embedded_program/airlock/proc/check_exterior_door_secured() + return (memory["exterior_status"]["state"] == "closed" && memory["exterior_status"]["lock"] == "locked") + +/datum/computer/file/embedded_program/airlock/proc/check_interior_door_secured() + return (memory["interior_status"]["state"] == "closed" && memory["interior_status"]["lock"] == "locked") + /datum/computer/file/embedded_program/airlock/proc/check_doors_secured() - var/ext_closed = (memory["exterior_status"]["state"] == "closed" && memory["exterior_status"]["lock"] == "locked") - var/int_closed = (memory["interior_status"]["state"] == "closed" && memory["interior_status"]["lock"] == "locked") + var/ext_closed = check_exterior_door_secured() + var/int_closed = check_interior_door_secured() return (ext_closed && int_closed) /datum/computer/file/embedded_program/airlock/proc/signalDoor(var/tag, var/command)