Adds new trader shuttles for each trader type (#29734)

* Prepare for trade shuttles

* The ships

* Debug logs

* W i d e

* Adjust

* Update boxstation.dmm

* Templates instead of landmarks, test this

Co-authored-by: Charlie Nolan <funnyman3595@gmail.com>
Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>

* Fixes

* Removed unnecessary comment

Co-authored-by: Charlie Nolan <funnyman3595@gmail.com>
Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>

* Null check

Co-authored-by: Charlie Nolan <funnyman3595@gmail.com>
Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>

* Reorganizes some ships to make viewing easier

---------

Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
Co-authored-by: Fordoxia <143041327+Fordoxia@users.noreply.github.com>
Co-authored-by: Charlie Nolan <funnyman3595@gmail.com>
This commit is contained in:
PollardTheDragon
2025-08-22 15:10:41 +00:00
committed by GitHub
co-authored by Charlie Nolan Fordoxia
parent 68171a0442
commit 4bed17ef31
20 changed files with 9184 additions and 1030 deletions
+32
View File
@@ -479,6 +479,38 @@ SUBSYSTEM_DEF(shuttle)
custom_escape_shuttle_loading = FALSE
return loaded_shuttle
/datum/controller/subsystem/shuttle/proc/set_trader_shuttle(datum/map_template/shuttle/trader/template)
var/obj/docking_port/mobile/trader/trade_shuttle = getShuttle("trader")
if(trade_shuttle)
var/obj/docking_port/stationary/docked_id = trade_shuttle.get_docked()
if(docked_id?.id != "trader_base")
CRASH("Attempted to load a new trade shuttle while the existing one was not at its home base.")
// Dispose of the old shuttle.
trade_shuttle.jumpToNullSpace()
var/obj/docking_port/mobile/trader/dock = getDock("trader_base")
if(!dock)
CRASH("Unable to load trading shuttle, no trading dock found.")
// Load in the new shuttle.
trade_shuttle = load_template(template)
var/result = trade_shuttle.canDock(dock)
if(result == SHUTTLE_SOMEONE_ELSE_DOCKED)
trade_shuttle.jumpToNullSpace()
CRASH("A non-trader shuttle is blocking the trading dock.")
if(result != SHUTTLE_CAN_DOCK)
trade_shuttle.jumpToNullSpace()
CRASH("New trading shuttle unable to dock at the trading dock: [result]")
trade_shuttle.dock(dock)
trade_shuttle.register()
// TODO indicate to the user that success happened, rather than just
// blanking the modification tab
return trade_shuttle
/datum/controller/subsystem/shuttle/proc/request_transit_dock(obj/docking_port/mobile/M)
if(!istype(M))
CRASH("[M] is not a mobile docking port")