Adds Skeleton Crew Access (#31389)

* Spooky scary skeletons

* Spooky scary skeletons

* Spooky scary skeletons

* Merge

* Merge

* Update job_defines.dm

* Update support.dm

* Update support.dm

* Update science_jobs.dm

* Update support.dm

* Update security_jobs.dm

* Update cards_ids.dm

* Update cards_ids.dm

* Update support.dm

* Update cards_ids.dm

* config

* Update SSjobs.dm

* captaincy
This commit is contained in:
CRUNCH
2026-01-11 19:22:15 +00:00
committed by GitHub
parent 2df60ba208
commit b7ac71d48a
12 changed files with 302 additions and 104 deletions
@@ -1,5 +1,11 @@
/// Config holder for all job related things
/datum/configuration_section/job_configuration
/// Will the crew be given extended access if the manifest count is low enough?
var/allow_skeleton_crew_access = TRUE
/// Number of crew on the manifest needed to activate skeleton crew access
var/skeleton_crew_threshold = 30
/// Number of crew on the manifest needed to disable skeleton crew access
var/skeleton_crew_escape_threshold = 35
/// Do we want to restrict jobs based on account age
var/restrict_jobs_on_account_age = FALSE
/// Allow admins to bypass age-based job restrictions
@@ -29,6 +35,9 @@
/datum/configuration_section/job_configuration/load_data(list/data)
// Use the load wrappers here. That way the default isnt made 'null' if you comment out the config line
CONFIG_LOAD_BOOL(allow_skeleton_crew_access, data["allow_skeleton_crew_access"])
CONFIG_LOAD_BOOL(skeleton_crew_threshold, data["skeleton_crew_threshold"])
CONFIG_LOAD_BOOL(skeleton_crew_escape_threshold, data["skeleton_crew_escape_threshold"])
CONFIG_LOAD_BOOL(restrict_jobs_on_account_age, data["restrict_jobs_on_account_age"])
CONFIG_LOAD_BOOL(restrict_jobs_on_account_age_admin_bypass, data["restrict_jobs_on_account_age_admin_bypass"])
CONFIG_LOAD_BOOL(enable_exp_tracking, data["enable_exp_tracking"])
+23
View File
@@ -15,6 +15,10 @@ SUBSYSTEM_DEF(jobs)
var/probability_of_antag_role_restriction = 100 // Dict probability of a job rolling an antagonist role
var/id_change_counter = 1
/// Is the crew count below the skeleton crew threshold?
var/skeleton_crew = FALSE
/// Holds a reference to the skeleton timer until it's finished or killed.
var/skeleton_revoke_timer
///list of station departments and their associated roles and economy payments
var/list/station_departments = list()
/// Do we spawn everyone at shuttle due to late arivals?
@@ -33,6 +37,8 @@ SUBSYSTEM_DEF(jobs)
// Only fires every 5 minutes
/datum/controller/subsystem/jobs/fire()
if(GLOB.configuration.jobs.allow_skeleton_crew_access)
check_skeleton_crew()
if(!SSdbcore.IsConnected() || !GLOB.configuration.jobs.enable_exp_tracking)
return
batch_update_player_exp(announce = FALSE) // Set this to true if you ever want to inform players about their EXP gains
@@ -587,3 +593,20 @@ SUBSYSTEM_DEF(jobs)
SSdbcore.MassExecute(playtime_history_update_queries, TRUE, TRUE, FALSE, FALSE)
log_debug("Successfully updated all EXP data in [stop_watch(start_time)]s")
/datum/controller/subsystem/jobs/proc/check_skeleton_crew()
if(length(GLOB.crew_list) <= GLOB.configuration.jobs.skeleton_crew_threshold)
if(skeleton_revoke_timer)
deltimer(skeleton_revoke_timer)
if(!skeleton_crew)
GLOB.minor_announcement.Announce("Due to reduced crew numbers, extended departmental access has been unlocked on crew IDs.", "Extended Access Enabled")
skeleton_crew = TRUE
else
if(skeleton_crew >= GLOB.configuration.jobs.skeleton_crew_escape_threshold)
GLOB.minor_announcement.Announce("Crew count is now above minimal levels, extended departmental access will be revoked from crew IDs in 2 minutes. \
If your ID access has not been upgraded by the Head of Personnel, please vacate any areas you do not normally have access to.", "Extended Access Disabled")
skeleton_revoke_timer = addtimer(CALLBACK(src, PROC_REF(deactivate_skeleton_access)), 2 MINUTES, TIMER_STOPPABLE)
/datum/controller/subsystem/jobs/proc/deactivate_skeleton_access()
skeleton_crew = FALSE
deltimer(skeleton_revoke_timer)
+6
View File
@@ -31,6 +31,7 @@
ACCESS_TELEPORTER,
ACCESS_WEAPONS
)
skeleton_access = list(ACCESS_CAPTAIN)
minimal_player_age = 21
exp_map = list(EXP_TYPE_ENGINEERING = 1200)
blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY, DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP, DISABILITY_FLAG_PARAPLEGIC)
@@ -90,6 +91,7 @@
ACCESS_MINERAL_STOREROOM,
ACCESS_TECH_STORAGE
)
skeleton_access = list(ACCESS_ATMOSPHERICS)
alt_titles = list("Maintenance Technician","Engine Technician","Electrician")
minimal_player_age = 7
exp_map = list(EXP_TYPE_CREW = 300)
@@ -142,6 +144,10 @@
ACCESS_MINERAL_STOREROOM,
ACCESS_TECH_STORAGE
)
skeleton_access = list(
ACCESS_STATION_ENGINEER,
ACCESS_ENGINE_EQUIP,
)
alt_titles = list("Atmospheric Technician")
minimal_player_age = 7
exp_map = list(EXP_TYPE_CREW = 300)
+6
View File
@@ -6,6 +6,9 @@
/// Job access. A list of constants from access_defines.dm.
var/list/access = list()
/// Extra job access when the number of crew is below the skeleton crew threshold.
var/list/skeleton_access = list()
///Job Bitflag, used for Database entries - DO NOT JUST EDIT THESE
var/flag = 0
///Department(s) Bitflag, used for Databse entries - DO NOT JUST EDIT THESE
@@ -108,6 +111,9 @@
/datum/job/proc/get_access()
return access.Copy()
/datum/job/proc/get_skeleton_access()
return skeleton_access.Copy()
//If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1
/datum/job/proc/player_old_enough(client/C)
if(available_in_days(C) == 0)
+36
View File
@@ -28,6 +28,7 @@
ACCESS_VIROLOGY,
ACCESS_WEAPONS
)
skeleton_access = list(ACCESS_CAPTAIN)
minimal_player_age = 21
exp_map = list(EXP_TYPE_MEDICAL = 1200)
blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY)
@@ -79,6 +80,11 @@
ACCESS_MORGUE,
ACCESS_SURGERY
)
skeleton_access = list(
ACCESS_CHEMISTRY,
ACCESS_MINERAL_STOREROOM,
ACCESS_VIROLOGY,
)
alt_titles = list("Surgeon","Nurse")
minimal_player_age = 3
exp_map = list(EXP_TYPE_CREW = 180)
@@ -124,6 +130,12 @@
ACCESS_MEDICAL,
ACCESS_MORGUE
)
skeleton_access = list(
ACCESS_SURGERY,
ACCESS_CHEMISTRY,
ACCESS_MINERAL_STOREROOM,
ACCESS_VIROLOGY,
)
minimal_player_age = 3
exp_map = list(EXP_TYPE_CREW = 180)
outfit = /datum/outfit/job/coroner
@@ -196,6 +208,11 @@
ACCESS_MEDICAL,
ACCESS_MINERAL_STOREROOM
)
skeleton_access = list(
ACCESS_MORGUE,
ACCESS_SURGERY,
ACCESS_VIROLOGY,
)
alt_titles = list("Pharmacist","Pharmacologist")
minimal_player_age = 7
exp_map = list(EXP_TYPE_CREW = 300)
@@ -242,6 +259,12 @@
ACCESS_MINERAL_STOREROOM,
ACCESS_VIROLOGY
)
skeleton_access = list(
ACCESS_MORGUE,
ACCESS_SURGERY,
ACCESS_CHEMISTRY,
ACCESS_MINERAL_STOREROOM,
)
alt_titles = list("Pathologist","Microbiologist")
minimal_player_age = 7
exp_map = list(EXP_TYPE_CREW = 300)
@@ -292,6 +315,13 @@
ACCESS_MEDICAL,
ACCESS_PSYCHIATRIST
)
skeleton_access = list(
ACCESS_MORGUE,
ACCESS_SURGERY,
ACCESS_CHEMISTRY,
ACCESS_MINERAL_STOREROOM,
ACCESS_VIROLOGY,
)
alt_titles = list("Psychologist","Therapist")
outfit = /datum/outfit/job/psychiatrist
standard_paycheck = CREW_PAY_MEDIUM
@@ -346,6 +376,12 @@
ACCESS_PARAMEDIC,
ACCESS_TELEPORTER
)
skeleton_access = list(
ACCESS_SURGERY,
ACCESS_CHEMISTRY,
ACCESS_MINERAL_STOREROOM,
ACCESS_VIROLOGY,
)
minimal_player_age = 3
exp_map = list(EXP_TYPE_CREW = 180)
outfit = /datum/outfit/job/paramedic
+37
View File
@@ -34,6 +34,7 @@
ACCESS_XENOBIOLOGY,
ACCESS_WEAPONS
)
skeleton_access = list(ACCESS_CAPTAIN)
minimal_player_age = 21
blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY)
exp_map = list(EXP_TYPE_SCIENCE = 1200)
@@ -90,6 +91,15 @@
ACCESS_TOX_STORAGE,
ACCESS_TOX,
)
skeleton_access = list(
ACCESS_ROBOTICS,
ACCESS_MORGUE,
ACCESS_TECH_STORAGE,
ACCESS_GENETICS,
ACCESS_XENOBIOLOGY,
ACCESS_MINING,
ACCESS_MINING_STATION,
)
alt_titles = list("Anomalist", "Plasma Researcher", "Chemical Researcher")
minimal_player_age = 3
exp_map = list(EXP_TYPE_CREW = 300)
@@ -144,6 +154,14 @@
ACCESS_EXTERNAL_AIRLOCKS,
ACCESS_TELEPORTER,
)
skeleton_access = list(
ACCESS_TOX_STORAGE,
ACCESS_TOX,
ACCESS_ROBOTICS,
ACCESS_MORGUE,
ACCESS_TECH_STORAGE,
ACCESS_GENETICS,
)
alt_titles = list("Xenoarcheologist", "Slime Cultivator", "Slime Rancher")
minimal_player_age = 3
exp_map = list(EXP_TYPE_CREW = 300)
@@ -200,6 +218,14 @@
ACCESS_ROBOTICS,
ACCESS_TECH_STORAGE
)
skeleton_access = list(
ACCESS_TOX_STORAGE,
ACCESS_TOX,
ACCESS_GENETICS,
ACCESS_XENOBIOLOGY,
ACCESS_MINING,
ACCESS_MINING_STATION,
)
alt_titles = list("Biomechanical Engineer","Mechatronic Engineer")
minimal_player_age = 3
exp_map = list(EXP_TYPE_CREW = 180)
@@ -249,6 +275,17 @@
ACCESS_MAINT_TUNNELS,
ACCESS_RESEARCH
)
skeleton_access = list(
ACCESS_MINERAL_STOREROOM,
ACCESS_TOX_STORAGE,
ACCESS_TOX,
ACCESS_ROBOTICS,
ACCESS_MORGUE,
ACCESS_TECH_STORAGE,
ACCESS_XENOBIOLOGY,
ACCESS_MINING,
ACCESS_MINING_STATION,
)
minimal_player_age = 3
exp_map = list(EXP_TYPE_CREW = 180)
outfit = /datum/outfit/job/geneticist
+9
View File
@@ -38,6 +38,7 @@
ACCESS_SUPPLY_SHUTTLE,
ACCESS_WEAPONS
)
skeleton_access = list(ACCESS_CAPTAIN)
minimal_player_age = 21
exp_map = list(EXP_TYPE_SECURITY = 1200)
blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY, DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP, DISABILITY_FLAG_PARAPLEGIC)
@@ -99,6 +100,10 @@
ACCESS_SECURITY,
ACCESS_WEAPONS
)
skeleton_access = list(
ACCESS_FORENSICS_LOCKERS,
ACCESS_MORGUE,
)
minimal_player_age = 21
exp_map = list(EXP_TYPE_SECURITY = 600)
blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY, DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP, DISABILITY_FLAG_PARAPLEGIC)
@@ -235,6 +240,10 @@
ACCESS_SECURITY,
ACCESS_WEAPONS
)
skeleton_access = list(
ACCESS_FORENSICS_LOCKERS,
ACCESS_MORGUE,
)
minimal_player_age = 14
exp_map = list(EXP_TYPE_CREW = 600)
blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY, DISABILITY_FLAG_PARAPLEGIC)
+1
View File
@@ -110,6 +110,7 @@
ACCESS_THEATRE,
ACCESS_WEAPONS
)
skeleton_access = list(ACCESS_CAPTAIN)
blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY , DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP)
outfit = /datum/outfit/job/hop
important_information = "This role requires you to coordinate a department. You are required to be familiar with Standard Operating Procedure (Service), basic job duties, and act professionally (roleplay)."
+42 -2
View File
@@ -31,6 +31,7 @@
ACCESS_EXPEDITION,
ACCESS_SMITH
)
skeleton_access = list(ACCESS_CAPTAIN)
blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY)
outfit = /datum/outfit/job/qm
important_information = "This role requires you to coordinate a department. You are required to be familiar with Standard Operating Procedure (Supply), basic job duties, and act professionally (roleplay)."
@@ -80,6 +81,11 @@
ACCESS_MINERAL_STOREROOM,
ACCESS_SUPPLY_SHUTTLE,
)
skeleton_access = list(
ACCESS_MINING,
ACCESS_MINING_STATION,
ACCESS_SMITH,
)
alt_titles = list("Mail Carrier", "Courier")
outfit = /datum/outfit/job/cargo_tech
standard_paycheck = CREW_PAY_LOW
@@ -120,7 +126,11 @@
ACCESS_MINERAL_STOREROOM,
ACCESS_MINING,
ACCESS_MINING_STATION,
ACCESS_SMITH
ACCESS_SMITH,
)
skeleton_access = list(
ACCESS_MAILSORTING,
ACCESS_SUPPLY_SHUTTLE,
)
alt_titles = list("Metalworker", "Tinkerer")
outfit = /datum/outfit/job/smith
@@ -162,6 +172,13 @@
ACCESS_MINING_STATION,
ACCESS_MINING,
)
skeleton_access = list(
ACCESS_MAILSORTING,
ACCESS_CARGO,
ACCESS_CARGO_BAY,
ACCESS_SUPPLY_SHUTTLE,
ACCESS_SMITH,
)
alt_titles = list("Spelunker")
outfit = /datum/outfit/job/mining
standard_paycheck = CREW_PAY_LOW
@@ -252,7 +269,14 @@
ACCESS_TELEPORTER,
ACCESS_CARGO,
ACCESS_MINERAL_STOREROOM,
ACCESS_MINING_STATION
)
skeleton_access = list(
ACCESS_CARGO_BAY,
ACCESS_SUPPLY_SHUTTLE,
ACCESS_MAILSORTING,
ACCESS_MINING_STATION,
ACCESS_MINING,
ACCESS_SMITH,
)
alt_titles = list("Salvage Technician", "Scavenger")
outfit = /datum/outfit/job/explorer
@@ -294,6 +318,11 @@
department_head = list("Head of Personnel")
selection_color = "#dddddd"
access = list(ACCESS_BAR, ACCESS_MAINT_TUNNELS, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
skeleton_access = list(
ACCESS_KITCHEN,
ACCESS_HYDROPONICS,
ACCESS_MORGUE,
)
outfit = /datum/outfit/job/bartender
standard_paycheck = CREW_PAY_LOW
difficulty = LOW_DIFFICULTY
@@ -344,6 +373,12 @@
ACCESS_KITCHEN,
ACCESS_MAINT_TUNNELS
)
skeleton_access = list(
ACCESS_BAR,
ACCESS_MORGUE,
ACCESS_HYDROPONICS,
ACCESS_MINERAL_STOREROOM,
)
alt_titles = list("Cook","Culinary Artist","Butcher")
outfit = /datum/outfit/job/chef
standard_paycheck = CREW_PAY_LOW
@@ -389,6 +424,11 @@
ACCESS_MAINT_TUNNELS,
ACCESS_MORGUE
)
skeleton_access = list(
ACCESS_KITCHEN,
ACCESS_BAR,
ACCESS_MINERAL_STOREROOM,
)
alt_titles = list("Hydroponicist", "Botanical Researcher")
outfit = /datum/outfit/job/hydro
standard_paycheck = CREW_PAY_LOW
@@ -497,6 +497,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
SSjobs.notify_dept_head(modify.rank, "[scan.registered_name] has transferred \"[modify.registered_name]\" the \"[oldrank]\" to \"[temp_t]\".")
else
var/list/access = list()
var/list/skeleton_access = list()
var/datum/job/jobdatum
if(is_centcom() && islist(get_centcom_access(t1)))
access = get_centcom_access(t1)
@@ -511,6 +512,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
return
access = jobdatum.get_access()
skeleton_access = jobdatum.get_skeleton_access()
var/jobnamedata = modify.getRankAndAssignment()
log_game("[key_name(usr)] ([scan.assignment]) has reassigned \"[modify.registered_name]\" from \"[jobnamedata]\" to \"[t1]\".")
@@ -534,6 +536,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
H.mind.playtime_role = t1
modify.access = access
modify.skeleton_access = skeleton_access
modify.rank = t1
modify.assignment = t1
regenerate_id_name()
+124 -102
View File
@@ -99,6 +99,7 @@
/// Total mining points for the Shift.
var/total_mining_points = 0
var/list/access = list()
var/list/skeleton_access = list()
var/registered_name = "Unknown" // The name registered_name on the card
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 100, ACID = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -220,9 +221,10 @@
<img src=[photo_side] height=80 width=80 border=4></td></tr></table>"}
/obj/item/card/id/GetAccess()
if(!guest_pass)
return access
return access | guest_pass.GetAccess()
if(SSjobs.skeleton_crew)
return access | guest_pass?.GetAccess() | skeleton_access
return access | guest_pass?.GetAccess()
/obj/item/card/id/proc/attach_guest_pass(obj/item/card/id/guest/G, mob/user)
if(world.time > G.expiration_time)
@@ -428,7 +430,7 @@
access = get_all_centcom_access()
..()
// MARK: Security
/obj/item/card/id/prisoner
name = "prisoner ID card"
desc = "You are a number, you are not a free man."
@@ -486,47 +488,12 @@
name = "Prisoner [random_number]"
registered_name = name
/obj/item/card/id/medical
name = "Medical ID"
registered_name = "Medic"
icon_state = "medical"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM)
/obj/item/card/id/coroner
name = "Coroner ID"
registered_name = "Coroner"
icon_state = "coroner"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM)
/obj/item/card/id/virologist
name = "Virologist ID"
registered_name = "Virologist"
icon_state = "virologist"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS)
/obj/item/card/id/chemist
name = "Chemist ID"
registered_name = "Chemist"
icon_state = "chemist"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM)
/obj/item/card/id/paramedic
name = "Paramedic ID"
registered_name = "Paramedic"
icon_state = "paramedic"
access = list(ACCESS_PARAMEDIC, ACCESS_MEDICAL, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_MORGUE)
/obj/item/card/id/psychiatrist
name = "Psychiatrist ID"
registered_name = "Psychiatrist"
icon_state = "psychiatrist"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_PSYCHIATRIST)
/obj/item/card/id/security
name = "Security ID"
registered_name = "Officer"
icon_state = "security"
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_EVIDENCE, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS)
skeleton_access = list(ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE)
/obj/item/card/id/detective
name = "Detective ID"
@@ -539,6 +506,7 @@
registered_name = "Warden"
icon_state = "warden"
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_EVIDENCE, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS)
skeleton_access = list(ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE)
/obj/item/card/id/internalaffairsagent
name = "Internal Affairs Agent ID"
@@ -546,66 +514,125 @@
icon_state = "internalaffairsagent"
access = list(ACCESS_INTERNAL_AFFAIRS, ACCESS_COURT, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_RESEARCH, ACCESS_MEDICAL, ACCESS_ENGINEERING_GENERAL, ACCESS_MAILSORTING)
/obj/item/card/id/geneticist
name = "Geneticist ID"
registered_name = "Geneticist"
icon_state = "geneticist"
access = list(ACCESS_MAINT_TUNNELS, ACCESS_GENETICS, ACCESS_RESEARCH)
// MARK: Medical
/obj/item/card/id/medical
name = "Medical ID"
registered_name = "Medic"
icon_state = "medical"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM)
skeleton_access = list(ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM, ACCESS_VIROLOGY)
/obj/item/card/id/coroner
name = "Coroner ID"
registered_name = "Coroner"
icon_state = "coroner"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM)
skeleton_access = list(ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM, ACCESS_VIROLOGY)
/obj/item/card/id/chemist
name = "Chemist ID"
registered_name = "Chemist"
icon_state = "chemist"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM)
skeleton_access = list(ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_VIROLOGY)
/obj/item/card/id/virologist
name = "Virologist ID"
registered_name = "Virologist"
icon_state = "virologist"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS)
skeleton_access = list(ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM)
/obj/item/card/id/psychiatrist
name = "Psychiatrist ID"
registered_name = "Psychiatrist"
icon_state = "psychiatrist"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_PSYCHIATRIST)
skeleton_access = list(ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM, ACCESS_VIROLOGY)
/obj/item/card/id/paramedic
name = "Paramedic ID"
registered_name = "Paramedic"
icon_state = "paramedic"
access = list(ACCESS_PARAMEDIC, ACCESS_MEDICAL, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_MORGUE)
skeleton_access = list(ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM, ACCESS_VIROLOGY)
// MARK: Science
/obj/item/card/id/research
name = "Research ID"
registered_name = "Scientist"
icon_state = "research"
access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM)
skeleton_access = list(ACCESS_ROBOTICS, ACCESS_MORGUE, ACCESS_TECH_STORAGE, ACCESS_GENETICS, ACCESS_XENOBIOLOGY,
ACCESS_MINING, ACCESS_MINING_STATION)
/obj/item/card/id/xenobiology
name = "Xenobiology ID"
registered_name = "Xenobiologist"
icon_state = "xenobiologist"
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_EVA, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_TELEPORTER)
skeleton_access = list(ACCESS_TOX_STORAGE, ACCESS_TOX, ACCESS_ROBOTICS, ACCESS_MORGUE, ACCESS_TECH_STORAGE, ACCESS_GENETICS)
/obj/item/card/id/roboticist
name = "Roboticist ID"
registered_name = "Roboticist"
icon_state = "roboticist"
access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM)
skeleton_access = list(ACCESS_TOX_STORAGE, ACCESS_TOX, ACCESS_GENETICS, ACCESS_XENOBIOLOGY, ACCESS_MINING, ACCESS_MINING_STATION)
/obj/item/card/id/geneticist
name = "Geneticist ID"
registered_name = "Geneticist"
icon_state = "geneticist"
access = list(ACCESS_MAINT_TUNNELS, ACCESS_GENETICS, ACCESS_RESEARCH)
skeleton_access = list(ACCESS_MINERAL_STOREROOM, ACCESS_TOX_STORAGE, ACCESS_TOX, ACCESS_ROBOTICS, ACCESS_MORGUE, ACCESS_TECH_STORAGE,
ACCESS_XENOBIOLOGY, ACCESS_MINING, ACCESS_MINING_STATION)
// MARK: Supply
/obj/item/card/id/smith
name = "Smith ID"
registered_name = "Smith"
icon_state = "smith"
access = list(ACCESS_CARGO_BAY, ACCESS_CARGO, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_SMITH)
skeleton_access = list(ACCESS_MAILSORTING, ACCESS_SUPPLY_SHUTTLE)
/obj/item/card/id/supply
name = "Supply ID"
registered_name = "Cargonian"
icon_state = "cargo"
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
/obj/item/card/id/smith
name = "Smith ID"
registered_name = "Smith"
icon_state = "smith"
access = list(ACCESS_CARGO_BAY, ACCESS_CARGO, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_SMITH)
/obj/item/card/id/quartermaster
name = "Quartermaster ID"
registered_name = "Quartermaster"
icon_state = "quartermaster"
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_SMITH)
skeleton_access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_SMITH)
/obj/item/card/id/shaftminer
name = "Shaftminer ID"
registered_name = "Shaftminer"
icon_state = "shaftminer"
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
skeleton_access = list(ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BAY, ACCESS_SUPPLY_SHUTTLE, ACCESS_SMITH)
/obj/item/card/id/explorer
name = "Explorer ID"
registered_name = "Explorer"
icon_state = "explorer"
access = list(ACCESS_MAINT_TUNNELS, ACCESS_EXPEDITION, ACCESS_EVA, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_TELEPORTER, ACCESS_CARGO, ACCESS_MINERAL_STOREROOM)
skeleton_access = list(ACCESS_CARGO_BAY, ACCESS_SUPPLY_SHUTTLE, ACCESS_MAILSORTING, ACCESS_MINING_STATION, ACCESS_MINING, ACCESS_SMITH)
// MARK: Engineering
/obj/item/card/id/engineering
name = "Engineering ID"
registered_name = "Engineer"
icon_state = "engineering"
access = list(ACCESS_EVA, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ENGINEERING_GENERAL, ACCESS_ATMOSPHERICS)
skeleton_access = list(ACCESS_ATMOSPHERICS)
/obj/item/card/id/atmostech
name = "Life Support Specialist ID"
registered_name = "Life Support Specialist"
icon_state = "atmostech"
access = list(ACCESS_EVA, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ENGINEERING_GENERAL, ACCESS_ATMOSPHERICS)
skeleton_access = list(ACCESS_STATION_ENGINEER, ACCESS_ENGINE_EQUIP)
// MARK: Command
/obj/item/card/id/captains_spare/assigned
name = "Captain ID"
icon_state = "captain"
@@ -614,88 +641,87 @@
name = "Head of Personal ID"
registered_name = "HoP"
icon_state = "HoP"
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS,
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_ENGINEERING_GENERAL, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_INTERNAL_AFFAIRS,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_EXPEDITION, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS, ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS,
ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_ENGINEERING_GENERAL,
ACCESS_MORGUE, ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS,
ACCESS_INTERNAL_AFFAIRS, ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_EXPEDITION, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
/obj/item/card/id/hos
name = "Head of Security ID"
registered_name = "HoS"
icon_state = "HoS"
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_EVIDENCE, ACCESS_ARMORY, ACCESS_COURT,
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_ENGINEERING_GENERAL, ACCESS_MAILSORTING,
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_EXPEDITION, ACCESS_WEAPONS)
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_EVIDENCE, ACCESS_ARMORY, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE,
ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_ENGINEERING_GENERAL,
ACCESS_MAILSORTING, ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_EXPEDITION, ACCESS_WEAPONS)
/obj/item/card/id/cmo
name = "Chief Medical Officer ID"
registered_name = "CMO"
icon_state = "CMO"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_HEADS,
ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE,
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_HEADS, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE,
ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_PSYCHIATRIST, ACCESS_PARAMEDIC, ACCESS_MINERAL_STOREROOM)
/obj/item/card/id/rd
name = "Research Director ID"
registered_name = "RD"
icon_state = "RD"
access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE,
ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS,
ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD,
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_EXPEDITION, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE, ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS,
ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_EXPEDITION,
ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
/obj/item/card/id/quartermaster
name = "Quartermaster ID"
registered_name = "Quartermaster"
icon_state = "quartermaster"
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_SMITH)
/obj/item/card/id/ce
name = "Chief Engineer ID"
registered_name = "CE"
icon_state = "CE"
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EVA,
ACCESS_HEADS, ACCESS_ENGINEERING_GENERAL, ACCESS_SEC_DOORS,
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS,
ACCESS_EVA, ACCESS_HEADS, ACCESS_ENGINEERING_GENERAL, ACCESS_SEC_DOORS, ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT,
ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
/obj/item/card/id/ntrep
name = "Nanotrasen Representative ID"
registered_name = "NTRep"
icon_state = "ntrep"
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS,
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_ENGINEERING_GENERAL, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_INTERNAL_AFFAIRS,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_EXPEDITION, ACCESS_WEAPONS, ACCESS_NTREP)
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS, ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_EVA,
ACCESS_HEADS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_ENGINEERING_GENERAL, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_INTERNAL_AFFAIRS,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION, ACCESS_CLOWN, ACCESS_MIME,
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_EXPEDITION, ACCESS_WEAPONS, ACCESS_NTREP)
/obj/item/card/id/nct
name = "\improper Nanotrasen Career Trainer ID"
registered_name = "Nanotrasen Career Trainer"
icon_state = "nctrainer"
access = list(ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_CARGO, ACCESS_ENGINEERING_GENERAL, ACCESS_COURT, ACCESS_EVA, ACCESS_TRAINER, ACCESS_MAINT_TUNNELS,
ACCESS_MEDICAL, ACCESS_RESEARCH, ACCESS_SEC_DOORS, ACCESS_THEATRE, ACCESS_INTERNAL_AFFAIRS)
ACCESS_MEDICAL, ACCESS_RESEARCH, ACCESS_SEC_DOORS, ACCESS_THEATRE, ACCESS_INTERNAL_AFFAIRS)
/obj/item/card/id/blueshield
name = "Blueshield ID"
registered_name = "Blueshield"
icon_state = "blueshield"
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS,
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_EVIDENCE, ACCESS_CHANGE_IDS, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_ENGINEERING_GENERAL, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_INTERNAL_AFFAIRS,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_EXPEDITION, ACCESS_WEAPONS, ACCESS_BLUESHIELD)
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS, ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_EVIDENCE,
ACCESS_CHANGE_IDS, ACCESS_EVA, ACCESS_HEADS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_ENGINEERING_GENERAL,
ACCESS_MORGUE, ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS,
ACCESS_INTERNAL_AFFAIRS, ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_EXPEDITION, ACCESS_WEAPONS, ACCESS_BLUESHIELD)
/obj/item/card/id/magistrate
name = "Magistrate ID"
registered_name = "Magistrate"
icon_state = "magistrate"
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS,
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_EVIDENCE, ACCESS_CHANGE_IDS, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_ENGINEERING_GENERAL, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_INTERNAL_AFFAIRS,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_EXPEDITION, ACCESS_MAGISTRATE)
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS, ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_EVIDENCE, ACCESS_CHANGE_IDS,
ACCESS_EVA, ACCESS_HEADS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_ENGINEERING_GENERAL, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_INTERNAL_AFFAIRS, ACCESS_THEATRE,
ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION, ACCESS_CLOWN, ACCESS_MIME, ACCESS_RC_ANNOUNCE,
ACCESS_KEYCARD_AUTH, ACCESS_EXPEDITION, ACCESS_MAGISTRATE)
// MARK: Service
/obj/item/card/id/assistant
name = "Assistant ID"
registered_name = "Assistant"
@@ -752,11 +778,7 @@
icon_state = "janitor"
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE)
/obj/item/card/id/explorer
name = "Explorer ID"
registered_name = "Explorer"
icon_state = "explorer"
/// MARK: Misc. IDs
/obj/item/card/id/rainbow
name = "Rainbow ID"
icon_state = "rainbow"
@@ -904,7 +926,7 @@
var/datum/ui_module/id_card_modifier/ui = new(target = src)
ui.ui_interact(usr)
// Decals
// MARK: Decals
/obj/item/id_decal
name = "identification card decal"
desc = "A nano-cellophane wrap that molds to an ID card to make it look snazzy."
+6
View File
@@ -440,6 +440,12 @@ details_url = "https://iphub.info/?ip="
[job_configuration]
# This section contains information on job configuartion, as well as the jon amounts
# Will the crew be given extended access if the manifest count is low enough?
allow_skeleton_crew_access = true
# Number of crew on the manifest needed to activate skeleton crew access
skeleton_crew_threshold = 30
# Number of crew on the manifest needed to disable skeleton crew access
skeleton_crew_escape_threshold = 35
# Require account agre restrictions for job? Requires the database
restrict_jobs_on_account_age = false
# Allow admins to bypass all job age restrictions