mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-17 19:14:15 +01:00
348789fa8d
## About The Pull Request Moves a lot of the unique renaming implementations described in #82664 to the functions given by the `obj_flag` `UNIQUE_RENAME`. `UNIQUE_RENAME` has been given new properties to account for non-standard renaming, these being the `RENAME_NO_DESC` flag that prevents changing the description, the `nameformat()` and `descformat()` procs that, when modified, allow for applying naming formats(i.e. "Body Bag - [input]"), as well as other post-renaming handling such as changing the name of the output plant of a renamed seed, the `rename_checks()` proc that allows for unique naming prevention(such as a locked personal closet), and the `rename_reset()` proc to clean up other possible renamed variables potentially changed in `nameformat()` and `descformat()`. This also adds `/datum/element/tool_renaming` to crayons, which will let them rename anything that has `UNIQUE_RENAME`. I looked through everything with that flag, and I didn't see anything that I don't think should be renameable by a crayon(except things that shouldn't be renamable with pens), so it shouldn't fuck anything up. ## Why It's Good For The Game moves all of the non-honorable mentions in #82664 to the same renaming system, and also moves all of the honorable mentions save for: - plaques, as they only get renamed once and wouldn't benefit from `UNIQUE_RENAME` imo - books, because they're far more than just renaming, and are persistent - paintings, because they're persistent - photos, because they're not normal renaming and they're persistent - endoskeletons, because they're done with a multitool in UI - cardboard IDs, because they're far more than just renaming Additionally, this fixes: - Implanter renaming didn't work because a ! was missing - Clown borg picket sign renaming didn't work because they didn't use the correct arguments This'll make it easier to make renameable objects in the future, as well. ## Changelog 🆑 fix: fixes implanter renaming not working fix: fixes clownborg picket sign renaming not working code: brought most unique renaming implementations under UNIQUE_RENAME /🆑
107 lines
3.3 KiB
Plaintext
107 lines
3.3 KiB
Plaintext
/obj/item/supplypod_beacon
|
|
name = "Supply Pod Beacon"
|
|
desc = "A device that can be linked to an Express Supply Console for precision supply pod deliveries."
|
|
icon = 'icons/obj/devices/tracker.dmi'
|
|
icon_state = "supplypod_beacon"
|
|
inhand_icon_state = "radio"
|
|
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
armor_type = /datum/armor/supplypod_beacon
|
|
resistance_flags = FIRE_PROOF
|
|
interaction_flags_click = ALLOW_SILICON_REACH
|
|
obj_flags = UNIQUE_RENAME | RENAME_NO_DESC
|
|
/// The linked console
|
|
var/obj/machinery/computer/cargo/express/express_console
|
|
/// If linked
|
|
var/linked = FALSE
|
|
/// If this is ready to launch
|
|
var/ready = FALSE
|
|
/// If it's been launched
|
|
var/launched = FALSE
|
|
|
|
/datum/armor/supplypod_beacon
|
|
bomb = 100
|
|
fire = 100
|
|
|
|
/obj/item/supplypod_beacon/proc/update_status(consoleStatus)
|
|
switch(consoleStatus)
|
|
if (SP_LINKED)
|
|
linked = TRUE
|
|
playsound(src,'sound/machines/beep/twobeep.ogg',50,FALSE)
|
|
if (SP_READY)
|
|
ready = TRUE
|
|
if (SP_LAUNCH)
|
|
launched = TRUE
|
|
playsound(src,'sound/machines/beep/triple_beep.ogg',50,FALSE)
|
|
playsound(src,'sound/machines/warning-buzzer.ogg',50,FALSE)
|
|
addtimer(CALLBACK(src, PROC_REF(endLaunch)), 33)//wait 3.3 seconds (time it takes for supplypod to land), then update icon
|
|
if (SP_UNLINK)
|
|
linked = FALSE
|
|
playsound(src,'sound/machines/synth/synth_no.ogg',50,FALSE)
|
|
if (SP_UNREADY)
|
|
ready = FALSE
|
|
update_appearance()
|
|
|
|
/obj/item/supplypod_beacon/update_overlays()
|
|
. = ..()
|
|
if(launched)
|
|
. += "sp_green"
|
|
return
|
|
if(ready)
|
|
. += "sp_yellow"
|
|
return
|
|
if(linked)
|
|
. += "sp_orange"
|
|
return
|
|
|
|
/obj/item/supplypod_beacon/proc/endLaunch()
|
|
launched = FALSE
|
|
update_status()
|
|
|
|
/obj/item/supplypod_beacon/examine(user)
|
|
. = ..()
|
|
. += span_notice("It looks like it has a few anchoring bolts.")
|
|
if(!express_console)
|
|
. += span_notice("[src] is not currently linked to an Express Supply console.")
|
|
else
|
|
. += span_notice("Alt-click to unlink it from the Express Supply console.")
|
|
|
|
/obj/item/supplypod_beacon/Destroy()
|
|
if(express_console)
|
|
express_console.beacon = null
|
|
return ..()
|
|
|
|
/obj/item/supplypod_beacon/wrench_act(mob/living/user, obj/item/tool)
|
|
. = ..()
|
|
if (default_unfasten_wrench(user, tool) == SUCCESSFUL_UNFASTEN)
|
|
pixel_x = 0
|
|
pixel_y = 0
|
|
return ITEM_INTERACT_SUCCESS
|
|
|
|
/obj/item/supplypod_beacon/proc/unlink_console()
|
|
if(express_console)
|
|
express_console.beacon = null
|
|
express_console = null
|
|
update_status(SP_UNLINK)
|
|
update_status(SP_UNREADY)
|
|
|
|
/obj/item/supplypod_beacon/proc/link_console(obj/machinery/computer/cargo/express/C, mob/living/user)
|
|
if (C.beacon)//if new console has a beacon, then...
|
|
C.beacon.unlink_console()//unlink the old beacon from new console
|
|
if (express_console)//if this beacon has an express console
|
|
express_console.beacon = null//remove the connection the expressconsole has from beacons
|
|
express_console = C//set the linked console var to the console
|
|
express_console.beacon = src//out with the old in with the news
|
|
update_status(SP_LINKED)
|
|
if (express_console.using_beacon)
|
|
update_status(SP_READY)
|
|
to_chat(user, span_notice("[src] linked to [C]."))
|
|
|
|
/obj/item/supplypod_beacon/click_alt(mob/user)
|
|
if(!express_console)
|
|
to_chat(user, span_alert("There is no linked console."))
|
|
return CLICK_ACTION_BLOCKING
|
|
unlink_console()
|
|
return CLICK_ACTION_SUCCESS
|