Files
CHOMPStation2/code/modules/shuttles/shuttles_multi.dm
2025-09-14 20:05:26 +02:00

63 lines
1.9 KiB
Plaintext

//This is a holder for things like the Skipjack and Nuke shuttle.
// Formerly /datum/shuttle/multi_shuttle
/datum/shuttle/autodock/multi
var/list/destination_tags
var/list/destinations_cache = list()
var/last_cache_rebuild_time = 0
category = /datum/shuttle/autodock/multi
var/cloaked = FALSE
var/can_cloak = FALSE
var/at_origin = 1
var/cooldown = 20
var/last_move = 0 //the time at which we last moved
var/announcer
var/arrival_message
var/departure_message
var/start_location
var/last_location
var/return_warning = 0
var/legit = FALSE
/datum/shuttle/autodock/multi/New()
..()
start_location = current_location
last_location = current_location
/datum/shuttle/autodock/multi/proc/set_destination(var/destination_key, mob/user)
if(moving_status != SHUTTLE_IDLE)
return
next_location = destinations_cache[destination_key]
if(!next_location)
WARNING("Shuttle [src] set to destination we can't find: [destination_key]")
/datum/shuttle/autodock/multi/proc/get_destinations()
if (last_cache_rebuild_time < SSshuttles.last_landmark_registration_time)
build_destinations_cache()
return destinations_cache
/datum/shuttle/autodock/multi/proc/build_destinations_cache()
last_cache_rebuild_time = world.time
destinations_cache.Cut()
for(var/destination_tag in destination_tags)
var/obj/effect/shuttle_landmark/landmark = SSshuttles.get_landmark(destination_tag)
if (istype(landmark))
destinations_cache["[landmark.name]"] = landmark
/datum/shuttle/autodock/multi/perform_shuttle_move()
..()
last_move = world.time
/datum/shuttle/autodock/multi/proc/announce_departure()
if(cloaked || isnull(departure_message))
return
command_announcement.Announce(departure_message, (announcer ? announcer : "[using_map.boss_name]"))
/datum/shuttle/autodock/multi/proc/announce_arrival()
if(cloaked || isnull(arrival_message))
return
command_announcement.Announce(arrival_message, (announcer ? announcer : "[using_map.boss_name]"))