mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-10 07:41:16 +01:00
14d2514aa9
## About The Pull Request /area/station/ai_monitored's behaviour was isolated into a component, `/datum/component/monitored_area`, which itself uses `/datum/motion_group`s to query cameras. Functionally, it (should) work identically to the old implementation. I'm sure that behaviour could have been further cleaned up, camera code is quite dreadful, but it's better to focus on isolating the behaviour first. Baby steps. Areas that want to opt into monitoring can set `var/motion_monitored` to TRUE (this approach was taken to make subtyping easier). The following non-AI areas were changed: - /area/station/ai_monitored/security/armory -> /area/station/security/armory - /area/station/ai_monitored/command/nuke_storage -> /area/station/command/vault - /area/station/ai_monitored/command/storage/eva -> /area/station/command/eva All other `/area/station/ai_monitored` subtypes were repathed into `/area/station/ai` and cleaned up in a way that I thought made logical sense. It is **much** more readable now. For example: - /area/station/ai_monitored/turret_protected/aisat -> /area/station/ai/satellite - /area/station/ai_monitored/command/storage/satellite -> /area/station/ai/satellite/maintenance/storage - /area/station/ai_monitored/turret_protected/ai -> /area/station/ai/satellite/chamber
64 lines
2.3 KiB
Plaintext
64 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/map_icons/items/_item.dmi'
|
|
icon_state = "/obj/item/quantum_keycard"
|
|
post_init_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 = 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))
|
|
return CLICK_ACTION_BLOCKING
|
|
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)
|