mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 12:41:09 +01:00
Fixes ID trim singletons ignoring config flags. (#57406)
This commit is contained in:
@@ -48,6 +48,23 @@ SUBSYSTEM_DEF(id_access)
|
||||
|
||||
return ..()
|
||||
|
||||
/**
|
||||
* Called by [/datum/controller/subsystem/ticker/proc/setup]
|
||||
*
|
||||
* This runs through every /datum/id_trim/job singleton and ensures that its access is setup according to
|
||||
* appropriate config entries.
|
||||
*/
|
||||
/datum/controller/subsystem/id_access/proc/refresh_job_trim_singletons()
|
||||
for(var/trim in typesof(/datum/id_trim/job))
|
||||
var/datum/id_trim/job/job_trim = trim_singletons_by_path[trim]
|
||||
|
||||
if(QDELETED(job_trim))
|
||||
stack_trace("Trim \[[trim]\] missing from trim singleton list. Reinitialising this trim.")
|
||||
trim_singletons_by_path[trim] = new trim()
|
||||
continue
|
||||
|
||||
job_trim.refresh_trim_access()
|
||||
|
||||
/// Build access flag lists.
|
||||
/datum/controller/subsystem/id_access/proc/setup_access_flags()
|
||||
accesses_by_flag["[ACCESS_FLAG_COMMON]"] = COMMON_ACCESS
|
||||
|
||||
@@ -262,6 +262,13 @@ SUBSYSTEM_DEF(ticker)
|
||||
else
|
||||
message_admins("<span class='notice'>DEBUG: Bypassing prestart checks...</span>")
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
// There may be various config settings that have been set or modified by this point.
|
||||
// This is the point of no return before spawning in new players, let's run over the
|
||||
// job trim singletons and update them based on any config settings.
|
||||
SSid_access.refresh_job_trim_singletons()
|
||||
|
||||
CHECK_TICK
|
||||
if(hide_mode)
|
||||
var/list/modes = new
|
||||
|
||||
+94
-59
@@ -6,9 +6,14 @@
|
||||
/// ID Trims for station jobs.
|
||||
/datum/id_trim/job
|
||||
trim_state = "trim_assistant"
|
||||
/// Minimal access is the non-wildcard access from the base id_trim but is applied when minimal access flags are set.
|
||||
|
||||
/// The access the card should have when CONFIG_GET(flag/jobs_have_minimal_access) is FALSE.
|
||||
var/list/full_access = list()
|
||||
/// The wildcard_access the card should have when CONFIG_GET(flag/jobs_have_minimal_access) is FALSE.
|
||||
var/list/full_wildcard_access = list()
|
||||
/// The access the card should have when CONFIG_GET(flag/jobs_have_minimal_access) is TRUE.
|
||||
var/list/minimal_access = list()
|
||||
/// Minimal access is the wildcard access from the base id_trim but is applied when minimal access flags are set.
|
||||
/// The wildcard_access the card should have when CONFIG_GET(flag/jobs_have_minimal_access) is TRUE.
|
||||
var/list/minimal_wildcard_access = list()
|
||||
/// Static list. Cache of any mapping config job changes.
|
||||
var/static/list/job_changes
|
||||
@@ -23,48 +28,66 @@
|
||||
job_changes = SSmapping.config.job_changes
|
||||
|
||||
if(!length(job_changes) || !config_job)
|
||||
refresh_trim_access()
|
||||
return
|
||||
|
||||
var/list/access_changes = job_changes[config_job]
|
||||
|
||||
if(!length(access_changes))
|
||||
refresh_trim_access()
|
||||
return
|
||||
|
||||
if(islist(access_changes["additional_access"]))
|
||||
access |= access_changes["additional_access"]
|
||||
full_access |= access_changes["additional_access"]
|
||||
if(islist(access_changes["additional_minimal_access"]))
|
||||
minimal_access |= access_changes["additional_minimal_access"]
|
||||
if(islist(access_changes["additional_wildcard_access"]))
|
||||
wildcard_access |= access_changes["additional_wildcard_access"]
|
||||
full_wildcard_access |= access_changes["additional_wildcard_access"]
|
||||
if(islist(access_changes["additional_minimal_wildcard_access"]))
|
||||
minimal_wildcard_access |= access_changes["additional_minimal_wildcard_access"]
|
||||
|
||||
// If there's no config or minimal access is set, let's overwrite the accesses accordingly.
|
||||
refresh_trim_access()
|
||||
|
||||
/**
|
||||
* Goes through various non-map config settings and modifies the trim's access based on this.
|
||||
*
|
||||
* Returns TRUE if the config is loaded, FALSE otherwise.
|
||||
*/
|
||||
/datum/id_trim/job/proc/refresh_trim_access()
|
||||
// If there's no config loaded then assume minimal access.
|
||||
if(!config)
|
||||
access = minimal_access.Copy()
|
||||
wildcard_access = minimal_wildcard_access.Copy()
|
||||
return FALSE
|
||||
|
||||
// There is a config loaded. Check for the jobs_have_minimal_access flag being set.
|
||||
if(CONFIG_GET(flag/jobs_have_minimal_access))
|
||||
access = minimal_access.Copy()
|
||||
wildcard_access = minimal_wildcard_access.Copy()
|
||||
else
|
||||
if(CONFIG_GET(flag/jobs_have_minimal_access))
|
||||
access = minimal_access.Copy()
|
||||
wildcard_access = minimal_wildcard_access.Copy()
|
||||
access = full_access.Copy()
|
||||
wildcard_access = full_wildcard_access.Copy()
|
||||
|
||||
// If the config has global maint access set, we always want to add maint access.
|
||||
if(CONFIG_GET(flag/everyone_has_maint_access))
|
||||
access |= list(ACCESS_MAINT_TUNNELS)
|
||||
// If the config has global maint access set, we always want to add maint access.
|
||||
if(CONFIG_GET(flag/everyone_has_maint_access))
|
||||
access |= list(ACCESS_MAINT_TUNNELS)
|
||||
|
||||
return ..()
|
||||
return TRUE
|
||||
|
||||
/datum/id_trim/job/assistant
|
||||
assignment = "Assistant"
|
||||
trim_state = "trim_assistant"
|
||||
access = list(ACCESS_MAINT_TUNNELS)
|
||||
full_access = list(ACCESS_MAINT_TUNNELS)
|
||||
minimal_access = list()
|
||||
config_job = "assistant"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
|
||||
|
||||
/datum/id_trim/job/assistant/New()
|
||||
/datum/id_trim/job/assistant/refresh_trim_access()
|
||||
. = ..()
|
||||
|
||||
if(!.)
|
||||
return
|
||||
|
||||
// Config has assistant maint access set.
|
||||
if(CONFIG_GET(flag/assistants_have_maint_access))
|
||||
access |= list(ACCESS_MAINT_TUNNELS)
|
||||
@@ -72,7 +95,7 @@
|
||||
/datum/id_trim/job/atmospheric_technician
|
||||
assignment = "Atmospheric Technician"
|
||||
trim_state = "trim_atmospherictechnician"
|
||||
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_ENGINE, ACCESS_AUX_BASE,
|
||||
full_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_ENGINE, ACCESS_AUX_BASE,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS, ACCESS_AUX_BASE, ACCESS_CONSTRUCTION, ACCESS_MECH_ENGINE,
|
||||
ACCESS_MINERAL_STOREROOM)
|
||||
@@ -82,7 +105,7 @@
|
||||
/datum/id_trim/job/bartender
|
||||
assignment = "Bartender"
|
||||
trim_state = "trim_bartender"
|
||||
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE)
|
||||
full_access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE)
|
||||
minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE)
|
||||
config_job = "bartender"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
|
||||
@@ -90,7 +113,7 @@
|
||||
/datum/id_trim/job/botanist
|
||||
assignment = "Botanist"
|
||||
trim_state = "trim_botanist"
|
||||
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
|
||||
full_access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
|
||||
config_job = "botanist"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
|
||||
@@ -101,19 +124,19 @@
|
||||
config_job = "captain"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_CHANGE_IDS)
|
||||
|
||||
/// Captain gets all station accesses hardcoded in because it's the captain.
|
||||
/// Captain gets all station accesses hardcoded in because it's the Captain.
|
||||
/datum/id_trim/job/captain/New()
|
||||
. = ..()
|
||||
|
||||
access |= (SSid_access.get_flag_access_list(ACCESS_FLAG_COMMON) + SSid_access.get_flag_access_list(ACCESS_FLAG_COMMAND))
|
||||
wildcard_access |= (SSid_access.get_flag_access_list(ACCESS_FLAG_PRV_COMMAND) + SSid_access.get_flag_access_list(ACCESS_FLAG_CAPTAIN))
|
||||
full_access |= (SSid_access.get_flag_access_list(ACCESS_FLAG_COMMON) + SSid_access.get_flag_access_list(ACCESS_FLAG_COMMAND))
|
||||
full_wildcard_access |= (SSid_access.get_flag_access_list(ACCESS_FLAG_PRV_COMMAND) + SSid_access.get_flag_access_list(ACCESS_FLAG_CAPTAIN))
|
||||
minimal_access |= (SSid_access.get_flag_access_list(ACCESS_FLAG_COMMON) + SSid_access.get_flag_access_list(ACCESS_FLAG_COMMAND))
|
||||
minimal_wildcard_access |= (SSid_access.get_flag_access_list(ACCESS_FLAG_PRV_COMMAND) + SSid_access.get_flag_access_list(ACCESS_FLAG_CAPTAIN))
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/id_trim/job/cargo_technician
|
||||
assignment = "Cargo Technician"
|
||||
trim_state = "trim_cargotechnician"
|
||||
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
|
||||
full_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM, ACCESS_MECH_MINING)
|
||||
config_job = "cargo_technician"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
|
||||
@@ -121,7 +144,7 @@
|
||||
/datum/id_trim/job/chaplain
|
||||
assignment = "Chaplain"
|
||||
trim_state = "trim_chaplain"
|
||||
access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE)
|
||||
full_access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE)
|
||||
minimal_access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE)
|
||||
config_job = "chaplain"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
|
||||
@@ -129,7 +152,7 @@
|
||||
/datum/id_trim/job/chemist
|
||||
assignment = "Chemist"
|
||||
trim_state = "trim_chemist"
|
||||
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_PHARMACY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM)
|
||||
full_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_PHARMACY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_PHARMACY)
|
||||
config_job = "chemist"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_CMO, ACCESS_CHANGE_IDS)
|
||||
@@ -137,11 +160,11 @@
|
||||
/datum/id_trim/job/chief_engineer
|
||||
assignment = "Chief Engineer"
|
||||
trim_state = "trim_chiefengineer"
|
||||
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
full_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EVA, ACCESS_AUX_BASE,
|
||||
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT, ACCESS_MECH_ENGINE,
|
||||
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM, ACCESS_TELEPORTER)
|
||||
wildcard_access = list(ACCESS_CE)
|
||||
full_wildcard_access = list(ACCESS_CE)
|
||||
minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EVA, ACCESS_AUX_BASE,
|
||||
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT, ACCESS_MECH_ENGINE,
|
||||
@@ -153,10 +176,10 @@
|
||||
/datum/id_trim/job/chief_medical_officer
|
||||
assignment = "Chief Medical Officer"
|
||||
trim_state = "trim_chiefmedicalofficer"
|
||||
access = list(ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_MORGUE, ACCESS_PHARMACY, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM,
|
||||
full_access = list(ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_MORGUE, ACCESS_PHARMACY, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM,
|
||||
ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, ACCESS_MECH_MEDICAL,
|
||||
ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_EVA, ACCESS_TELEPORTER)
|
||||
wildcard_access = list(ACCESS_CMO)
|
||||
full_wildcard_access = list(ACCESS_CMO)
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_MORGUE, ACCESS_PHARMACY, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM,
|
||||
ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, ACCESS_MECH_MEDICAL,
|
||||
ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_EVA)
|
||||
@@ -167,7 +190,7 @@
|
||||
/datum/id_trim/job/clown
|
||||
assignment = "Clown"
|
||||
trim_state = "trim_clown"
|
||||
access = list(ACCESS_THEATRE)
|
||||
full_access = list(ACCESS_THEATRE)
|
||||
minimal_access = list(ACCESS_THEATRE)
|
||||
config_job = "clown"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
|
||||
@@ -175,7 +198,7 @@
|
||||
/datum/id_trim/job/cook
|
||||
assignment = "Cook"
|
||||
trim_state = "trim_cook"
|
||||
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
|
||||
full_access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
|
||||
config_job = "cook"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
|
||||
@@ -183,7 +206,7 @@
|
||||
/datum/id_trim/job/curator
|
||||
assignment = "Curator"
|
||||
trim_state = "trim_curator"
|
||||
access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION)
|
||||
full_access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION)
|
||||
minimal_access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION)
|
||||
config_job = "curator"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
|
||||
@@ -191,14 +214,17 @@
|
||||
/datum/id_trim/job/detective
|
||||
assignment = "Detective"
|
||||
trim_state = "trim_detective"
|
||||
access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
|
||||
full_access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
|
||||
config_job = "detective"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOS, ACCESS_CHANGE_IDS)
|
||||
|
||||
/datum/id_trim/job/detective/New()
|
||||
/datum/id_trim/job/detective/refresh_trim_access()
|
||||
. = ..()
|
||||
|
||||
if(!.)
|
||||
return
|
||||
|
||||
// Config check for if sec has maint access.
|
||||
if(CONFIG_GET(flag/security_has_maint_access))
|
||||
access |= list(ACCESS_MAINT_TUNNELS)
|
||||
@@ -206,7 +232,7 @@
|
||||
/datum/id_trim/job/geneticist
|
||||
assignment = "Geneticist"
|
||||
trim_state = "trim_geneticist"
|
||||
access = list(ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_MECH_SCIENCE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_ROBOTICS, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_RND)
|
||||
full_access = list(ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_MECH_SCIENCE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_ROBOTICS, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_RND)
|
||||
minimal_access = list(ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_MECH_SCIENCE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_RND)
|
||||
config_job = "geneticist"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_RD, ACCESS_CHANGE_IDS)
|
||||
@@ -214,14 +240,14 @@
|
||||
/datum/id_trim/job/head_of_personnel
|
||||
assignment = "Head of Personnel"
|
||||
trim_state = "trim_headofpersonnel"
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
|
||||
full_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
|
||||
ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
|
||||
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
|
||||
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
|
||||
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION,
|
||||
ACCESS_MECH_MINING, ACCESS_MECH_ENGINE, ACCESS_MECH_SCIENCE, ACCESS_MECH_SECURITY, ACCESS_MECH_MEDICAL,
|
||||
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE, ACCESS_TELEPORTER)
|
||||
wildcard_access = list(ACCESS_HOP)
|
||||
full_wildcard_access = list(ACCESS_HOP)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
|
||||
ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
|
||||
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
|
||||
@@ -236,11 +262,11 @@
|
||||
/datum/id_trim/job/head_of_security
|
||||
assignment = "Head of Security"
|
||||
trim_state = "trim_headofsecurity"
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY,
|
||||
full_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_AUX_BASE,
|
||||
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, ACCESS_EVA, ACCESS_TELEPORTER,
|
||||
ACCESS_HEADS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
wildcard_access = list(ACCESS_HOS)
|
||||
full_wildcard_access = list(ACCESS_HOS)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_AUX_BASE,
|
||||
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, ACCESS_EVA,
|
||||
@@ -249,9 +275,12 @@
|
||||
config_job = "head_of_security"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_CHANGE_IDS)
|
||||
|
||||
/datum/id_trim/job/head_of_security/New()
|
||||
/datum/id_trim/job/head_of_security/refresh_trim_access()
|
||||
. = ..()
|
||||
|
||||
if(!.)
|
||||
return
|
||||
|
||||
// Config check for if sec has maint access.
|
||||
if(CONFIG_GET(flag/security_has_maint_access))
|
||||
access |= list(ACCESS_MAINT_TUNNELS)
|
||||
@@ -259,7 +288,7 @@
|
||||
/datum/id_trim/job/janitor
|
||||
assignment = "Janitor"
|
||||
trim_state = "trim_janitor"
|
||||
access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
full_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
config_job = "janitor"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
|
||||
@@ -267,7 +296,7 @@
|
||||
/datum/id_trim/job/lawyer
|
||||
assignment = "Lawyer"
|
||||
trim_state = "trim_lawyer"
|
||||
access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS)
|
||||
full_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS)
|
||||
minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS)
|
||||
config_job = "lawyer"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_HOS, ACCESS_CHANGE_IDS)
|
||||
@@ -275,7 +304,7 @@
|
||||
/datum/id_trim/job/medical_doctor
|
||||
assignment = "Medical Doctor"
|
||||
trim_state = "trim_medicaldoctor"
|
||||
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_PHARMACY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM)
|
||||
full_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_PHARMACY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_PHARMACY)
|
||||
config_job = "medical_doctor"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_CMO, ACCESS_CHANGE_IDS)
|
||||
@@ -283,7 +312,7 @@
|
||||
/datum/id_trim/job/mime
|
||||
assignment = "Mime"
|
||||
trim_state = "trim_mime"
|
||||
access = list(ACCESS_THEATRE)
|
||||
full_access = list(ACCESS_THEATRE)
|
||||
minimal_access = list(ACCESS_THEATRE)
|
||||
config_job = "mime"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
|
||||
@@ -291,7 +320,7 @@
|
||||
/datum/id_trim/job/paramedic
|
||||
assignment = "Paramedic"
|
||||
trim_state = "trim_paramedic"
|
||||
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS,
|
||||
full_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_EVA, ACCESS_ENGINE, ACCESS_CONSTRUCTION, ACCESS_CARGO, ACCESS_HYDROPONICS, ACCESS_RESEARCH, ACCESS_AUX_BASE)
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS, ACCESS_EVA,
|
||||
ACCESS_ENGINE, ACCESS_CONSTRUCTION, ACCESS_CARGO, ACCESS_HYDROPONICS, ACCESS_RESEARCH, ACCESS_AUX_BASE)
|
||||
@@ -335,7 +364,7 @@
|
||||
/datum/id_trim/job/psychologist
|
||||
assignment = "Psychologist"
|
||||
trim_state = "trim_psychologist"
|
||||
access = list(ACCESS_MEDICAL, ACCESS_PSYCHOLOGY)
|
||||
full_access = list(ACCESS_MEDICAL, ACCESS_PSYCHOLOGY)
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_PSYCHOLOGY)
|
||||
config_job = "psychologist"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CMO, ACCESS_CHANGE_IDS)
|
||||
@@ -343,7 +372,7 @@
|
||||
/datum/id_trim/job/quartermaster
|
||||
assignment = "Quartermaster"
|
||||
trim_state = "trim_quartermaster"
|
||||
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT, ACCESS_AUX_BASE)
|
||||
full_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT, ACCESS_AUX_BASE)
|
||||
minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT, ACCESS_AUX_BASE)
|
||||
config_job = "quartermaster"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
|
||||
@@ -351,13 +380,13 @@
|
||||
/datum/id_trim/job/research_director
|
||||
assignment = "Research Director"
|
||||
trim_state = "trim_researchdirector"
|
||||
access = list(ACCESS_HEADS, ACCESS_RND, ACCESS_GENETICS, ACCESS_MORGUE,
|
||||
full_access = list(ACCESS_HEADS, ACCESS_RND, ACCESS_GENETICS, ACCESS_MORGUE,
|
||||
ACCESS_TOXINS, ACCESS_TELEPORTER, ACCESS_SEC_DOORS, ACCESS_MECH_SCIENCE,
|
||||
ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD,
|
||||
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM,
|
||||
ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK,
|
||||
ACCESS_TOXINS_STORAGE, ACCESS_AUX_BASE, ACCESS_EVA)
|
||||
wildcard_access = list(ACCESS_RD)
|
||||
full_wildcard_access = list(ACCESS_RD)
|
||||
minimal_access = list(ACCESS_HEADS, ACCESS_RND, ACCESS_GENETICS, ACCESS_MORGUE,
|
||||
ACCESS_TOXINS, ACCESS_TELEPORTER, ACCESS_SEC_DOORS, ACCESS_MECH_SCIENCE,
|
||||
ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD,
|
||||
@@ -371,7 +400,7 @@
|
||||
/datum/id_trim/job/roboticist
|
||||
assignment = "Roboticist"
|
||||
trim_state = "trim_roboticist"
|
||||
access = list(ACCESS_ROBOTICS, ACCESS_RND, ACCESS_TOXINS, ACCESS_TOXINS_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_MECH_SCIENCE,
|
||||
full_access = list(ACCESS_ROBOTICS, ACCESS_RND, ACCESS_TOXINS, ACCESS_TOXINS_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_MECH_SCIENCE,
|
||||
ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_XENOBIOLOGY, ACCESS_GENETICS, ACCESS_AUX_BASE)
|
||||
minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MECH_SCIENCE, ACCESS_MINERAL_STOREROOM,
|
||||
ACCESS_RND, ACCESS_AUX_BASE)
|
||||
@@ -381,7 +410,7 @@
|
||||
/datum/id_trim/job/scientist
|
||||
assignment = "Scientist"
|
||||
trim_state = "trim_scientist"
|
||||
access = list(ACCESS_ROBOTICS, ACCESS_RND, ACCESS_TOXINS, ACCESS_TOXINS_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY,
|
||||
full_access = list(ACCESS_ROBOTICS, ACCESS_RND, ACCESS_TOXINS, ACCESS_TOXINS_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY,
|
||||
ACCESS_MECH_SCIENCE, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_GENETICS, ACCESS_AUX_BASE)
|
||||
minimal_access = list(ACCESS_RND, ACCESS_TOXINS, ACCESS_TOXINS_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MECH_SCIENCE,
|
||||
ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE)
|
||||
@@ -392,16 +421,19 @@
|
||||
/datum/id_trim/job/security_officer
|
||||
assignment = "Security Officer"
|
||||
trim_state = "trim_securityofficer"
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM)
|
||||
full_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY, ACCESS_MINERAL_STOREROOM)
|
||||
/// List of bonus departmental accesses that departmental sec officers get.
|
||||
var/department_access = list()
|
||||
config_job = "security_officer"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOS, ACCESS_CHANGE_IDS)
|
||||
|
||||
/datum/id_trim/job/security_officer/New()
|
||||
/datum/id_trim/job/security_officer/refresh_trim_access()
|
||||
. = ..()
|
||||
|
||||
if(!.)
|
||||
return
|
||||
|
||||
// Config check for if sec has maint access.
|
||||
if(CONFIG_GET(flag/security_has_maint_access))
|
||||
access |= list(ACCESS_MAINT_TUNNELS)
|
||||
@@ -427,21 +459,21 @@
|
||||
/datum/id_trim/job/shaft_miner
|
||||
assignment = "Shaft Miner"
|
||||
trim_state = "trim_shaftminer"
|
||||
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE)
|
||||
full_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE)
|
||||
minimal_access = list(ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE)
|
||||
config_job = "shaft_miner"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
|
||||
|
||||
/// ID card obtained from the mining Disney dollar points vending machine.
|
||||
/datum/id_trim/job/shaft_miner/spare
|
||||
access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MECH_MINING, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM)
|
||||
full_access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MECH_MINING, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MECH_MINING, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM)
|
||||
template_access = null
|
||||
|
||||
/datum/id_trim/job/station_engineer
|
||||
assignment = "Station Engineer"
|
||||
trim_state = "trim_stationengineer"
|
||||
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_ENGINE, ACCESS_AUX_BASE,
|
||||
full_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_ENGINE, ACCESS_AUX_BASE,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_ENGINE, ACCESS_AUX_BASE,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
|
||||
@@ -451,7 +483,7 @@
|
||||
/datum/id_trim/job/virologist
|
||||
assignment = "Virologist"
|
||||
trim_state = "trim_virologist"
|
||||
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM)
|
||||
full_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM)
|
||||
config_job = "virologist"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_CMO, ACCESS_CHANGE_IDS)
|
||||
@@ -459,14 +491,17 @@
|
||||
/datum/id_trim/job/warden
|
||||
assignment = "Warden"
|
||||
trim_state = "trim_warden"
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MECH_SECURITY, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM)
|
||||
full_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MECH_SECURITY, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) // See /datum/job/warden/get_access()
|
||||
config_job = "warden"
|
||||
template_access = list(ACCESS_CAPTAIN, ACCESS_HOS, ACCESS_CHANGE_IDS)
|
||||
|
||||
/datum/id_trim/job/warden/New()
|
||||
/datum/id_trim/job/warden/refresh_trim_access()
|
||||
. = ..()
|
||||
|
||||
if(!.)
|
||||
return
|
||||
|
||||
// Config check for if sec has maint access.
|
||||
if(CONFIG_GET(flag/security_has_maint_access))
|
||||
access |= list(ACCESS_MAINT_TUNNELS)
|
||||
|
||||
Reference in New Issue
Block a user