diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm
index 404c2d54ca..ad0494ff31 100644
--- a/code/game/machinery/status_display.dm
+++ b/code/game/machinery/status_display.dm
@@ -112,7 +112,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())
@@ -171,7 +171,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 0f041ef5c9..9262c943bf 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -411,7 +411,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 aa4ecd007d..e6836352ad 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -143,22 +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)
+ if (shuttle_tag in shuttles && istype(shuttles[shuttle_tag], /datum/shuttle/ferry/supply))
+ shuttle = shuttles["Supply"]
+
+ //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
- proc/get_shuttle()
- if (!shuttles || !(shuttle_tag in shuttles))
- return null
-
- var/datum/shuttle/ferry/supply/shuttle = shuttles[shuttle_tag]
-
- if (!istype(shuttle))
- return null
-
- return shuttle
-
//Supply shuttle ticker - handles supply point regenertion and shuttle travelling between centcomm and the station
proc/process()
for(var/typepath in (typesof(/datum/supply_packs) - /datum/supply_packs))
@@ -178,8 +180,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)
@@ -202,21 +203,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/phoron_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
@@ -253,15 +251,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
@@ -339,7 +334,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