diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm
index 61e3faa61c..b3430cb260 100644
--- a/code/controllers/configuration/entries/game_options.dm
+++ b/code/controllers/configuration/entries/game_options.dm
@@ -523,3 +523,6 @@
* Camera mobs, AIs, ghosts and some other are of course exempt from this. This also doesn't influence simplemob AI, for the best.
*/
/datum/config_entry/flag/use_field_of_vision
+
+/datum/config_entry/number/max_shuttle_size
+ config_entry_value = 500
diff --git a/code/modules/shuttle/shuttle_creation/shuttle_creator.dm b/code/modules/shuttle/shuttle_creation/shuttle_creator.dm
index 10bc2b3523..e6cf6d962b 100644
--- a/code/modules/shuttle/shuttle_creation/shuttle_creator.dm
+++ b/code/modules/shuttle/shuttle_creation/shuttle_creator.dm
@@ -1,3 +1,4 @@
+#define SHUTTLE_CREATOR_MAX_SIZE CONFIG_GET(number/max_shuttle_size)
#define CARDINAL_DIRECTIONS_X list(1, 0, -1, 0)
#define CARDINAL_DIRECTIONS_Y list(0, 1, 0, -1)
@@ -41,6 +42,7 @@ GLOBAL_LIST_EMPTY(custom_shuttle_machines) //Machines that require updating (He
. = ..()
internal_shuttle_creator = new()
internal_shuttle_creator.owner_rsd = src
+ desc += " Attention, the max size of the shuttle is [SHUTTLE_CREATOR_MAX_SIZE]."
overlay_holder = new()
/obj/item/shuttle_creator/Destroy()
@@ -284,10 +286,13 @@ GLOBAL_LIST_EMPTY(custom_shuttle_machines) //Machines that require updating (He
return TRUE
//Checks an area to ensure that the turfs provided are valid to be made into a shuttle
-/obj/item/shuttle_creator/proc/check_area(list/turfs)
+/obj/item/shuttle_creator/proc/check_area(list/turfs, addingTurfs = TRUE)
if(!turfs)
to_chat(usr, "Shuttles must be created in an airtight space, ensure that the shuttle is airtight, including corners.")
return FALSE
+ if(turfs.len + (addingTurfs ? loggedTurfs.len : 0) > SHUTTLE_CREATOR_MAX_SIZE)
+ to_chat(usr, "The [src]'s internal cooling system wizzes violently and a message appears on the screen, \"Caution, this device can only handle the creation of shuttles up to [SHUTTLE_CREATOR_MAX_SIZE] units in size. Please reduce your shuttle by [turfs.len-SHUTTLE_CREATOR_MAX_SIZE]. Sorry for the inconvinience\"")
+ return FALSE
//Check to see if it's a valid shuttle
for(var/i in 1 to turfs.len)
var/area/place = get_area(turfs[i])
diff --git a/code/modules/shuttle/shuttle_creation/shuttle_creator_actions.dm b/code/modules/shuttle/shuttle_creation/shuttle_creator_actions.dm
index 397cfad35a..d77232672b 100644
--- a/code/modules/shuttle/shuttle_creation/shuttle_creator_actions.dm
+++ b/code/modules/shuttle/shuttle_creation/shuttle_creator_actions.dm
@@ -81,6 +81,9 @@
return
if(shuttle_creator.linkedShuttleId)
return
+ if(shuttle_creator.loggedTurfs.len > SHUTTLE_CREATOR_MAX_SIZE)
+ to_chat(C, "This shuttle is too large!")
+ return
if(!shuttle_creator.getNonShuttleDirection(T))
to_chat(C, "Docking port must be on an external wall, with only 1 side exposed to space.")
return