diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm
index 2a212b5ba1a..08a3f5e4f40 100644
--- a/code/game/machinery/status_display.dm
+++ b/code/game/machinery/status_display.dm
@@ -117,7 +117,7 @@
var/line1 = "SUPPLY"
var/line2 = ""
- var/datum/shuttle/ferry/supply/shuttle = supply_controller.get_shuttle()
+ var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle
if (!shuttle)
line2 = "Error"
else if(shuttle.has_eta())
@@ -176,7 +176,7 @@
return ""
proc/get_supply_shuttle_timer()
- var/datum/shuttle/ferry/supply/shuttle = supply_controller.get_shuttle()
+ var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle
if (!shuttle)
return "Error"
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index 5b4e031aad7..da729b14e9d 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -412,7 +412,7 @@
if(mode==47)
var/supplyData[0]
- var/datum/shuttle/ferry/supply/shuttle = supply_controller.get_shuttle()
+ var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle
if (shuttle)
supplyData["shuttle_moving"] = shuttle.has_eta()
supplyData["shuttle_eta"] = shuttle.eta_minutes()
diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm
index 1d19f0c7c88..5fc722d9296 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -143,21 +143,24 @@ var/list/mechtoys = list(
var/list/supply_packs = list()
//shuttle movement
var/movetime = 1200
- var/shuttle_tag = "Supply"
+ var/datum/shuttle/ferry/supply/shuttle
New()
ordernum = rand(1,9000)
- proc/get_shuttle()
- if (!shuttles || !(shuttle_tag in shuttles))
- return null
+ if ("Supply" in shuttles && istype(shuttles["Supply"], /datum/shuttle/ferry/supply))
+ shuttle = shuttles["Supply"]
- var/datum/shuttle/ferry/supply/shuttle = shuttles[shuttle_tag]
-
- if (!istype(shuttle))
- return null
-
- return shuttle
+ //still don't have the shuttle, so create one
+ if (!shuttle)
+ shuttle = new/datum/shuttle/ferry/supply()
+ shuttle.location = 1
+ shuttle.warmup_time = 10
+ shuttle.area_offsite = locate(/area/supply/dock)
+ shuttle.area_station = locate(/area/supply/station)
+ shuttle.docking_controller_tag = "supply_shuttle"
+ shuttle.dock_target_station = "cargo_bay"
+ shuttles["Supply"] = shuttle
//Supply shuttle ticker - handles supply point regenertion and shuttle travelling between centcomm and the station
proc/process()
@@ -178,8 +181,7 @@ var/list/mechtoys = list(
set background = 1
while(1)
if(processing)
- var/datum/shuttle/ferry/supply/shuttle = get_shuttle()
- if (shuttle && shuttle.in_use)
+ if (shuttle.in_use)
shuttle.process_shuttle()
sleep(10)
@@ -204,21 +206,18 @@ var/list/mechtoys = list(
//Sellin
proc/sell()
- var/datum/shuttle/ferry/supply/shuttle_datum = get_shuttle()
- if (!shuttle_datum) return
-
- var/area/shuttle = shuttle_datum.get_location_area()
- if(!shuttle) return
+ var/area/area_shuttle = shuttle.get_location_area()
+ if(!area_shuttle) return
var/plasma_count = 0
var/plat_count = 0
- for(var/atom/movable/MA in shuttle)
+ for(var/atom/movable/MA in area_shuttle)
if(MA.anchored) continue
// Must be in a crate!
if(istype(MA,/obj/structure/closet/crate))
- callHook("sell_crate", list(MA, shuttle))
+ callHook("sell_crate", list(MA, area_shuttle))
points += points_per_crate
var/find_slip = 1
@@ -255,15 +254,12 @@ var/list/mechtoys = list(
proc/buy()
if(!shoppinglist.len) return
- var/datum/shuttle/ferry/supply/shuttle_datum = get_shuttle()
- if (!shuttle_datum) return
-
- var/area/shuttle = shuttle_datum.get_location_area()
- if(!shuttle) return
+ var/area/area_shuttle = shuttle.get_location_area()
+ if(!area_shuttle) return
var/list/clear_turfs = list()
- for(var/turf/T in shuttle)
+ for(var/turf/T in area_shuttle)
if(T.density || T.contents.len) continue
clear_turfs += T
@@ -341,7 +337,7 @@ var/list/mechtoys = list(
if(temp)
dat = temp
else
- var/datum/shuttle/ferry/supply/shuttle = supply_controller.get_shuttle()
+ var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle
if (shuttle)
dat += {"
Supply shuttle