mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-24 21:40:55 +01:00
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.
85 lines
2.3 KiB
Plaintext
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
|