feat: exodrone console UI (#93604)

Upgrades the UI of the exodrone console
Exodrones now create a small explosion (0, 0, 1, 1) when
self-destruction is triggered
This commit is contained in:
mcbalaam
2025-10-26 01:45:58 +07:00
committed by GitHub
parent b3f204099b
commit 86a98efa77
4 changed files with 239 additions and 181 deletions
@@ -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)
+7 -2
View File
@@ -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)
@@ -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