diff --git a/code/controllers/configuration/sections/job_configuration.dm b/code/controllers/configuration/sections/job_configuration.dm index 41cbb019146..fb8c167d8af 100644 --- a/code/controllers/configuration/sections/job_configuration.dm +++ b/code/controllers/configuration/sections/job_configuration.dm @@ -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"]) diff --git a/code/controllers/subsystem/SSjobs.dm b/code/controllers/subsystem/SSjobs.dm index 77525a04b99..387ba47ffa7 100644 --- a/code/controllers/subsystem/SSjobs.dm +++ b/code/controllers/subsystem/SSjobs.dm @@ -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) diff --git a/code/game/jobs/job/engineering_jobs.dm b/code/game/jobs/job/engineering_jobs.dm index 3333a464c85..ecfe80c6166 100644 --- a/code/game/jobs/job/engineering_jobs.dm +++ b/code/game/jobs/job/engineering_jobs.dm @@ -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) diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index bef49862a4f..0667209b114 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -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) diff --git a/code/game/jobs/job/medical_jobs.dm b/code/game/jobs/job/medical_jobs.dm index 9fa18f11be0..0fb33589675 100644 --- a/code/game/jobs/job/medical_jobs.dm +++ b/code/game/jobs/job/medical_jobs.dm @@ -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 diff --git a/code/game/jobs/job/science_jobs.dm b/code/game/jobs/job/science_jobs.dm index c936916dc40..d3037a16a74 100644 --- a/code/game/jobs/job/science_jobs.dm +++ b/code/game/jobs/job/science_jobs.dm @@ -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 diff --git a/code/game/jobs/job/security_jobs.dm b/code/game/jobs/job/security_jobs.dm index 0d1755f1d36..533cbcbbee8 100644 --- a/code/game/jobs/job/security_jobs.dm +++ b/code/game/jobs/job/security_jobs.dm @@ -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) diff --git a/code/game/jobs/job/supervisor.dm b/code/game/jobs/job/supervisor.dm index 1bdf20f4d3b..4fb3d6d97ce 100644 --- a/code/game/jobs/job/supervisor.dm +++ b/code/game/jobs/job/supervisor.dm @@ -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)." diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index 12ab3dd8bf2..253b6e69d01 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -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 diff --git a/code/game/machinery/computer/id_card_console.dm b/code/game/machinery/computer/id_card_console.dm index fd6ae48b42d..d71dd54cab0 100644 --- a/code/game/machinery/computer/id_card_console.dm +++ b/code/game/machinery/computer/id_card_console.dm @@ -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() diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index e39582a67f1..2a64586d606 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -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 @@ "} /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." diff --git a/config/example/config.toml b/config/example/config.toml index 3ac5921d3a3..4b1f16fbcca 100644 --- a/config/example/config.toml +++ b/config/example/config.toml @@ -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