mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-19 03:55:11 +01:00
Adds the Janitor access keyring (#73768)
## About The Pull Request HackMD for this can be found here: https://hackmd.io/VEbjO1kaQJarao4KqGfzgw?view Basically, this gives the first Janitor an access key that they can use to enter departments. This requires a Head of Staff to approve it through the keycard authenticator, and only holds one department at a time, and will clear itself out after 10 minutes. This gives departmental AA, including the head of staff's office, adding a tradeoff. The Janitor is alerted when access is given to their key (as their keyring will say such) and everyone can see janitors trying to open a door when they use it (with a cool sound, too). You can't bump open airlocks with it, I limited it to directly using it on the door, because I thought it made it feel more realistic to a keyring. I had an earlier version of this that gave the key it's own access, which allowed bumping open, but it also allowed things like locking RD consoles, and I dunno how strong I want this key to be. I also wanted to limit how easy this is to greytide/steal, currently only the first Janitor spawns with the key. I thought it would be too easy to exploit otherwise, or essentially stolen roundstart if there were no Janitors. Maybe this can also fit as a Traitor objective after melon's new objective PR is done? ### Minor detail While adding icons, I realized inhands don't actually set its icon state to the default if it's null, so I removed that LYING comment. ## Why It's Good For The Game   Alternatively, https://youtu.be/dlkSbQ-IkRM?t=182 (timestamp) ## Changelog 🆑 JohnFulpWillard, sprites by BalkyGoat add: The Janitor Access key: Janitors can now be given departmental AA (one at a time) using the Keycard authentication device in Command offices. Use it if you need cleaning! fix: HoP's trim is no longer set to edit Supply access. /🆑 --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
This commit is contained in:
@@ -4,9 +4,11 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new)
|
||||
#define KEYCARD_EMERGENCY_MAINTENANCE_ACCESS "Emergency Maintenance Access"
|
||||
#define KEYCARD_BSA_UNLOCK "Bluespace Artillery Unlock"
|
||||
|
||||
#define ACCESS_GRANTING_COOLDOWN (30 SECONDS)
|
||||
|
||||
/obj/machinery/keycard_auth
|
||||
name = "Keycard Authentication Device"
|
||||
desc = "This device is used to trigger station functions, which require more than one ID card to authenticate."
|
||||
desc = "This device is used to trigger station functions, which require more than one ID card to authenticate, or to give the Janitor access to a department."
|
||||
icon = 'icons/obj/monitors.dmi'
|
||||
icon_state = "auth_off"
|
||||
power_channel = AREA_USAGE_ENVIRON
|
||||
@@ -19,6 +21,8 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new)
|
||||
var/mob/triggerer = null
|
||||
var/waiting = FALSE
|
||||
|
||||
COOLDOWN_DECLARE(access_grant_cooldown)
|
||||
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/keycard_auth, 26)
|
||||
|
||||
/obj/machinery/keycard_auth/Initialize(mapload)
|
||||
@@ -61,9 +65,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/keycard_auth, 26)
|
||||
|
||||
/obj/machinery/keycard_auth/ui_act(action, params)
|
||||
. = ..()
|
||||
|
||||
if(. || waiting || !allowed(usr))
|
||||
return
|
||||
|
||||
switch(action)
|
||||
if("red_alert")
|
||||
if(!event_source)
|
||||
@@ -83,6 +87,24 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/keycard_auth, 26)
|
||||
if(!event_source)
|
||||
sendEvent(KEYCARD_BSA_UNLOCK)
|
||||
. = TRUE
|
||||
if("give_janitor_access")
|
||||
var/mob/living/living_user = usr
|
||||
if(!living_user || !istype(living_user))
|
||||
return TRUE
|
||||
if(!COOLDOWN_FINISHED(src, access_grant_cooldown))
|
||||
balloon_alert(usr, "on cooldown!")
|
||||
return TRUE
|
||||
var/obj/item/card/id/advanced/card = living_user.get_idcard(hand_first = TRUE)
|
||||
if(!card)
|
||||
return TRUE
|
||||
for(var/access_as_text in SSid_access.sub_department_managers_tgui)
|
||||
var/list/info = SSid_access.sub_department_managers_tgui[access_as_text]
|
||||
if(card.trim.assignment != info["head"])
|
||||
continue
|
||||
COOLDOWN_START(src, access_grant_cooldown, ACCESS_GRANTING_COOLDOWN)
|
||||
SEND_GLOBAL_SIGNAL(COMSIG_ON_DEPARTMENT_ACCESS, info["regions"])
|
||||
balloon_alert(usr, "key access sent")
|
||||
return
|
||||
|
||||
/obj/machinery/keycard_auth/update_appearance(updates)
|
||||
. = ..()
|
||||
@@ -163,6 +185,7 @@ GLOBAL_VAR_INIT(emergency_access, FALSE)
|
||||
minor_announce("Bluespace Artillery firing protocols have been [GLOB.bsa_unlock? "unlocked" : "locked"]", "Weapons Systems Update:")
|
||||
SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("bluespace artillery", GLOB.bsa_unlock? "unlocked" : "locked"))
|
||||
|
||||
#undef ACCESS_GRANTING_COOLDOWN
|
||||
#undef KEYCARD_RED_ALERT
|
||||
#undef KEYCARD_EMERGENCY_MAINTENANCE_ACCESS
|
||||
#undef KEYCARD_BSA_UNLOCK
|
||||
|
||||
Reference in New Issue
Block a user