Files
Bubberstation/code/game/objects/items/devices/quantum_keycard.dm
MrMelbert a21742ff60 Adds ALLOW_RESTING to a bunch of items (#82761)
## About The Pull Request

Allows you to alt-click a bunch of items while resting. 

Fixes #82788

## Why It's Good For The Game

Some of these, such as storage, are bugfixes. You shouldn't need to be
standing up to configure a spray can, or change the direction of your
bedsheet

Others are just sensible changes. 

## Changelog

🆑 Melbert
fix: You can open bags with alt click while resting again
qol: Many items which previously required you to stand to alt-click now
don't, such as bedsheets and spray cans
/🆑
2024-04-20 21:30:10 -07:00

62 lines
2.3 KiB
Plaintext

/obj/item/quantum_keycard
name = "quantum keycard"
desc = "A keycard able to link to a quantum pad's particle signature, allowing other quantum pads to travel there instead of their linked pad."
icon = 'icons/obj/devices/tool.dmi'
icon_state = "quantum_keycard_gags"
greyscale_config = /datum/greyscale_config/quantum_keycard
greyscale_colors = COLOR_WHITE
inhand_icon_state = "card-id"
lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi'
w_class = WEIGHT_CLASS_TINY
obj_flags = UNIQUE_RENAME
interaction_flags_click = NEED_DEXTERITY|ALLOW_RESTING
/// The linked quantum pad
var/obj/machinery/quantumpad/qpad
/// where the pad is located and what color the card will become
var/static/list/gags_coloring = list(
/area/station/maintenance = COLOR_ASSISTANT_GRAY,
/area/station/security = COLOR_SECURITY_RED,
/area/station/service = COLOR_SERVICE_LIME,
/area/centcom = COLOR_CENTCOM_BLUE, // how?
/area/station/command = COLOR_COMMAND_BLUE,
/area/station/ai_monitored = COLOR_COMMAND_BLUE,
/area/station/medical = COLOR_MEDICAL_BLUE,
/area/station/science = COLOR_SCIENCE_PINK,
/area/station/engineering = COLOR_ENGINEERING_ORANGE,
/area/station/cargo = COLOR_CARGO_BROWN,
/area/mine = COLOR_CARGO_BROWN
)
/obj/item/quantum_keycard/examine(mob/user)
. = ..()
if(qpad)
. += "It's currently linked to a quantum pad."
var/area_name = get_area_name(qpad)
if(area_name)
. += span_notice("The pad is located in \the [area_name]")
. += span_notice("Alt-click to unlink the keycard.")
else
. += span_notice("Insert [src] into an active quantum pad to link it.")
/obj/item/quantum_keycard/click_alt(mob/living/user)
to_chat(user, span_notice("You start pressing [src]'s unlink button..."))
if(do_after(user, 4 SECONDS, target = src))
to_chat(user, span_notice("The keycard beeps twice and disconnects the quantum link."))
set_pad()
return CLICK_ACTION_SUCCESS
/obj/item/quantum_keycard/proc/set_pad(obj/machinery/quantumpad/new_pad)
qpad = new_pad
if(!istype(new_pad))
set_greyscale(initial(greyscale_colors))
name = initial(name)
return
var/new_color = is_type_in_list(get_area(new_pad), gags_coloring, zebra = TRUE) || COLOR_WEBSAFE_DARK_GRAY
set_greyscale(new_color)