diff --git a/code/modules/explorer_drone/control_console.dm b/code/modules/explorer_drone/control_console.dm index 78451dd71a1..21c64757bc1 100644 --- a/code/modules/explorer_drone/control_console.dm +++ b/code/modules/explorer_drone/control_console.dm @@ -23,16 +23,18 @@ RegisterSignal(controlled_drone,COMSIG_QDELETING, PROC_REF(drone_destroyed)) RegisterSignal(controlled_drone,COMSIG_EXODRONE_STATUS_CHANGED, PROC_REF(on_exodrone_status_changed)) update_icon() + playsound(src, 'sound/machines/terminal/terminal_on.ogg', 20, vary = TRUE) /obj/machinery/computer/exodrone_control_console/proc/on_exodrone_status_changed() SIGNAL_HANDLER //Notify we need human action and switch screeb icon to alert. - playsound(src,'sound/machines/ping.ogg',30,FALSE) + playsound(src, 'sound/machines/terminal/terminal_processing.ogg', 20, vary = TRUE) update_icon() /obj/machinery/computer/exodrone_control_console/proc/drone_destroyed() SIGNAL_HANDLER signal_lost = TRUE + playsound(src, 'sound/machines/terminal/terminal_alert.ogg', 20, vary = TRUE) end_drone_control() /obj/machinery/computer/exodrone_control_console/proc/end_drone_control() @@ -41,6 +43,7 @@ UnregisterSignal(controlled_drone,list(COMSIG_QDELETING,COMSIG_EXODRONE_STATUS_CHANGED)) controlled_drone = null update_icon() + playsound(src, 'sound/machines/terminal/terminal_off.ogg', 20, vary = TRUE) /obj/machinery/computer/exodrone_control_console/Destroy() . = ..() @@ -114,7 +117,7 @@ signal_lost = FALSE return TRUE if("self_destruct") - qdel(controlled_drone) //var will be nulled in signal response + controlled_drone.handle_deconstruct() return TRUE if("add_tool") if(controlled_drone && controlled_drone.drone_status == EXODRONE_IDLE) diff --git a/code/modules/explorer_drone/exodrone.dm b/code/modules/explorer_drone/exodrone.dm index e0b1aec07b2..08fc0ae9142 100644 --- a/code/modules/explorer_drone/exodrone.dm +++ b/code/modules/explorer_drone/exodrone.dm @@ -76,9 +76,14 @@ GLOBAL_LIST_EMPTY(exodrone_launchers) // Cargo storage create_storage(max_slots = EXODRONE_CARGO_SLOTS, canthold = GLOB.blacklisted_cargo_types) -/obj/item/exodrone/Destroy() +/obj/item/exodrone/handle_deconstruct(disassembled) . = ..() + explosion(src, 0, 0, 1, 1) + do_sparks(5, FALSE, src) + +/obj/item/exodrone/Destroy() GLOB.exodrones -= src + . = ..() /// Description for drone listing, describes location and current status /obj/item/exodrone/proc/ui_description() @@ -337,7 +342,7 @@ GLOBAL_LIST_EMPTY(exodrone_launchers) /obj/item/exodrone/proc/drone_log(message) if(length(drone_log) > EXODRONE_LOG_SIZE) - drone_log = list() + drone_log.Remove() drone_log.Insert(1,message) /obj/item/exodrone/proc/has_tool(tool_type) diff --git a/code/modules/explorer_drone/scanner_array.dm b/code/modules/explorer_drone/scanner_array.dm index 7588eae233a..237c3aee606 100644 --- a/code/modules/explorer_drone/scanner_array.dm +++ b/code/modules/explorer_drone/scanner_array.dm @@ -175,6 +175,7 @@ GLOBAL_LIST_INIT(scan_conditions,init_scan_conditions()) var/datum/exoscan/scan = GLOB.exoscanner_controller.create_scan(scan_type,target) if(scan) RegisterSignal(scan, COMSIG_EXOSCAN_INTERRUPTED, PROC_REF(scan_failed)) + playsound(src, 'sound/machines/terminal/terminal_processing.ogg', 20, vary = TRUE) /obj/machinery/computer/exoscanner_control/proc/scan_failed() SIGNAL_HANDLER diff --git a/tgui/packages/tgui/interfaces/ExodroneConsole.tsx b/tgui/packages/tgui/interfaces/ExodroneConsole.tsx index b7caeeb4773..8b819187d1d 100644 --- a/tgui/packages/tgui/interfaces/ExodroneConsole.tsx +++ b/tgui/packages/tgui/interfaces/ExodroneConsole.tsx @@ -18,6 +18,7 @@ import { ProgressBar, Section, Stack, + Tooltip, } from 'tgui-core/components'; import { formatTime } from 'tgui-core/format'; import { capitalize } from 'tgui-core/string'; @@ -215,11 +216,7 @@ const SignalLostModal = (props) => { - @@ -279,39 +276,52 @@ const ToolSelectionModal = (props) => { const toolData = Object.keys(all_tools); return ( - - - Select Tool: - - - {(!!toolData && - toolData.map((tool_name) => ( - - - - ))) || ( - - + +
{ + setChoosingTools(false); + }} + /> + } + > + + {(!!toolData && + toolData.map((tool_name) => ( + + + + {' '} + + + )} + +
); }; @@ -325,32 +335,33 @@ const EquipmentBox = (props: { cargo: CargoData; drone: DroneData }) => { switch (cargo.type) { case 'tool': // Tool icon+Remove button if configurable return ( - + + + + - + {capitalize(cargo.name)} + {!!configurable && ( - + - - - { -
+
setChoosingTools(true)} + /> + ) + } + > - {!!configurable && ( - - )} - - - + {cargo.map((cargo_element, index) => ( { ); }; -const DroneStatus = (props: { - drone_integrity: number; - drone_max_integrity: number; -}) => { - const { drone_integrity, drone_max_integrity } = props; - - return ( - - - Integrity: - - - - - - ); -}; - const NoSiteDimmer = () => { return ( @@ -560,12 +618,7 @@ const TravelTargetSelectionScreen = (props: { Cancel )} - - - + } > @@ -582,8 +635,9 @@ const TravelTargetSelectionScreen = (props: { ml={1} onClick={() => travel_to(null)} disabled={!can_travel} + icon={can_travel ? 'rocket' : 'triangle-exclamation'} > - {can_travel ? 'Launch!' : travel_error} + {can_travel ? 'Launch' : travel_error} } @@ -600,8 +654,9 @@ const TravelTargetSelectionScreen = (props: { ml={1} onClick={() => travel_to(destination.ref)} disabled={!can_travel} + icon={can_travel ? 'rocket' : 'triangle-exclamation'} > - {can_travel ? 'Launch!' : travel_error} + {can_travel ? 'Launch' : travel_error} } @@ -681,16 +736,7 @@ const ExplorationScreen = (props: { drone: DroneExploration & DroneData }) => { ); } return ( -
- } - > +
@@ -704,11 +750,21 @@ const ExplorationScreen = (props: { drone: DroneExploration & DroneData }) => { - + {site.events.map((e) => ( +
@@ -728,16 +791,7 @@ const EventScreen = (props: { drone: DroneData; event: FullEventData }) => { const { drone, event } = props; return ( -
- } - > +
@@ -749,7 +803,9 @@ const EventScreen = (props: { drone: DroneData; event: FullEventData }) => { /> -
{event.description}
+
+ {event.description} +
@@ -791,18 +847,7 @@ export const AdventureScreen = (props: { const rawData = adventure_data.raw_image; const imgSource = rawData ? rawData : resolveAsset(adventure_data.image); return ( -
- ) - } - > +
@@ -882,21 +927,25 @@ const ExodroneConsoleContent = (props) => { - + + + + + +
+ + {drone_log.map((log_line, ix) => ( + + {log_line} + + ))} + +
+
+
- -
- - {drone_log.map((log_line, ix) => ( - - {log_line} - - ))} - -
-
); };