Docking Ports Management Program (#16802)

* stuff copied from the other branch

* aurorastation.dme reorder

* lint fixes

* docks gui prettier

---------

Co-authored-by: DreamySkrell <>
This commit is contained in:
DreamySkrell
2023-07-23 20:27:43 +02:00
committed by GitHub
parent 1820893638
commit db030df4d5
22 changed files with 254 additions and 61 deletions

View File

@@ -2558,6 +2558,7 @@
#include "code\modules\modular_computers\file_system\programs\command\account_database.dm" #include "code\modules\modular_computers\file_system\programs\command\account_database.dm"
#include "code\modules\modular_computers\file_system\programs\command\card.dm" #include "code\modules\modular_computers\file_system\programs\command\card.dm"
#include "code\modules\modular_computers\file_system\programs\command\command_and_communications.dm" #include "code\modules\modular_computers\file_system\programs\command\command_and_communications.dm"
#include "code\modules\modular_computers\file_system\programs\command\docks.dm"
#include "code\modules\modular_computers\file_system\programs\command\teleporter.dm" #include "code\modules\modular_computers\file_system\programs\command\teleporter.dm"
#include "code\modules\modular_computers\file_system\programs\engineering\_engineering.dm" #include "code\modules\modular_computers\file_system\programs\engineering\_engineering.dm"
#include "code\modules\modular_computers\file_system\programs\engineering\atmoscontrol.dm" #include "code\modules\modular_computers\file_system\programs\engineering\atmoscontrol.dm"

View File

@@ -98,5 +98,5 @@
set desc = "Launches the CCIA Shuttle." set desc = "Launches the CCIA Shuttle."
set category = "Special Verbs" set category = "Special Verbs"
var/datum/shuttle/autodock/ferry/S = SSshuttle.shuttles["Agent Shuttle"] var/datum/shuttle/autodock/ferry/S = SSshuttle.shuttles["SCC Shuttle"]
S.launch(usr) S.launch(usr)

View File

@@ -94,6 +94,7 @@
soundloop = new(src, enabled) soundloop = new(src, enabled)
initial_name = name initial_name = name
listener = new("modular_computers", src) listener = new("modular_computers", src)
sync_linked()
/obj/item/modular_computer/Destroy() /obj/item/modular_computer/Destroy()
kill_program(TRUE) kill_program(TRUE)
@@ -495,3 +496,26 @@
/obj/item/modular_computer/on_slotmove(var/mob/living/user, slot) /obj/item/modular_computer/on_slotmove(var/mob/living/user, slot)
. = ..(user, slot) . = ..(user, slot)
BITSET(user.hud_updateflag, ID_HUD) //Same reasoning as for IDs BITSET(user.hud_updateflag, ID_HUD) //Same reasoning as for IDs
// A late init operation called in SSshuttle for ship computers and holopads, used to attach the thing to the right ship.
/obj/item/modular_computer/proc/attempt_hook_up(var/obj/effect/overmap/visitable/sector)
SHOULD_CALL_PARENT(TRUE)
if(!istype(sector))
return FALSE
if(sector.check_ownership(src))
linked = sector
return TRUE
return FALSE
/obj/item/modular_computer/proc/sync_linked()
var/obj/effect/overmap/visitable/sector = map_sectors["[z]"]
if(!sector)
return
return attempt_hook_up_recursive(sector)
/obj/item/modular_computer/proc/attempt_hook_up_recursive(var/obj/effect/overmap/visitable/sector)
if(attempt_hook_up(sector))
return sector
for(var/obj/effect/overmap/visitable/candidate in sector)
if((. = .(candidate)))
return

View File

@@ -32,6 +32,7 @@
var/doorcode = "smindicate" var/doorcode = "smindicate"
var/hidden = FALSE var/hidden = FALSE
var/initial_name var/initial_name
var/obj/effect/overmap/visitable/linked // overmap sector the computer is linked to
// Modular computers can run on various devices. Each DEVICE (Laptop, Console, Tablet,..) // Modular computers can run on various devices. Each DEVICE (Laptop, Console, Tablet,..)
// must have it's own DMI file. Icon states must be called exactly the same in all files, but may look differently // must have it's own DMI file. Icon states must be called exactly the same in all files, but may look differently

View File

@@ -199,6 +199,7 @@
new /datum/computer_file/program/civilian/cargoorder(comp), new /datum/computer_file/program/civilian/cargoorder(comp),
new /datum/computer_file/program/card_mod(comp), new /datum/computer_file/program/card_mod(comp),
new /datum/computer_file/program/comm(comp, TRUE), new /datum/computer_file/program/comm(comp, TRUE),
new /datum/computer_file/program/docks(comp),
new /datum/computer_file/program/records/employment(comp) new /datum/computer_file/program/records/employment(comp)
) )
return _prg_list return _prg_list
@@ -260,6 +261,7 @@
new /datum/computer_file/program/civilian/cargocontrol(comp), new /datum/computer_file/program/civilian/cargocontrol(comp),
new /datum/computer_file/program/card_mod(comp), new /datum/computer_file/program/card_mod(comp),
new /datum/computer_file/program/comm(comp, FALSE), new /datum/computer_file/program/comm(comp, FALSE),
new /datum/computer_file/program/docks(comp),
new /datum/computer_file/program/records/employment(comp), new /datum/computer_file/program/records/employment(comp),
new /datum/computer_file/program/records/security(comp) new /datum/computer_file/program/records/security(comp)
) )
@@ -280,6 +282,7 @@
new /datum/computer_file/program/chat_client(comp), new /datum/computer_file/program/chat_client(comp),
new /datum/computer_file/program/card_mod(comp), new /datum/computer_file/program/card_mod(comp),
new /datum/computer_file/program/comm(comp, TRUE), new /datum/computer_file/program/comm(comp, TRUE),
new /datum/computer_file/program/docks(comp),
new /datum/computer_file/program/camera_monitor(comp), new /datum/computer_file/program/camera_monitor(comp),
new /datum/computer_file/program/digitalwarrant(comp), new /datum/computer_file/program/digitalwarrant(comp),
new /datum/computer_file/program/penal_mechs(comp), new /datum/computer_file/program/penal_mechs(comp),
@@ -478,7 +481,7 @@
description = "Contains the most common cargo programs as well as the OM's ones." description = "Contains the most common cargo programs as well as the OM's ones."
available = FALSE available = FALSE
/datum/modular_computer_app_presets/supply/return_install_programs(obj/item/modular_computer/comp) /datum/modular_computer_app_presets/supply/om/return_install_programs(obj/item/modular_computer/comp)
var/list/_prg_list = list( var/list/_prg_list = list(
new /datum/computer_file/program/ntnetdownload(comp), new /datum/computer_file/program/ntnetdownload(comp),
new /datum/computer_file/program/filemanager(comp), new /datum/computer_file/program/filemanager(comp),
@@ -488,7 +491,8 @@
new /datum/computer_file/program/civilian/cargocontrol(comp), new /datum/computer_file/program/civilian/cargocontrol(comp),
new /datum/computer_file/program/civilian/cargoorder(comp), new /datum/computer_file/program/civilian/cargoorder(comp),
new /datum/computer_file/program/civilian/cargodelivery(comp), new /datum/computer_file/program/civilian/cargodelivery(comp),
new /datum/computer_file/program/comm(comp, FALSE) new /datum/computer_file/program/comm(comp, FALSE),
new /datum/computer_file/program/docks(comp)
) )
return _prg_list return _prg_list

View File

@@ -0,0 +1,53 @@
/datum/computer_file/program/docks
filename = "docks"
filedesc = "Docking Ports Management Program"
extended_desc = "Used to manage the docks, hangars, and any docked ships."
program_icon_state = "docks"
program_key_icon_state = "lightblue_key"
color = LIGHT_COLOR_BLUE
size = 8
requires_ntnet = TRUE
available_on_ntnet = TRUE
required_access_run = access_heads
required_access_download = access_heads
usage_flags = PROGRAM_CONSOLE
tgui_id = "Docks"
/datum/computer_file/program/docks/ui_data(mob/user)
var/list/data = list()
// Gather data for computer header
var/headerdata = get_header_data(data["_PC"])
if(headerdata)
data["_PC"] = headerdata
. = data
var/obj/effect/overmap/visitable/connected = computer.linked
var/list/docks = list()
if(connected)
data["connected_name"] = connected.name
for(var/landmark_tag in connected.tracked_dock_tags)
var/obj/effect/shuttle_landmark/landmark = SSshuttle.registered_shuttle_landmarks[landmark_tag]
if(landmark && istype(landmark))
docks[++docks.len] = list(
"name" = landmark.name
)
for(var/shuttle_key in SSshuttle.shuttles)
var/datum/shuttle/shuttle = SSshuttle.shuttles[shuttle_key]
if(shuttle && shuttle.current_location && shuttle.current_location.landmark_tag == landmark.landmark_tag)
docks[docks.len]["shuttle"] = shuttle.name
break
else
docks[++docks.len] = list(
"name" = landmark_tag,
"shuttle" = "???"
)
data["docks"] = docks
return data
/datum/computer_file/program/docks/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
return

View File

@@ -16,6 +16,7 @@ var/global/area/overmap/map_overmap // Global object used to locate the overmap
var/list/initial_generic_waypoints //store landmark_tag of landmarks that should be added to the actual lists below on init. var/list/initial_generic_waypoints //store landmark_tag of landmarks that should be added to the actual lists below on init.
var/list/initial_restricted_waypoints //For use with non-automatic landmarks (automatic ones add themselves). var/list/initial_restricted_waypoints //For use with non-automatic landmarks (automatic ones add themselves).
var/list/tracked_dock_tags //landmark_tag of landmarks of docks that will be tracked in the docks computer program
var/list/generic_waypoints = list() //waypoints that any shuttle can use var/list/generic_waypoints = list() //waypoints that any shuttle can use
var/list/restricted_waypoints = list() //waypoints for specific shuttles var/list/restricted_waypoints = list() //waypoints for specific shuttles

View File

@@ -5,22 +5,25 @@
req_access = list(access_syndicate) req_access = list(access_syndicate)
shuttle_tag = "Skipjack" shuttle_tag = "Skipjack"
light_color = LIGHT_COLOR_RED light_color = LIGHT_COLOR_RED
can_rename_ship = TRUE
/obj/machinery/computer/shuttle_control/multi/burglar /obj/machinery/computer/shuttle_control/multi/burglar
name = "pod control console" name = "pod control console"
icon = 'icons/obj/primitive_computer.dmi' icon = 'icons/obj/primitive_computer.dmi'
icon_screen = "syndicate" icon_screen = "syndicate"
req_access = list(access_syndicate) req_access = list(access_syndicate)
shuttle_tag = "Burglar Pod" shuttle_tag = "Water Bear"
light_color = LIGHT_COLOR_RED light_color = LIGHT_COLOR_RED
can_rename_ship = TRUE
/obj/machinery/computer/shuttle_control/multi/antag/syndicate /obj/machinery/computer/shuttle_control/multi/antag/syndicate
name = "mercenary shuttle control console" name = "mercenary shuttle control console"
icon = 'icons/obj/primitive_computer.dmi' icon = 'icons/obj/primitive_computer.dmi'
icon_screen = "syndicate" icon_screen = "syndicate"
req_access = list(access_syndicate) req_access = list(access_syndicate)
shuttle_tag = "Mercenary Shuttle" shuttle_tag = "ICV Raskolnikov"
light_color = LIGHT_COLOR_RED light_color = LIGHT_COLOR_RED
can_rename_ship = TRUE
/obj/machinery/computer/shuttle_control/multi/merc_elite /obj/machinery/computer/shuttle_control/multi/merc_elite
name = "shuttle control console" name = "shuttle control console"

View File

@@ -34,4 +34,5 @@
/obj/machinery/computer/shuttle_control/merchant /obj/machinery/computer/shuttle_control/merchant
name = "merchant shuttle control console" name = "merchant shuttle control console"
req_access = list(access_merchant) req_access = list(access_merchant)
shuttle_tag = "Merchant Shuttle" shuttle_tag = "ICV Enterprise"
can_rename_ship = TRUE

View File

@@ -9,6 +9,7 @@
var/ui_template = "shuttle_control_console.tmpl" var/ui_template = "shuttle_control_console.tmpl"
var/list/linked_helmets = list() var/list/linked_helmets = list()
var/can_rename_ship = FALSE
/obj/machinery/computer/shuttle_control/Initialize() /obj/machinery/computer/shuttle_control/Initialize()
. = ..() . = ..()
@@ -67,6 +68,8 @@
"can_launch" = shuttle.can_launch(), "can_launch" = shuttle.can_launch(),
"can_cancel" = shuttle.can_cancel(), "can_cancel" = shuttle.can_cancel(),
"can_force" = shuttle.can_force(), "can_force" = shuttle.can_force(),
"can_rename_ship" = can_rename_ship,
"ship_name" = shuttle.name,
) )
/obj/machinery/computer/shuttle_control/proc/get_shuttle_status(var/datum/shuttle/autodock/shuttle) /obj/machinery/computer/shuttle_control/proc/get_shuttle_status(var/datum/shuttle/autodock/shuttle)
@@ -118,6 +121,12 @@
shuttle.cancel_launch(src) shuttle.cancel_launch(src)
return TOPIC_REFRESH return TOPIC_REFRESH
if(href_list["rename"])
var/new_name = input(usr, "Select new name for this ship.", "Rename this ship", shuttle.name)
if(new_name)
shuttle.name = new_name
return TOPIC_REFRESH
/obj/machinery/computer/shuttle_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) /obj/machinery/computer/shuttle_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
var/datum/shuttle/autodock/shuttle = SSshuttle.shuttles[shuttle_tag] var/datum/shuttle/autodock/shuttle = SSshuttle.shuttles[shuttle_tag]
if (!istype(shuttle)) if (!istype(shuttle))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 KiB

After

Width:  |  Height:  |  Size: 266 KiB

View File

@@ -33993,7 +33993,7 @@
/obj/machinery/computer/shuttle_control{ /obj/machinery/computer/shuttle_control{
req_access = null; req_access = null;
req_one_access = list(38,72); req_one_access = list(38,72);
shuttle_tag = "Agent Shuttle" shuttle_tag = "SCC Shuttle";
}, },
/turf/simulated/floor/shuttle/dark_blue, /turf/simulated/floor/shuttle/dark_blue,
/area/shuttle/transport1) /area/shuttle/transport1)

View File

@@ -132,7 +132,7 @@ AURORA_ESCAPE_POD(4)
//-// Merchant Shuttle //-// //-// Merchant Shuttle //-//
/datum/shuttle/autodock/ferry/merchant_aurora /datum/shuttle/autodock/ferry/merchant_aurora
name = "Merchant Shuttle" name = "ICV Enterprise"
location = 1 location = 1
warmup_time = 10 warmup_time = 10
shuttle_area = /area/shuttle/merchant shuttle_area = /area/shuttle/merchant
@@ -155,7 +155,7 @@ AURORA_ESCAPE_POD(4)
base_turf = /turf/space/transit/bluespace/west base_turf = /turf/space/transit/bluespace/west
/obj/effect/shuttle_landmark/merchant/dock /obj/effect/shuttle_landmark/merchant/dock
name = "Merchant Shuttle Dock" name = "Second Deck Starboard Dock 1"
landmark_tag = "nav_merchant_dock" landmark_tag = "nav_merchant_dock"
docking_controller = "merchant_shuttle_dock" docking_controller = "merchant_shuttle_dock"
landmark_flags = SLANDMARK_FLAG_AUTOSET landmark_flags = SLANDMARK_FLAG_AUTOSET
@@ -196,7 +196,7 @@ AURORA_ESCAPE_POD(4)
//-// CCIA Shuttle //-// //-// CCIA Shuttle //-//
/datum/shuttle/autodock/ferry/autoreturn/ccia /datum/shuttle/autodock/ferry/autoreturn/ccia
name = "Agent Shuttle" name = "SCC Shuttle"
location = 1 location = 1
warmup_time = 10 warmup_time = 10
shuttle_area = /area/shuttle/transport1 shuttle_area = /area/shuttle/transport1
@@ -213,7 +213,7 @@ AURORA_ESCAPE_POD(4)
base_area = /area/centcom/ferry base_area = /area/centcom/ferry
/obj/effect/shuttle_landmark/ccia/dock /obj/effect/shuttle_landmark/ccia/dock
name = "Agent Shuttle Dock" name = "Second Deck Starboard Dock 2"
landmark_tag = "nav_ccia_dock" landmark_tag = "nav_ccia_dock"
docking_controller = "centcom_shuttle_dock_airlock" docking_controller = "centcom_shuttle_dock_airlock"
landmark_flags = SLANDMARK_FLAG_AUTOSET landmark_flags = SLANDMARK_FLAG_AUTOSET
@@ -237,7 +237,7 @@ AURORA_ESCAPE_POD(4)
base_area = /area/centcom/specops base_area = /area/centcom/specops
/obj/effect/shuttle_landmark/ert/dock /obj/effect/shuttle_landmark/ert/dock
name = "ERT Dock" name = "Third Deck Port Dock 3"
landmark_tag = "nav_ert_dock" landmark_tag = "nav_ert_dock"
docking_controller = "specops_dock_airlock" docking_controller = "specops_dock_airlock"
special_dock_targets = list("Phoenix Shuttle" = "specops_shuttle_fore") special_dock_targets = list("Phoenix Shuttle" = "specops_shuttle_fore")
@@ -246,7 +246,7 @@ AURORA_ESCAPE_POD(4)
//-// Burglar Shuttle //-// //-// Burglar Shuttle //-//
/datum/shuttle/autodock/multi/antag/burglar_aurora /datum/shuttle/autodock/multi/antag/burglar_aurora
name = "Burglar Pod" name = "Water Bear"
current_location = "nav_burglar_start" current_location = "nav_burglar_start"
landmark_transition = "nav_burglar_interim" landmark_transition = "nav_burglar_interim"
dock_target = "burglar_shuttle" dock_target = "burglar_shuttle"
@@ -364,7 +364,7 @@ AURORA_ESCAPE_POD(4)
//-// Mercenary Shuttle //-// //-// Mercenary Shuttle //-//
/datum/shuttle/autodock/multi/antag/merc_aurora /datum/shuttle/autodock/multi/antag/merc_aurora
name = "Mercenary Shuttle" name = "ICV Raskolnikov"
current_location = "nav_merc_start" current_location = "nav_merc_start"
landmark_transition = "nav_merc_interim" landmark_transition = "nav_merc_interim"
dock_target = "merc_shuttle" dock_target = "merc_shuttle"
@@ -497,7 +497,7 @@ AURORA_ESCAPE_POD(4)
base_turf = /turf/space/transit/bluespace/west base_turf = /turf/space/transit/bluespace/west
/obj/effect/shuttle_landmark/legion/green /obj/effect/shuttle_landmark/legion/green
name = "Emergency Services Dock (Main Entrypoint)" name = "Third Deck Port Dock 1"
landmark_tag = "nav_legion_green" landmark_tag = "nav_legion_green"
docking_controller = "legion_shuttle_dock" docking_controller = "legion_shuttle_dock"
landmark_flags = SLANDMARK_FLAG_AUTOSET landmark_flags = SLANDMARK_FLAG_AUTOSET
@@ -589,7 +589,7 @@ AURORA_ESCAPE_POD(4)
landmark_flags = SLANDMARK_FLAG_AUTOSET landmark_flags = SLANDMARK_FLAG_AUTOSET
/obj/effect/shuttle_landmark/distress/blue /obj/effect/shuttle_landmark/distress/blue
name = "Blue Dock" name = "First Deck Port Hangar Bay 2b"
landmark_tag = "nav_distress_blue" landmark_tag = "nav_distress_blue"
docking_controller = "distress_shuttle_dock" docking_controller = "distress_shuttle_dock"
special_dock_targets = list("Distress Shuttle" = "distress_shuttle_fore") special_dock_targets = list("Distress Shuttle" = "distress_shuttle_fore")

View File

@@ -14901,7 +14901,7 @@
/obj/machinery/computer/shuttle_control{ /obj/machinery/computer/shuttle_control{
req_access = null; req_access = null;
req_one_access = list(38,72); req_one_access = list(38,72);
shuttle_tag = "Agent Shuttle" shuttle_tag = "SCC Shuttle"
}, },
/turf/simulated/floor/shuttle/dark_blue, /turf/simulated/floor/shuttle/dark_blue,
/area/shuttle/transport1) /area/shuttle/transport1)

View File

@@ -26,29 +26,47 @@
) )
initial_generic_waypoints = list( initial_generic_waypoints = list(
"nav_hangar_horizon_1", "nav_hangar_horizon_1",
"nav_hangar_horizon_2", "nav_hangar_horizon_2",
"nav_dock_horizon_1", "nav_dock_horizon_1",
"nav_dock_horizon_2", "nav_dock_horizon_2",
"nav_dock_horizon_3", "nav_dock_horizon_3",
"nav_dock_horizon_4", "nav_dock_horizon_4",
"deck_one_fore_of_horizon", "deck_one_fore_of_horizon",
"deck_one_starboard_side", "deck_one_starboard_side",
"deck_one_port_side", "deck_one_port_side",
"deck_one_aft_of_horizon", "deck_one_aft_of_horizon",
"deck_one_near_starboard_propulsion", "deck_one_near_starboard_propulsion",
"deck_one_near_port_propulsion", "deck_one_near_port_propulsion",
"deck_two_fore_of_horizon", "deck_two_fore_of_horizon",
"deck_two_starboard_fore", "deck_two_starboard_fore",
"deck_two_port_fore", "deck_two_port_fore",
"deck_two_aft_of_horizon", "deck_two_aft_of_horizon",
"deck_two_port_aft", "deck_two_port_aft",
"deck_two_starboard_aft", "deck_two_starboard_aft",
"deck_three_fore_of_horizon", "deck_three_fore_of_horizon",
"deck_three_fore_starboard_of_horizon", "deck_three_fore_starboard_of_horizon",
"deck_three_port_fore_of_horizon", "deck_three_port_fore_of_horizon",
"deck_three_aft_of_horizon", "deck_three_aft_of_horizon",
"deck_three_port_aft_of_horizon" "deck_three_port_aft_of_horizon"
)
tracked_dock_tags = list(
"nav_hangar_mining",
"nav_hangar_intrepid",
"nav_hangar_canary",
"nav_cargo_shuttle_dock",
"nav_hangar_horizon_1",
"nav_burglar_hangar",
"nav_hangar_horizon_2",
"nav_distress_blue",
"nav_merchant_dock",
"nav_ccia_dock",
"nav_merc_dock",
"nav_dock_horizon_1",
"nav_legion_green",
"nav_dock_horizon_4",
"nav_ert_dock"
) )
/obj/effect/overmap/visitable/ship/sccv_horizon/get_skybox_representation() /obj/effect/overmap/visitable/ship/sccv_horizon/get_skybox_representation()
@@ -170,40 +188,40 @@
circuit = null circuit = null
/obj/effect/shuttle_landmark/horizon/nav1 /obj/effect/shuttle_landmark/horizon/nav1
name = "Port Hangar Bay 1" name = "First Deck Port Hangar Bay 1a"
landmark_tag = "nav_hangar_horizon_1" landmark_tag = "nav_hangar_horizon_1"
base_turf = /turf/simulated/floor/plating base_turf = /turf/simulated/floor/plating
base_area = /area/hangar/auxiliary base_area = /area/hangar/auxiliary
/obj/effect/shuttle_landmark/horizon/nav2 /obj/effect/shuttle_landmark/horizon/nav2
name = "Port Hangar Bay 2" name = "First Deck Port Hangar Bay 2a"
landmark_tag = "nav_hangar_horizon_2" landmark_tag = "nav_hangar_horizon_2"
base_turf = /turf/simulated/floor/plating base_turf = /turf/simulated/floor/plating
base_area = /area/hangar/auxiliary base_area = /area/hangar/auxiliary
//external landmarks for overmap ships //external landmarks for overmap ships
/obj/effect/shuttle_landmark/horizon/dock1 /obj/effect/shuttle_landmark/horizon/dock1
name = "Starboard Primary Docking Arm" name = "Third Deck Starboard Dock 2"
landmark_tag = "nav_dock_horizon_1" landmark_tag = "nav_dock_horizon_1"
docking_controller = "dock_horizon_1_airlock" docking_controller = "dock_horizon_1_airlock"
base_turf = /turf/simulated/floor/reinforced/airless base_turf = /turf/simulated/floor/reinforced/airless
base_area = /area/space base_area = /area/space
/obj/effect/shuttle_landmark/horizon/dock2 //shares a spot with the TCFL ERT shuttle, but having multiple use cases is fine, ERTs are adminspawned only as well /obj/effect/shuttle_landmark/horizon/dock2 //shares a spot with the TCFL ERT shuttle, but having multiple use cases is fine, ERTs are adminspawned only as well
name = "Port Primary Docking Arm" name = "Third Deck Starboard Dock 2"
landmark_tag = "nav_dock_horizon_2" landmark_tag = "nav_dock_horizon_2"
base_turf = /turf/simulated/floor/reinforced/airless base_turf = /turf/simulated/floor/reinforced/airless
base_area = /area/space base_area = /area/space
/obj/effect/shuttle_landmark/horizon/dock3 /obj/effect/shuttle_landmark/horizon/dock3
name = "Starboard Primary Docking Arm-Fore" name = "Third Deck Starboard Dock 3"
landmark_tag = "nav_dock_horizon_3" landmark_tag = "nav_dock_horizon_3"
docking_controller = "dock_horizon_3_airlock" docking_controller = "dock_horizon_3_airlock"
base_turf = /turf/simulated/floor/reinforced/airless base_turf = /turf/simulated/floor/reinforced/airless
base_area = /area/space base_area = /area/space
/obj/effect/shuttle_landmark/horizon/dock4 /obj/effect/shuttle_landmark/horizon/dock4
name = "Port Primary Docking Arm-Fore" name = "Third Deck Port Dock 2"
landmark_tag = "nav_dock_horizon_4" landmark_tag = "nav_dock_horizon_4"
docking_controller = "dock_horizon_4_airlock" docking_controller = "dock_horizon_4_airlock"
base_turf = /turf/simulated/floor/reinforced/airless base_turf = /turf/simulated/floor/reinforced/airless

View File

@@ -1,7 +1,7 @@
//-// Burglar Shuttle //-// //-// Burglar Shuttle //-//
/datum/shuttle/autodock/multi/antag/burglar_ship /datum/shuttle/autodock/multi/antag/burglar_ship
name = "Burglar Pod" name = "Water Bear"
current_location = "nav_burglar_start" current_location = "nav_burglar_start"
landmark_transition = "nav_burglar_interim" landmark_transition = "nav_burglar_interim"
dock_target = "burglar_shuttle" dock_target = "burglar_shuttle"
@@ -32,7 +32,7 @@
base_turf = /turf/space/transit/north base_turf = /turf/space/transit/north
/obj/effect/shuttle_landmark/burglar_ship/hangar /obj/effect/shuttle_landmark/burglar_ship/hangar
name = "Port Hangar" name = "First Deck Port Hangar Bay 1b"
landmark_tag = "nav_burglar_hangar" landmark_tag = "nav_burglar_hangar"
landmark_flags = SLANDMARK_FLAG_AUTOSET landmark_flags = SLANDMARK_FLAG_AUTOSET
@@ -99,7 +99,7 @@
//-// Mercenary Shuttle //-// //-// Mercenary Shuttle //-//
/datum/shuttle/autodock/multi/antag/merc_ship /datum/shuttle/autodock/multi/antag/merc_ship
name = "Mercenary Shuttle" name = "ICV Raskolnikov"
current_location = "nav_merc_start" current_location = "nav_merc_start"
landmark_transition = "nav_merc_interim" landmark_transition = "nav_merc_interim"
dock_target = "merc_shuttle" dock_target = "merc_shuttle"
@@ -132,7 +132,7 @@
base_turf = /turf/space/transit/north base_turf = /turf/space/transit/north
/obj/effect/shuttle_landmark/merc_ship/dock /obj/effect/shuttle_landmark/merc_ship/dock
name = "Third Deck Dock" name = "Third Deck Starboard Dock 1"
landmark_tag = "nav_merc_dock" landmark_tag = "nav_merc_dock"
docking_controller = "nuke_shuttle_dock_airlock" docking_controller = "nuke_shuttle_dock_airlock"
landmark_flags = SLANDMARK_FLAG_AUTOSET landmark_flags = SLANDMARK_FLAG_AUTOSET
@@ -165,7 +165,7 @@
logging_home_tag = "nav_hangar_intrepid" logging_home_tag = "nav_hangar_intrepid"
/obj/effect/shuttle_landmark/intrepid/hangar /obj/effect/shuttle_landmark/intrepid/hangar
name = "Intrepid Hangar" name = "First Deck Intrepid Hangar Bay"
landmark_tag = "nav_hangar_intrepid" landmark_tag = "nav_hangar_intrepid"
docking_controller = "intrepid_dock" docking_controller = "intrepid_dock"
base_area = /area/hangar/intrepid base_area = /area/hangar/intrepid
@@ -189,7 +189,7 @@
logging_home_tag = "nav_hangar_canary" logging_home_tag = "nav_hangar_canary"
/obj/effect/shuttle_landmark/canary/hangar /obj/effect/shuttle_landmark/canary/hangar
name = "Canary Hangar" name = "First Deck Canary Hangar Bay"
landmark_tag = "nav_hangar_canary" landmark_tag = "nav_hangar_canary"
docking_controller = "canary_dock" docking_controller = "canary_dock"
base_area = /area/hangar/canary base_area = /area/hangar/canary
@@ -213,7 +213,7 @@
logging_home_tag = "nav_hangar_mining" logging_home_tag = "nav_hangar_mining"
/obj/effect/shuttle_landmark/mining/hangar /obj/effect/shuttle_landmark/mining/hangar
name = "Mining Shuttle Hangar" name = "First Deck Spark Hangar Bay"
landmark_tag = "nav_hangar_mining" landmark_tag = "nav_hangar_mining"
docking_controller = "mining_shuttle_dock" docking_controller = "mining_shuttle_dock"
base_turf = /turf/simulated/floor/airless base_turf = /turf/simulated/floor/airless
@@ -226,7 +226,7 @@
// Cargo Shuttle // Cargo Shuttle
/datum/shuttle/autodock/ferry/supply/horizon /datum/shuttle/autodock/ferry/supply/horizon
name = "Horizon Cargo Shuttle" name = "OX Supply Shuttle"
location = 1 location = 1
shuttle_area = /area/supply/dock shuttle_area = /area/supply/dock
dock_target = "cargo_shuttle" dock_target = "cargo_shuttle"
@@ -240,7 +240,7 @@
base_area = /area/centcom base_area = /area/centcom
/obj/effect/shuttle_landmark/supply/horizon/dock /obj/effect/shuttle_landmark/supply/horizon/dock
name = "Horizon Cargo Shuttle Dock" name = "First Deck Supply Shuttle Hangar Bay"
landmark_tag = "nav_cargo_shuttle_dock" landmark_tag = "nav_cargo_shuttle_dock"
docking_controller = "cargo_shuttle_dock" docking_controller = "cargo_shuttle_dock"
landmark_flags = SLANDMARK_FLAG_AUTOSET landmark_flags = SLANDMARK_FLAG_AUTOSET

View File

@@ -22365,8 +22365,7 @@
/area/hangar/intrepid) /area/hangar/intrepid)
"pMP" = ( "pMP" = (
/obj/effect/shuttle_landmark/distress/blue{ /obj/effect/shuttle_landmark/distress/blue{
base_turf = /turf/simulated/floor/plating; base_turf = /turf/simulated/floor/plating
name = "Port Hangar"
}, },
/turf/simulated/floor/plating, /turf/simulated/floor/plating,
/area/hangar/auxiliary) /area/hangar/auxiliary)

View File

@@ -9676,7 +9676,8 @@
dir = 4; dir = 4;
req_access = null; req_access = null;
req_one_access = list(38,72); req_one_access = list(38,72);
shuttle_tag = "Agent Shuttle" shuttle_tag = "SCC Shuttle";
can_rename_ship = 1
}, },
/turf/simulated/floor/shuttle/dark_blue, /turf/simulated/floor/shuttle/dark_blue,
/area/shuttle/transport1) /area/shuttle/transport1)

View File

@@ -3,6 +3,12 @@
<div class="item"> <div class="item">
{{:data.shuttle_status}} {{:data.shuttle_status}}
</div> </div>
<div class="item">
Ship designation and name: {{:data.ship_name}}
{{if data.can_rename_ship}}
{{:helper.link('Rename', null, {'rename' : '1'}, null , null)}}
{{/if}}
</div>
</div> </div>
<div class="item" style="padding-top: 10px"> <div class="item" style="padding-top: 10px">
<div class="item"> <div class="item">
@@ -63,4 +69,4 @@
{{:helper.link('Force Launch', 'alert', {'force' : '1'}, data.can_force? null : 'disabled' , data.can_force ? 'redButton' : null)}} {{:helper.link('Force Launch', 'alert', {'force' : '1'}, data.can_force? null : 'disabled' , data.can_force ? 'redButton' : null)}}
</div> </div>
</div> </div>
</div> </div>

View File

@@ -3,6 +3,12 @@
<div class="item"> <div class="item">
{{:data.shuttle_status}} {{:data.shuttle_status}}
</div> </div>
<div class="item">
Ship designation and name: {{:data.ship_name}}
{{if data.can_rename_ship}}
{{:helper.link('Rename', null, {'rename' : '1'}, null , null)}}
{{/if}}
</div>
<div class="item"> <div class="item">
Cloaking field is {{:data.cloaked ? "enabled" : "disabled" }}. {{:helper.link('Toggle', 'arrowreturn-1-s', {'toggle_cloaked' : '1'}) }} Cloaking field is {{:data.cloaked ? "enabled" : "disabled" }}. {{:helper.link('Toggle', 'arrowreturn-1-s', {'toggle_cloaked' : '1'}) }}
</div> </div>
@@ -73,4 +79,4 @@
{{:helper.link('Force Launch', 'alert', {'force' : '1'}, data.can_force ? null : 'disabled' , data.can_force ? 'redButton' : null)}} {{:helper.link('Force Launch', 'alert', {'force' : '1'}, data.can_force ? null : 'disabled' , data.can_force ? 'redButton' : null)}}
</div> </div>
</div> </div>
</div> </div>

View File

@@ -3,6 +3,12 @@
<div class="item"> <div class="item">
{{:data.shuttle_status}} {{:data.shuttle_status}}
</div> </div>
<div class="item">
Ship designation and name: {{:data.ship_name}}
{{if data.can_rename_ship}}
{{:helper.link('Rename', null, {'rename' : '1'}, null , null)}}
{{/if}}
</div>
</div> </div>
<div class="item" style="padding-top: 10px"> <div class="item" style="padding-top: 10px">
<div class="item"> <div class="item">
@@ -70,4 +76,4 @@
{{:helper.link('Force Launch', 'alert', {'force' : '1'}, data.can_force ? null : 'disabled' , data.can_force ? 'redButton' : null)}} {{:helper.link('Force Launch', 'alert', {'force' : '1'}, data.can_force ? null : 'disabled' , data.can_force ? 'redButton' : null)}}
</div> </div>
</div> </div>
</div> </div>

View File

@@ -0,0 +1,60 @@
import { useBackend } from '../backend';
import { Section, Table } from '../components';
import { NtosWindow } from '../layouts';
export type DocksData = {
docks: Dock[];
};
type Dock = {
name: string;
shuttle: string;
};
let sortByNameFn = function (a: Dock, b: Dock): number {
if (a.name < b.name) {
return -1;
}
if (a.name > b.name) {
return 1;
}
return 0;
};
export const Docks = (props, context) => {
const { act, data } = useBackend<DocksData>(context);
const full_docks = data.docks
.filter((d: Dock) => !!d.shuttle)
.sort(sortByNameFn);
const empty_docks = data.docks
.filter((d: Dock) => !d.shuttle)
.sort(sortByNameFn);
return (
<NtosWindow resizable>
<NtosWindow.Content scrollable>
<Section title="Docking Ports Management Program">
<Table>
<Table.Row header>
<Table.Cell>Port/Hangar</Table.Cell>
<Table.Cell>Docked Craft</Table.Cell>
</Table.Row>
<Table.Row />
{full_docks.map((dock) => (
<Table.Row key={dock.name}>
<Table.Cell>{dock.name}</Table.Cell>
<Table.Cell>{dock.shuttle}</Table.Cell>
</Table.Row>
))}
{empty_docks.map((dock) => (
<Table.Row key={dock.name} color="gray">
<Table.Cell>{dock.name}</Table.Cell>
<Table.Cell>{dock.shuttle}</Table.Cell>
</Table.Row>
))}
</Table>
</Section>
</NtosWindow.Content>
</NtosWindow>
);
};