From f7e12e0adf9d44f06e4a3fcf0e04f5fe86e701ec Mon Sep 17 00:00:00 2001 From: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> Date: Thu, 27 Jan 2022 22:45:20 +0000 Subject: [PATCH] Fixes protected roles getting antagonist (#11016) * 0 * Update code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com> * Update code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com> Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com> --- .../gamemodes/dynamic/dynamic_rulesets.dm | 9 ++ .../dynamic/dynamic_rulesets_latejoin.dm | 68 ++------ .../dynamic/dynamic_rulesets_midround.dm | 83 ++-------- .../dynamic/dynamic_rulesets_roundstart.dm | 147 ++---------------- .../modules/antagonists/code/gamemodes.dm | 17 -- .../modules/protected_roles/code/_job.dm | 5 + .../code/antag_restricted_jobs.dm | 55 +++++++ tgstation.dme | 3 +- 8 files changed, 111 insertions(+), 276 deletions(-) delete mode 100644 modular_skyrat/modules/antagonists/code/gamemodes.dm create mode 100644 modular_skyrat/modules/protected_roles/code/_job.dm create mode 100644 modular_skyrat/modules/protected_roles/code/antag_restricted_jobs.dm diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets.dm b/code/game/gamemodes/dynamic/dynamic_rulesets.dm index 1cd3588e189..b5a47888be0 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets.dm @@ -210,6 +210,15 @@ if(is_banned_from(candidate_client.ckey, BAN_ANTAGONIST)) candidates.Remove(candidate_player) continue + + if(candidate_player.mind.assigned_role.antagonist_restricted) + if(candidate_player.mind.assigned_role.restricted_antagonists) + if(antag_flag in candidate_player.mind.assigned_role.restricted_antagonists) + candidates.Remove(candidate_player) + continue + else //Assume it's all antagonist roles. + candidates.Remove(candidate_player) + continue //SKYRAT EDIT END if(candidate_client.get_remaining_days(minimum_required_age) > 0) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index ea641fd0f77..e8b0063bb0d 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -16,6 +16,22 @@ candidates.Remove(P) else if (!((antag_preference || antag_flag) in P.client.prefs.be_special) || is_banned_from(P.ckey, list(antag_flag_override || antag_flag, ROLE_SYNDICATE))) candidates.Remove(P) + // SKYRAT EDIT ADDITION - PROTECTED JOBS + else if(P.mind.assigned_role.antagonist_restricted) + if(P.mind.assigned_role.restricted_antagonists) + if(antag_flag in P.mind.assigned_role.restricted_antagonists) + candidates.Remove(P) + continue + else //Assume it's all antagonist roles. + candidates.Remove(P) + continue + else if(P.client?.prefs && !P.client.prefs.read_preference(/datum/preference/toggle/be_antag)) + candidates.Remove(P) + continue + else if(is_banned_from(P.client?.ckey, BAN_ANTAGONIST)) + candidates.Remove(P) + continue + // SKYRAT EDIT END /datum/dynamic_ruleset/latejoin/ready(forced = 0) if (!forced) @@ -57,25 +73,6 @@ JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, - // SKYRAT EDIT START - More protected roles - JOB_NT_REP, - JOB_CHIEF_ENGINEER, - JOB_CHIEF_MEDICAL_OFFICER, - JOB_RESEARCH_DIRECTOR, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - JOB_PRISONER, - // SKYRAT EDIT END ) restricted_roles = list( JOB_AI, @@ -112,21 +109,6 @@ JOB_RESEARCH_DIRECTOR, JOB_SECURITY_OFFICER, JOB_WARDEN, - // SKYRAT EDIT START - More protected roles - JOB_NT_REP, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - // SKYRAT EDIT END ) enemy_roles = list( JOB_AI, @@ -219,24 +201,6 @@ JOB_PRISONER, JOB_SECURITY_OFFICER, JOB_WARDEN, - // SKYRAT EDIT START - More protected roles - JOB_NT_REP, - JOB_CHIEF_ENGINEER, - JOB_CHIEF_MEDICAL_OFFICER, - JOB_RESEARCH_DIRECTOR, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - // SKYRAT EDIT END ) restricted_roles = list( JOB_AI, diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 82ec52c53de..01df18e5f0b 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -67,6 +67,16 @@ if (M.mind.assigned_role.title in restricted_roles) // Does their job allow it? trimmed_list.Remove(M) continue + // SKYRAT EDIT ADDITION - PROTECTED JOBS + if(M.mind.assigned_role.antagonist_restricted) + if(M.mind.assigned_role.restricted_antagonists) + if(antag_flag in M.mind.assigned_role.restricted_antagonists) + trimmed_list.Remove(M) + continue + else //Assume it's all antagonist roles. + trimmed_list.Remove(M) + continue + // SKYRAT EDIT END if ((exclusive_roles.len > 0) && !(M.mind.assigned_role.title in exclusive_roles)) // Is the rule exclusive to their job? trimmed_list.Remove(M) continue @@ -200,24 +210,6 @@ JOB_PRISONER, JOB_SECURITY_OFFICER, JOB_WARDEN, - // SKYRAT EDIT START - More protected roles - JOB_NT_REP, - JOB_CHIEF_ENGINEER, - JOB_CHIEF_MEDICAL_OFFICER, - JOB_RESEARCH_DIRECTOR, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - // SKYRAT EDIT END ) restricted_roles = list( JOB_AI, @@ -301,23 +293,6 @@ JOB_RESEARCH_DIRECTOR, JOB_SECURITY_OFFICER, JOB_WARDEN, - // SKYRAT EDIT START - More protected roles - JOB_NT_REP, - JOB_CHIEF_ENGINEER, - JOB_CHIEF_MEDICAL_OFFICER, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - // SKYRAT EDIT END ) required_candidates = 3 weight = 2 @@ -389,11 +364,6 @@ JOB_SCIENTIST, JOB_SECURITY_OFFICER, JOB_WARDEN, - // SKYRAT EDIT START - More enemy roles - JOB_DETECTIVE, - JOB_CAPTAIN, - JOB_BLUESHIELD, - // SKYRAT EDIT END ) exclusive_roles = list(JOB_AI) required_enemies = list(4,4,4,4,4,4,2,2,2,0) @@ -562,24 +532,6 @@ JOB_PRISONER, JOB_SECURITY_OFFICER, JOB_WARDEN, - // SKYRAT EDIT START - More protected roles - JOB_NT_REP, - JOB_CHIEF_ENGINEER, - JOB_CHIEF_MEDICAL_OFFICER, - JOB_RESEARCH_DIRECTOR, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - // SKYRAT EDIT END ) restricted_roles = list( JOB_AI, @@ -1042,21 +994,6 @@ JOB_PRISONER, JOB_SECURITY_OFFICER, JOB_WARDEN, - // SKYRAT EDIT START - RESTRICTING ROLES - JOB_NT_REP, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - // SKYRAT EDIT END ) restricted_roles = list( JOB_AI, diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index e4db333f6a6..6092ec580fb 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -22,25 +22,6 @@ restricted_roles = list( JOB_AI, JOB_CYBORG, - // SKYRAT EDIT START - More restricted roles - JOB_NT_REP, - JOB_HEAD_OF_PERSONNEL, - JOB_CHIEF_ENGINEER, - JOB_CHIEF_MEDICAL_OFFICER, - JOB_RESEARCH_DIRECTOR, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - // SKYRAT EDIT END ) required_candidates = 1 weight = 5 @@ -137,30 +118,10 @@ restricted_roles = list( JOB_AI, JOB_CYBORG, - // SKYRAT EDIT START - More restricted roles - JOB_NT_REP, - JOB_HEAD_OF_PERSONNEL, - JOB_CHIEF_ENGINEER, - JOB_CHIEF_MEDICAL_OFFICER, - JOB_RESEARCH_DIRECTOR, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - JOB_PRISONER, - // SKYRAT EDIT END ) required_candidates = 2 - weight = 4 - cost = 15 + weight = 2 + cost = 12 scaling_cost = 15 requirements = list(40,30,30,20,20,15,15,15,10,10) antag_cap = 2 // Can pick 3 per team, but rare enough it doesn't matter. @@ -216,25 +177,6 @@ restricted_roles = list( JOB_AI, JOB_CYBORG, - // SKYRAT EDIT START - More restricted roles - JOB_NT_REP, - JOB_HEAD_OF_PERSONNEL, - JOB_CHIEF_ENGINEER, - JOB_CHIEF_MEDICAL_OFFICER, - JOB_RESEARCH_DIRECTOR, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - // SKYRAT EDIT END ) required_candidates = 1 weight = 3 @@ -284,24 +226,6 @@ restricted_roles = list( JOB_AI, JOB_CYBORG, - // SKYRAT EDIT START - More restricted roles - JOB_NT_REP, - JOB_CHIEF_ENGINEER, - JOB_CHIEF_MEDICAL_OFFICER, - JOB_RESEARCH_DIRECTOR, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - // SKYRAT EDIT END ) required_candidates = 1 weight = 3 @@ -395,11 +319,18 @@ antag_flag = ROLE_CULTIST antag_datum = /datum/antagonist/cult minimum_required_age = 14 - restricted_roles = list(JOB_AI, JOB_CYBORG, JOB_PRISONER, - JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_CIVIL_DISPUTES_OFFICER, JOB_SECURITY_SERGEANT, - JOB_CAPTAIN, JOB_VANGUARD_OPERATIVE, JOB_NT_REP, JOB_BLUESHIELD, - JOB_ORDERLY, JOB_BOUNCER, JOB_CUSTOMS_AGENT, JOB_ENGINEERING_GUARD, JOB_SCIENCE_GUARD - ) // SKYRAT EDIT ADD - ALL AFTER JOB_PRISONER + restricted_roles = list( + JOB_AI, + JOB_CAPTAIN, + JOB_CHAPLAIN, + JOB_CYBORG, + JOB_DETECTIVE, + JOB_HEAD_OF_PERSONNEL, + JOB_HEAD_OF_SECURITY, + JOB_PRISONER, + JOB_SECURITY_OFFICER, + JOB_WARDEN, + ) required_candidates = 2 weight = 3 cost = 20 @@ -558,22 +489,6 @@ JOB_RESEARCH_DIRECTOR, JOB_SECURITY_OFFICER, JOB_WARDEN, - // SKYRAT EDIT START - More restricted roles - JOB_NT_REP, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - JOB_PRISONER, - // SKYRAT EDIT END ) required_candidates = 3 weight = 3 @@ -670,25 +585,6 @@ JOB_RESEARCH_DIRECTOR, JOB_SECURITY_OFFICER, JOB_WARDEN, - // SKYRAT EDIT START - More restricted roles - JOB_NT_REP, - JOB_CHIEF_ENGINEER, - JOB_CHIEF_MEDICAL_OFFICER, - JOB_RESEARCH_DIRECTOR, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - JOB_PRISONER, - // SKYRAT EDIT END ) required_candidates = 3 weight = 1 @@ -820,21 +716,6 @@ JOB_PRISONER, JOB_SECURITY_OFFICER, JOB_WARDEN, - // SKYRAT EDIT START - RESTRICTING ROLES - JOB_NT_REP, - JOB_QUARTERMASTER, - JOB_BLUESHIELD, - JOB_SECURITY_SERGEANT, - JOB_SECURITY_MEDIC, - JOB_CORRECTIONS_OFFICER, - JOB_CIVIL_DISPUTES_OFFICER, - JOB_ORDERLY, - JOB_BOUNCER, - JOB_CUSTOMS_AGENT, - JOB_ENGINEERING_GUARD, - JOB_SCIENCE_GUARD, - JOB_VANGUARD_OPERATIVE, - // SKYRAT EDIT END ) restricted_roles = list( JOB_AI, diff --git a/modular_skyrat/modules/antagonists/code/gamemodes.dm b/modular_skyrat/modules/antagonists/code/gamemodes.dm deleted file mode 100644 index 842aa8b0e67..00000000000 --- a/modular_skyrat/modules/antagonists/code/gamemodes.dm +++ /dev/null @@ -1,17 +0,0 @@ -/datum/dynamic_ruleset/roundstart/traitor - protected_roles = list(JOB_PRISONER, JOB_BLUESHIELD, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_VANGUARD_OPERATIVE) - -/datum/dynamic_ruleset/roundstart/traitorbro - protected_roles = list(JOB_PRISONER, JOB_BLUESHIELD, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_VANGUARD_OPERATIVE) - -/datum/dynamic_ruleset/roundstart/changeling - protected_roles = list(JOB_PRISONER, JOB_BLUESHIELD, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_VANGUARD_OPERATIVE) - -/datum/dynamic_ruleset/roundstart/heretics - protected_roles = list(JOB_PRISONER, JOB_BLUESHIELD, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_VANGUARD_OPERATIVE) - -/datum/dynamic_ruleset/midround/autotraitor - protected_roles = list(JOB_PRISONER, JOB_BLUESHIELD, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_VANGUARD_OPERATIVE) - -/datum/dynamic_ruleset/latejoin/infiltrator - protected_roles = list(JOB_PRISONER, JOB_BLUESHIELD, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_VANGUARD_OPERATIVE) diff --git a/modular_skyrat/modules/protected_roles/code/_job.dm b/modular_skyrat/modules/protected_roles/code/_job.dm new file mode 100644 index 00000000000..ebfbe39643d --- /dev/null +++ b/modular_skyrat/modules/protected_roles/code/_job.dm @@ -0,0 +1,5 @@ +/datum/job + /// Do we allow this job to be an antag of any kind? + var/antagonist_restricted = FALSE + /// If we restrict this job from antagonists, what antags? Leave blank for all antags. + var/list/restricted_antagonists diff --git a/modular_skyrat/modules/protected_roles/code/antag_restricted_jobs.dm b/modular_skyrat/modules/protected_roles/code/antag_restricted_jobs.dm new file mode 100644 index 00000000000..4a72f9e2262 --- /dev/null +++ b/modular_skyrat/modules/protected_roles/code/antag_restricted_jobs.dm @@ -0,0 +1,55 @@ +/** + * Job antagonist restriction file + * + * Add relative restrictions to any jobs that you wish to prevent from being + * an antagonist. If you set antagonist_restricted to true without setting restricted_antagonist, + * then the job will be restricted from all antagonists. + */ + +/datum/job/nanotrasen_representative + antagonist_restricted = TRUE + +/datum/job/head_of_personnel + antagonist_restricted = TRUE + +/datum/job/chief_engineer + antagonist_restricted = TRUE + +/datum/job/chief_medical_officer + antagonist_restricted = TRUE + +/datum/job/research_director + antagonist_restricted = TRUE + +/datum/job/quartermaster + antagonist_restricted = TRUE + +/datum/job/blueshield + antagonist_restricted = TRUE + +/datum/job/security_sergeant + antagonist_restricted = TRUE + +/datum/job/security_medic + antagonist_restricted = TRUE + +/datum/job/brigoff + antagonist_restricted = TRUE + +/datum/job/junior_officer + antagonist_restricted = TRUE + +/datum/job/orderly + antagonist_restricted = TRUE + +/datum/job/bouncer + antagonist_restricted = TRUE + +/datum/job/customs_agent + antagonist_restricted = TRUE + +/datum/job/engineering_guard + antagonist_restricted = TRUE + +/datum/job/science_guard + antagonist_restricted = TRUE diff --git a/tgstation.dme b/tgstation.dme index 964b137e610..fe7ea80d132 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4472,7 +4472,6 @@ #include "modular_skyrat\modules\alternative_job_titles\code\job.dm" #include "modular_skyrat\modules\ammo_workbench\code\ammo_workbench.dm" #include "modular_skyrat\modules\ammo_workbench\code\design_disks.dm" -#include "modular_skyrat\modules\antagonists\code\gamemodes.dm" #include "modular_skyrat\modules\antagonists\eldritch_cult\knowledge\ash_lore_skyrat.dm" #include "modular_skyrat\modules\antagonists\eldritch_cult\knowledge\flesh_lore_skyrat.dm" #include "modular_skyrat\modules\apocolypse_of_scythes\code\scythes.dm" @@ -5179,6 +5178,8 @@ #include "modular_skyrat\modules\prison_transport\code\outfits.dm" #include "modular_skyrat\modules\prison_transport\code\shuttle.dm" #include "modular_skyrat\modules\projectiles\code\guns\misc\m6pdw.dm" +#include "modular_skyrat\modules\protected_roles\code\_job.dm" +#include "modular_skyrat\modules\protected_roles\code\antag_restricted_jobs.dm" #include "modular_skyrat\modules\QOL\code\_under.dm" #include "modular_skyrat\modules\QOL\code\datums\components\crafting\recipes\recipes_misc.dm" #include "modular_skyrat\modules\QOL\code\game\objects\items\mop.dm"