mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 03:02:54 +00:00
-Arrival airlocks have no controller/default bolts -Backup atmospherics on the space station has no filter discharge if you arent venting to space - it filters O2 and N2, and no outlet for anything else -Medical maintenance APC is unpowered, next to Chemistry and Psychiatry -Resleeving lab window tint doesnt work -The stairs just outside the warden's office, on the lower level, have no guard rail/window
204 lines
8.0 KiB
Plaintext
204 lines
8.0 KiB
Plaintext
|
|
var/global/datum/shuttle_controller/shuttle_controller
|
|
|
|
|
|
/datum/shuttle_controller
|
|
var/list/shuttles //maps shuttle tags to shuttle datums, so that they can be looked up.
|
|
var/list/process_shuttles //simple list of shuttles, for processing
|
|
|
|
/datum/shuttle_controller/proc/process()
|
|
//process ferry shuttles
|
|
for (var/datum/shuttle/ferry/shuttle in process_shuttles)
|
|
if (shuttle.process_state)
|
|
shuttle.process()
|
|
|
|
|
|
//This is called by gameticker after all the machines and radio frequencies have been properly initialized
|
|
/datum/shuttle_controller/proc/setup_shuttle_docks()
|
|
for(var/shuttle_tag in shuttles)
|
|
var/datum/shuttle/shuttle = shuttles[shuttle_tag]
|
|
shuttle.init_docking_controllers()
|
|
shuttle.dock() //makes all shuttles docked to something at round start go into the docked state
|
|
|
|
for(var/obj/machinery/embedded_controller/C in machines)
|
|
if(istype(C.program, /datum/computer/file/embedded_program/docking))
|
|
C.program.tag = null //clear the tags, 'cause we don't need 'em anymore
|
|
|
|
/datum/shuttle_controller/New()
|
|
shuttles = list()
|
|
process_shuttles = list()
|
|
|
|
var/datum/shuttle/ferry/shuttle
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
// Escape shuttle and pods
|
|
shuttle = new/datum/shuttle/ferry/emergency()
|
|
shuttle.location = 1 // At offsite
|
|
shuttle.warmup_time = 10
|
|
shuttle.area_offsite = locate(/area/shuttle/escape/centcom)
|
|
shuttle.area_station = locate(/area/shuttle/escape/station)
|
|
shuttle.area_transition = locate(/area/shuttle/escape/transit)
|
|
shuttle.docking_controller_tag = "escape_shuttle"
|
|
shuttle.dock_target_station = "escape_dock"
|
|
shuttle.dock_target_offsite = "centcom_dock"
|
|
shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN
|
|
shuttles["Escape"] = shuttle
|
|
process_shuttles += shuttle
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
shuttle = new/datum/shuttle/ferry/escape_pod()
|
|
shuttle.location = 0 // At station
|
|
shuttle.warmup_time = 0
|
|
shuttle.area_station = locate(/area/shuttle/large_escape_pod1/station)
|
|
shuttle.area_offsite = locate(/area/shuttle/large_escape_pod1/centcom)
|
|
shuttle.area_transition = locate(/area/shuttle/large_escape_pod1/transit)
|
|
shuttle.docking_controller_tag = "large_escape_pod_1"
|
|
shuttle.dock_target_station = "large_escape_pod_1_berth"
|
|
shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one
|
|
process_shuttles += shuttle
|
|
shuttles["Large Escape Pod 1"] = shuttle
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
shuttle = new/datum/shuttle/ferry/escape_pod()
|
|
shuttle.location = 0 // At station
|
|
shuttle.warmup_time = 0
|
|
shuttle.area_station = locate(/area/shuttle/large_escape_pod2/station)
|
|
shuttle.area_offsite = locate(/area/shuttle/large_escape_pod2/centcom)
|
|
shuttle.area_transition = locate(/area/shuttle/large_escape_pod2/transit)
|
|
shuttle.docking_controller_tag = "large_escape_pod_2"
|
|
shuttle.dock_target_station = "large_escape_pod_2_berth"
|
|
shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one
|
|
process_shuttles += shuttle
|
|
shuttles["Large Escape Pod 2"] = shuttle
|
|
|
|
//give the emergency shuttle controller it's shuttles
|
|
emergency_shuttle.shuttle = shuttles["Escape"]
|
|
emergency_shuttle.escape_pods = list(
|
|
shuttles["Large Escape Pod 1"],
|
|
shuttles["Large Escape Pod 2"],
|
|
)
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
// Supply 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
|
|
process_shuttles += shuttle
|
|
|
|
supply_controller.shuttle = shuttle
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
// Trade Ship
|
|
shuttle = new()
|
|
shuttle.location = 1
|
|
shuttle.warmup_time = 10 //want some warmup time so people can cancel.
|
|
shuttle.area_offsite = locate(/area/shuttle/trade/centcom)
|
|
shuttle.area_station = locate(/area/shuttle/trade/station)
|
|
shuttle.docking_controller_tag = "trade_shuttle"
|
|
shuttle.dock_target_station = "trade_shuttle_dock_airlock"
|
|
shuttle.dock_target_offsite = "trade_shuttle_bay"
|
|
shuttles["Trade"] = shuttle
|
|
process_shuttles += shuttle
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
// Away Mission Shuttle
|
|
var/datum/shuttle/multi_shuttle/AM = new/datum/shuttle/multi_shuttle()
|
|
AM.legit = 1
|
|
AM.origin = locate(/area/shuttle/awaymission/home)
|
|
AM.start_location = "NSS Adephagia (AM)"
|
|
|
|
AM.destinations = list(
|
|
"Old Engineering Base (AM)" = locate(/area/shuttle/awaymission/oldengbase)
|
|
)
|
|
|
|
AM.docking_controller_tag = "awaymission_shuttle"
|
|
AM.destination_dock_targets = list(
|
|
"NSS Adephagia (AM)" = "d1a2_dock_airlock"
|
|
)
|
|
|
|
var/area/awaym_dest = locate(/area/shuttle/awaymission/away)
|
|
if(awaym_dest.contents.len) //Otherwise this is an empty imaginary area
|
|
AM.destinations["Unknown Location [rand(1000,9999)]"] = awaym_dest
|
|
|
|
AM.announcer = "Automated Traffic Control"
|
|
//These seem backwards because they are written from the perspective of the merc and vox ships
|
|
AM.departure_message = "Attention. The away mission vessel is approaching the colony."
|
|
AM.arrival_message = "Attention. The away mission vessel is now leaving from the colony."
|
|
AM.interim = locate(/area/shuttle/awaymission/warp)
|
|
|
|
AM.move_time = 60
|
|
AM.warmup_time = 8
|
|
shuttles["AwayMission"] = AM
|
|
|
|
|
|
// TODO - Not implemented yet on new map
|
|
///////////////////////////////////////////////
|
|
//VOREStation Add - Belter Shuttle
|
|
// shuttle = new/datum/shuttle/ferry()
|
|
// shuttle.location = 0
|
|
// shuttle.warmup_time = 6
|
|
// shuttle.area_station = locate(/area/shuttle/belter/station)
|
|
// shuttle.area_offsite = locate(/area/shuttle/belter/belt/zone1)
|
|
// shuttle.area_transition = locate(/area/shuttle/belter/transit)
|
|
// shuttle.docking_controller_tag = "belter_docking"
|
|
// shuttle.dock_target_station = "belter_nodocking" //Fake tags to prevent the shuttle from opening doors.
|
|
// shuttle.dock_target_offsite = "belter_nodocking"
|
|
// shuttle.transit_direction = EAST
|
|
// shuttle.move_time = 60 + rand(10,40)
|
|
// process_shuttles += shuttle
|
|
// shuttles["Belter"] = shuttle
|
|
//VOREStation Add End - Belter Shuttle
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
// Tether Shuttle
|
|
shuttle = new()
|
|
shuttle.location = 1 // At offsite
|
|
shuttle.warmup_time = 5
|
|
shuttle.move_time = 20
|
|
shuttle.area_offsite = locate(/area/shuttle/tether/surface)
|
|
shuttle.area_station = locate(/area/shuttle/tether/station)
|
|
shuttle.area_transition = locate(/area/shuttle/tether/transit)
|
|
shuttle.docking_controller_tag = "tether_shuttle"
|
|
shuttle.dock_target_station = "tether_dock_airlock"
|
|
shuttle.dock_target_offsite = "tether_pad_airlock"
|
|
shuttles["Tether Backup"] = shuttle
|
|
process_shuttles += shuttle
|
|
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
// Antag Space "Proto Shuttle" Shuttle
|
|
AM = new/datum/shuttle/multi_shuttle()
|
|
AM.docking_controller_tag = "antag_space_shuttle"
|
|
AM.start_location = "Home Base"
|
|
AM.origin = locate(/area/shuttle/antag_space/base)
|
|
AM.interim = locate(/area/shuttle/antag_space/transit)
|
|
AM.destinations = list(
|
|
"Nearby" = locate(/area/shuttle/antag_space/north),
|
|
"Docks" = locate(/area/shuttle/antag_space/docks)
|
|
)
|
|
AM.destination_dock_targets = list("Home Base" = "antag_space_dock")
|
|
AM.move_time = 60
|
|
AM.warmup_time = 8
|
|
shuttles["Proto"] = AM
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
// Antag Surface "Land Crawler" Shuttle
|
|
AM = new/datum/shuttle/multi_shuttle()
|
|
AM.docking_controller_tag = "antag_ground_shuttle"
|
|
AM.start_location = "Home Base"
|
|
AM.origin = locate(/area/shuttle/antag_ground/base)
|
|
AM.interim = locate(/area/shuttle/antag_ground/transit)
|
|
AM.destinations = list(
|
|
"Solar Array" = locate(/area/shuttle/antag_ground/solars),
|
|
"Mining Outpost" = locate(/area/shuttle/antag_ground/mining)
|
|
)
|
|
AM.destination_dock_targets = list("Home Base" = "antag_ground_dock")
|
|
AM.move_time = 60
|
|
AM.warmup_time = 8
|
|
shuttles["Land Crawler"] = AM
|