Files
Aurora.3/code/modules/overmap/ships/identification.dm
T
BatrachophrenoandGitHub ba1a757909 Wires interface must require panel to be open (#20764)
https://github.com/Aurorastation/Aurora.3/issues/18299

Original bug report was for Air Alarms always displaying their wiring
interface when interacted with, even when the maintenance panel was
still closed.

I found a few other objects which also did not correctly check if wires
were accessible before displaying the interface.

There also remains some inconsistency: some objects will always display
the wire interface when clicked on with panel open, but others require
you to have certain tools in hand too (wirecutter, multitool, etc.).
Without them in-hand, they won't give you the wire UI. I'm indifferent
to which option is better, but it should be made consistent. If someone
feels at all strongly about having tools in-hand vs. not to see the
interface, then I can also make that change with whatever the prevailing
opinion is.
2025-06-01 10:54:51 +00:00

85 lines
2.3 KiB
Plaintext

/obj/machinery/iff_beacon
name = "IFF transponder" //This object handles ship identification on sensors.
desc = "A complex set of various bluespace and subspace arrays that transmit a ship's identification tags."
icon = 'icons/obj/machinery/iff_transponder.dmi'
icon_state = "iff"
anchored = TRUE
idle_power_usage = 500
component_types = list(
/obj/item/circuitboard/iff_beacon,
/obj/item/stack/cable_coil = 2,
/obj/item/stock_parts/subspace/transmitter,
/obj/item/stock_parts/capacitor
)
var/datum/wires/iff/wires
var/disabled = FALSE
var/obfuscating = FALSE
var/can_change_class = TRUE
var/can_change_name = TRUE
/obj/machinery/iff_beacon/Initialize()
..()
wires = new(src)
return INITIALIZE_HINT_LATELOAD
/obj/machinery/iff_beacon/LateInitialize()
if(SSatlas.current_map.use_overmap && !linked)
var/my_sector = GLOB.map_sectors["[z]"]
if (istype(my_sector, /obj/effect/overmap/visitable))
attempt_hook_up(my_sector)
/obj/machinery/iff_beacon/attackby(obj/item/attacking_item, mob/user)
if(default_deconstruction_screwdriver(user, attacking_item))
return TRUE
if(default_deconstruction_crowbar(user, attacking_item))
return TRUE
if(default_part_replacement(user, attacking_item))
return TRUE
if(panel_open)
wires.interact(user)
return TRUE
..()
/obj/machinery/iff_beacon/proc/toggle()
if(disabled)
return // No turning on if broken.
if(!use_power) //need some juice to kickstart
use_power_oneoff(idle_power_usage*5)
update_use_power(!use_power)
if(use_power) //We are online now. Back to displaying real name.
linked.update_obfuscated(FALSE)
obfuscating = FALSE
else
linked.update_obfuscated(TRUE)
obfuscating = TRUE
/obj/machinery/iff_beacon/proc/disable()
update_use_power(POWER_USE_OFF)
obfuscating = TRUE
disabled = TRUE
linked.update_obfuscated(TRUE)
/obj/machinery/iff_beacon/proc/enable()
disabled = FALSE
toggle()
/obj/machinery/iff_beacon/update_icon()
icon_state = initial(icon_state)
ClearOverlays()
if(panel_open)
icon_state += "_o"
if(!operable() || !use_power)
icon_state += "_off"
/obj/machinery/iff_beacon/horizon
can_change_class = FALSE
can_change_name = FALSE
/obj/machinery/iff_beacon/horizon/shuttle
icon = 'icons/obj/spaceship/scc/helm_pieces.dmi'
icon_state = "iff"
/obj/machinery/iff_beacon/name_change
can_change_name = TRUE
can_change_class = FALSE