diff --git a/code/modules/overmap/_overmap_datum.dm b/code/modules/overmap/_overmap_datum.dm index 50bc2b331130..7b36a2b27620 100644 --- a/code/modules/overmap/_overmap_datum.dm +++ b/code/modules/overmap/_overmap_datum.dm @@ -29,6 +29,7 @@ /// The total lists of interactions vessels can do with this object. If nothing, then vessels are unable to interact with this object. var/list/interaction_options + var/list/interaction_hail /// The time, in deciseconds, needed for this object to call var/dock_time @@ -342,6 +343,20 @@ var/choice = tgui_input_list(usr, "What would you like to do at [interact_target]?", "Interact", possible_interactions, timeout = 10 SECONDS) return do_interaction_with(user, interact_target, choice) + +/datum/overmap/proc/show_hail_menu(mob/living/user, datum/overmap/interact_target) + if(!user) + return + if(!istype(interact_target)) + CRASH("Overmap datum [src] tried to interact with an invalid overmap datum. What?") + + var/list/possible_interactions = interact_target.get_hail(user, src) + + if(!possible_interactions) + return "There is nothing of interest at [interact_target]." + + return do_hail(user, interact_target) + /** * This handles the selection of an interaction * @@ -369,8 +384,6 @@ if(docked_to || docking) return "ERROR: Unable to do this currently! Undock first!" return Dock(interact_target) - if(INTERACTION_OVERMAP_HAIL) - return do_hail(user, interact_target) if(INTERACTION_OVERMAP_INTERDICTION) if(docked_to || docking) return "ERROR: Unable to do this currently! Reduce speed or undock!" @@ -447,6 +460,8 @@ /datum/overmap/proc/get_interactions(mob/living/user, datum/overmap/requesting_interactor) return interaction_options +/datum/overmap/proc/get_hail(mob/living/user, datum/overmap/requesting_interactor) + return interaction_hail /** * Gets all the available interaction options. * diff --git a/code/modules/overmap/helm.dm b/code/modules/overmap/helm.dm index 97dd2553586e..fd8df8dfe45f 100644 --- a/code/modules/overmap/helm.dm +++ b/code/modules/overmap/helm.dm @@ -385,6 +385,12 @@ return current_ship.SendSos(name = "[current_ship.name]", x = "[current_ship.x || current_ship.docked_to.x]", y = "[current_ship.y || current_ship.docked_to.y]") return + if("hail") + var/datum/overmap/to_hail = locate(params["ship_to_act"]) in current_ship.get_nearby_overmap_objects(include_docked = TRUE, empty_if_src_docked = FALSE) + var/feedback_text = current_ship.show_hail_menu(usr, to_hail) + if(feedback_text) + say(feedback_text) + return // [/Celadon-ADD] if("act_overmap") if(SSshuttle.jump_mode > BS_JUMP_CALLED) diff --git a/code/modules/overmap/ships/controlled_ship_datum.dm b/code/modules/overmap/ships/controlled_ship_datum.dm index afc11e4feb09..5668151d2b1b 100644 --- a/code/modules/overmap/ships/controlled_ship_datum.dm +++ b/code/modules/overmap/ships/controlled_ship_datum.dm @@ -8,7 +8,8 @@ /datum/overmap/ship/controlled token_type = /obj/overmap/rendered dock_time = 10 SECONDS - interaction_options = list(INTERACTION_OVERMAP_DOCK, INTERACTION_OVERMAP_QUICKDOCK, INTERACTION_OVERMAP_HAIL, INTERACTION_OVERMAP_INTERDICTION) + interaction_options = list(INTERACTION_OVERMAP_DOCK, INTERACTION_OVERMAP_QUICKDOCK, INTERACTION_OVERMAP_INTERDICTION) + interaction_hail = list(INTERACTION_OVERMAP_HAIL) // [CELADON-ADD] - OVERMAP SENSORS var/default_sensor_range = 4 diff --git a/tgui/packages/tgui/interfaces/HelmConsole.js b/tgui/packages/tgui/interfaces/HelmConsole.js index a8f540099916..e3595f662465 100644 --- a/tgui/packages/tgui/interfaces/HelmConsole.js +++ b/tgui/packages/tgui/interfaces/HelmConsole.js @@ -1,3 +1,7 @@ +/** + * @changes 2026 KOCMOHABT (https://github.com/CeladonSS13/Shiptest/pull/2647) + * @TDLR From anything changes, see History in GIT and PR. + */ import { useBackend } from '../backend'; import { Button, @@ -10,6 +14,8 @@ import { LabeledControls, NumberInput, Divider, + Stack, + NoticeBox, } from '../components'; import { Window } from '../layouts'; import { Table } from '../components/Table'; @@ -19,92 +25,44 @@ export const HelmConsole = (_props, context) => { const { data } = useBackend(context); const { mapRef, isViewer } = data; return ( - -
- - {!isViewer && } - - - -
-
-
- {!!data.docked && ( -
Ship docked to: {data.docked}
- )} -
- -
+ + + + + {!!data.docked && ( + Ship docked to: {data.docked} + )} + {!isViewer && } + + + + + + + {!!data.docked && ( + Ship docked to: {data.docked} + )} + + + + ); }; const SharedContent = (_props, context) => { const { act, data } = useBackend(context); - const { isViewer, canRename, shipInfo = [], otherInfo = [] } = data; + const { isViewer, canRename, shipInfo = [], otherInfo = [], arpa_ships = [], calibrating } = data; + let flyable = !data.docking && !data.docked; return ( <> -
- - - Name - {!isViewer && Act} - {!isViewer && Dock} - - {otherInfo.map((ship) => ( - - {ship.name} - {!isViewer && ( - -
-
{ disabled={isViewer} onClick={() => act('reload_ship')} /> -
+
+
+
+ {arpa_ships.map((ship) => ( + + {ship.name} + + ))} +
); }; @@ -194,7 +251,6 @@ const ShipContent = (_props, context) => { eta, x, y, - arpa_ships = [], } = data; return ( <> @@ -240,17 +296,6 @@ const ShipContent = (_props, context) => { -
- {arpa_ships.map((ship) => ( - - {ship.name} - - ))} - -
{ const ShipControlContent = (_props, context) => { const { act, data } = useBackend(context); const { - calibrating, aiControls, aiUser, burnDirection, @@ -368,9 +412,11 @@ const ShipControlContent = (_props, context) => { tooltip="Undock" tooltipPosition="left" icon="sign-out-alt" - // [CELADON-EDIT] - subshuttles fix - disabled={!data.docked || data.docking || data.motheroutpost != null} - // [/CELADON-EDIT] - subshuttles fix + // [CELADON-EDIT] - subshuttles fix + disabled={ + !data.docked || data.docking || data.motheroutpost != null + } + // [/CELADON-EDIT] - subshuttles fix onClick={() => act('undock')} />