mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-01-30 19:24:08 +00:00
Co-authored-by: Selis <12716288+ItsSelis@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
63 lines
1.9 KiB
Plaintext
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]"))
|