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>
This commit is contained in:
Gandalf
2022-01-27 22:45:20 +00:00
committed by GitHub
co-authored by Tom
parent 39eb4f5bea
commit f7e12e0adf
8 changed files with 111 additions and 276 deletions
@@ -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)
@@ -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,
@@ -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,
@@ -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,
@@ -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)
@@ -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
@@ -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
+2 -1
View File
@@ -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"