Files
Bubberstation/code/game/objects/items/devices/beacon.dm
SkyratBot 63aaa8d630 [MIRROR] Add hotkey and screentip to tracking beacons [MDB IGNORE] (#25528)
* Add hotkey and screentip to tracking beacons (#80142)

## About The Pull Request

Adds RMB to toggle a tracking beacon on/off. Also adds this as a
screentip UI indicator.

## Why It's Good For The Game

Adds a simple interaction so people don't have to pick up things.

## Changelog

🆑
qol: Add RMB hotkey and screentip UI to tracking beacons to toggle them
on/off.
/🆑

* Add hotkey and screentip to tracking beacons

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
2023-12-09 20:08:58 -05:00

61 lines
1.6 KiB
Plaintext

/obj/item/beacon
name = "\improper tracking beacon"
desc = "A beacon used by a teleporter."
icon = 'icons/obj/devices/tracker.dmi'
icon_state = "beacon"
inhand_icon_state = "beacon"
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
var/enabled = TRUE
var/renamed = FALSE
/obj/item/beacon/Initialize(mapload)
. = ..()
if (enabled)
GLOB.teleportbeacons += src
else
icon_state = "beacon-off"
register_context()
/obj/item/beacon/Destroy()
GLOB.teleportbeacons -= src
return ..()
/obj/item/beacon/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
if(isnull(held_item))
context[SCREENTIP_CONTEXT_RMB] = "Toggle beacon"
return CONTEXTUAL_SCREENTIP_SET
return NONE
/obj/item/beacon/proc/turn_off()
icon_state = "beacon-off"
GLOB.teleportbeacons -= src
SEND_SIGNAL(src, COMSIG_BEACON_DISABLED)
/obj/item/beacon/attack_self(mob/user)
enabled = !enabled
if (enabled)
icon_state = "beacon"
GLOB.teleportbeacons += src
else
turn_off()
to_chat(user, span_notice("You [enabled ? "enable" : "disable"] the beacon."))
return
/obj/item/beacon/attack_hand_secondary(mob/user, list/modifiers)
attack_self(user)
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
/obj/item/beacon/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/pen)) // needed for things that use custom names like the locator
var/new_name = tgui_input_text(user, "What would you like the name to be?", "Beacon", max_length = MAX_NAME_LEN)
if(!user.can_perform_action(src))
return
if(new_name)
name = new_name
renamed = TRUE
return
else
return ..()