diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index 3d0c8fca142d..c18932b652dd 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -321,14 +321,23 @@ if(lifeboat.status == LIFEBOAT_LOCKED) to_chat(xeno, SPAN_WARNING("We already wrested away control of this metal bird.")) return XENO_NO_DELAY_ACTION + if(lifeboat.mode == SHUTTLE_CALL) + to_chat(xeno, SPAN_WARNING("Too late, you cannot stop the metal bird mid-flight.")) + return XENO_NO_DELAY_ACTION xeno_attack_delay(xeno) if(do_after(usr, 5 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) - if(lifeboat.status != LIFEBOAT_LOCKED) - lifeboat.status = LIFEBOAT_LOCKED - lifeboat.available = FALSE - lifeboat.set_mode(SHUTTLE_IDLE) - xeno_message(SPAN_XENOANNOUNCE("We have wrested away control of one of the metal birds! They shall not escape!"), 3, xeno.hivenumber) + if(lifeboat.status == LIFEBOAT_LOCKED) + return XENO_NO_DELAY_ACTION + if(lifeboat.mode == SHUTTLE_CALL) + to_chat(xeno, SPAN_WARNING("Too late, you cannot stop the metal bird mid-flight.")) + return XENO_NO_DELAY_ACTION + lifeboat.status = LIFEBOAT_LOCKED + lifeboat.available = FALSE + lifeboat.set_mode(SHUTTLE_IDLE) + var/obj/docking_port/stationary/lifeboat_dock/lifeboat_dock = lifeboat.get_docked() + lifeboat_dock.open_dock() + xeno_message(SPAN_XENOANNOUNCE("We have wrested away control of one of the metal birds! They shall not escape!"), 3, xeno.hivenumber) return XENO_NO_DELAY_ACTION else return ..() diff --git a/code/modules/shuttle/shuttles/crashable/lifeboats.dm b/code/modules/shuttle/shuttles/crashable/lifeboats.dm index 11b376563d64..7f920ae3607e 100644 --- a/code/modules/shuttle/shuttles/crashable/lifeboats.dm +++ b/code/modules/shuttle/shuttles/crashable/lifeboats.dm @@ -100,6 +100,8 @@ /obj/docking_port/stationary/lifeboat_dock/proc/close_dock() var/obj/docking_port/mobile/crashable/lifeboat/docked_shuttle = get_docked() + if(docked_shuttle.status == LIFEBOAT_LOCKED) + return if(docked_shuttle) for(var/obj/structure/machinery/door/airlock/multi_tile/door in docked_shuttle.doors) INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat, close_and_lock))