Files
Bubberstation/code/modules/shuttle/spaceship_navigation_beacon.dm
SkyratBot 7c0d50e65d [MIRROR] Alien nests and some other stuf can be hit again. [MDB IGNORE] (#25736)
* Alien nests and some other stuf can be hit again. (#80418)

## About The Pull Request
Another small issue fixed. Thanks Melbert for telling us what's wrong
with it.

EDIT: other objects were rendered unhittable by that flags refactor PR.

## Why It's Good For The Game
Fixes #80311. I made the xmas tree indestructible because the comment to
the `NO_DECONSTRUCTION` flag didn't make a load of sense since that
doesn't stop it from getting destroyed anyway.

## Changelog

🆑 MrMelbert, Ghommie
fix: Alien nests, and some other stuff, can be physically attacked
again.
balance: x-mas trees (the ones with presents), are indestructibles.
Truly protected by a yuletide spirit.
/🆑

* Alien nests and some other stuf can be hit again.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-12-19 18:35:19 -05:00

110 lines
3.9 KiB
Plaintext

/obj/machinery/spaceship_navigation_beacon
name = "radio navigation gigabeacon"
desc = "A device that constantly transmits its position over several different commonly used maritime navigation frequencies. Used to create shuttle navigation waypoints in unexplored or undeveloped areas."
icon = 'icons/obj/machines/navigation_beacon.dmi'
icon_state = "beacon_active"
base_icon_state = "beacon"
density = TRUE
obj_flags = /obj::obj_flags | NO_DECONSTRUCTION
/// Locked beacons cannot be jumped to by ships.
var/locked = FALSE
/// Time between automated messages.
var/automatic_message_cooldown = 5 MINUTES
/// Next world tick to send an automatic message.
var/next_automatic_message_time
/// Our internal radio.
var/obj/item/radio/radio
/obj/machinery/spaceship_navigation_beacon/Initialize(mapload)
. = ..()
SSshuttle.beacon_list |= src
name = "[initial(src.name)] [z]-[rand(0, 999)]"
var/static/list/multitool_tips = list(
TOOL_MULTITOOL = list(
SCREENTIP_CONTEXT_LMB = "Edit beacon name",
SCREENTIP_CONTEXT_RMB = "Lock/Unlock beacon",
)
)
AddElement(/datum/element/contextual_screentip_tools, multitool_tips)
radio = new(src)
radio.set_listening(FALSE)
radio.set_frequency(FREQ_RADIO_NAV_BEACON)
radio.freqlock = RADIO_FREQENCY_LOCKED
radio.recalculateChannels()
START_PROCESSING(SSmachines, src)
COOLDOWN_START(src, next_automatic_message_time, automatic_message_cooldown)
/obj/machinery/spaceship_navigation_beacon/emp_act()
locked = TRUE
update_icon_state()
/obj/machinery/spaceship_navigation_beacon/Destroy()
SSshuttle.beacon_list -= src
return ..()
/obj/machinery/spaceship_navigation_beacon/update_icon_state()
icon_state = "[base_icon_state][locked ? "_locked" : "_active"]"
return ..()
/obj/machinery/spaceship_navigation_beacon/multitool_act(mob/living/user, obj/item/tool)
..()
var/chosen_tag = tgui_input_text(user, "Enter the custom name for this beacon", "Beacon Reclassification", max_length = MAX_NAME_LEN)
if(!chosen_tag)
return
var/new_name = "[initial(src.name)] [chosen_tag]"
if(new_name && Adjacent(user))
name = new_name
balloon_alert_to_viewers("beacon renamed")
return TRUE
/obj/machinery/spaceship_navigation_beacon/multitool_act_secondary(mob/living/user, obj/item/tool)
..()
locked = !locked
balloon_alert_to_viewers("[!locked ? "unlocked" : "locked"]")
update_icon_state()
return TRUE
/obj/machinery/spaceship_navigation_beacon/examine()
.=..()
. += span_notice("'[FREQ_RADIO_NAV_BEACON / 10] kHz' is printed on the side.")
if(locked)
. += span_warning("The blinking red light on the front indicates that this beacon is LOCKED.")
else
. += span_notice("The blinking green light on the front indicates that this beacon is operating normally.")
/obj/machinery/spaceship_navigation_beacon/process(seconds_per_tick)
if(COOLDOWN_FINISHED(src, next_automatic_message_time) && radio)
var/automatic_nav_message = "[src], Sector [z], [locked ? "Beacon Locked" : "Beacon Operational"], Grid Coordinates, [x] East, [y] North."
radio.talk_into(src, "[automatic_nav_message]")
COOLDOWN_START(src, next_automatic_message_time, automatic_message_cooldown)
// Item used to actually make nav beacons
/obj/item/folded_navigation_gigabeacon
name = "compact radio navigation gigabeacon"
desc = "A compact radio navigation gigabeacon, a device used to provide shuttle navigation waypoints in unexplored areas. Must be deployed before use."
icon = 'icons/obj/machines/navigation_beacon.dmi'
icon_state = "beacon_folded"
/obj/item/folded_navigation_gigabeacon/Initialize(mapload)
. = ..()
AddComponent(/datum/component/deployable, 3 SECONDS, /obj/machinery/spaceship_navigation_beacon)
/obj/item/folded_navigation_gigabeacon/examine()
.=..()
. += span_notice("The backside has instructions in various galactic languages detailing how this can be deployed <b>in hand</b> without any special tools.")
. += span_notice("'[FREQ_RADIO_NAV_BEACON / 10] kHz' is printed on the side.")