diff --git a/_maps/map_files/generic/Lavaland.dmm b/_maps/map_files/generic/Lavaland.dmm
index 41985eeb8f6..ea3d8ae5172 100644
--- a/_maps/map_files/generic/Lavaland.dmm
+++ b/_maps/map_files/generic/Lavaland.dmm
@@ -743,15 +743,7 @@
id_tag = "s_docking_airlock";
name = "Labor Shuttle Airlock"
},
-/obj/docking_port/mobile{
- dir = 8;
- dwidth = 2;
- height = 5;
- id = "laborcamp";
- name = "labor camp shuttle";
- rebuildable = 1;
- width = 9
- },
+/obj/docking_port/mobile/labour,
/obj/structure/fans/tiny,
/obj/docking_port/stationary{
area_type = /area/lavaland/surface/outdoors;
@@ -2881,15 +2873,7 @@
id_tag = "s_docking_airlock";
req_access_txt = "48"
},
-/obj/docking_port/mobile{
- dir = 8;
- dwidth = 3;
- height = 5;
- id = "mining";
- name = "mining shuttle";
- rebuildable = 1;
- width = 7
- },
+/obj/docking_port/mobile/mining,
/obj/structure/fans/tiny,
/obj/docking_port/stationary{
area_type = /area/lavaland/surface/outdoors;
diff --git a/code/controllers/subsystem/shuttles.dm b/code/controllers/subsystem/shuttles.dm
index daf3a8b74c2..af7a637a40f 100644
--- a/code/controllers/subsystem/shuttles.dm
+++ b/code/controllers/subsystem/shuttles.dm
@@ -205,6 +205,12 @@ SUBSYSTEM_DEF(shuttle)
/datum/controller/subsystem/shuttle/proc/moveShuttle(shuttleId, dockId, timed, mob/user)
var/obj/docking_port/mobile/M = getShuttle(shuttleId)
var/obj/docking_port/stationary/D = getDock(dockId)
+ //check if the shuttle is on lockdown
+ if(M.lockeddown)
+ return 3
+ if(M.uses_lockdown)
+ M.lockeddown = TRUE
+ addtimer(VARSET_CALLBACK(M, lockeddown, FALSE), 15 SECONDS)
if(!M)
return 1
M.last_caller = user // Save the caller of the shuttle for later logging
diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm
index 9dace2ae779..27fbe84058f 100644
--- a/code/modules/shuttle/shuttle.dm
+++ b/code/modules/shuttle/shuttle.dm
@@ -228,6 +228,10 @@
var/obj/docking_port/stationary/destination
var/obj/docking_port/stationary/previous
+ /// Does this shuttle use the lockdown system?
+ var/uses_lockdown = FALSE
+ /// If this variable is true, shuttle is on lockdown, and other requests can not be processed
+ var/lockeddown = FALSE
/obj/docking_port/mobile/Initialize(mapload)
. = ..()
@@ -731,6 +735,26 @@
dst = destination
. += " towards [dst ? dst.name : "unknown location"] ([timeLeft(600)]mins)"
+/obj/docking_port/mobile/labour
+ dir = 8
+ dwidth = 2
+ height = 5
+ id = "laborcamp"
+ name = "labor camp shuttle"
+ rebuildable = TRUE
+ width = 9
+ uses_lockdown = TRUE
+
+/obj/docking_port/mobile/mining
+ dir = 8
+ dwidth = 3
+ height = 5
+ id = "mining"
+ name = "mining shuttle"
+ rebuildable = TRUE
+ width = 7
+ uses_lockdown = TRUE
+
/obj/machinery/computer/shuttle
name = "Shuttle Console"
icon_screen = "shuttle"
@@ -832,8 +856,10 @@
return TRUE
if(1)
to_chat(usr, "Invalid shuttle requested.")
- else
+ if(2)
to_chat(usr, "Unable to comply.")
+ if(3)
+ atom_say("Shuttle has already received a pending movement request. Please wait until the movement request is processed.")
/obj/machinery/computer/shuttle/emag_act(mob/user)