diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm
index 881e8967615..46cd6aff4b7 100644
--- a/code/__DEFINES/jobs.dm
+++ b/code/__DEFINES/jobs.dm
@@ -13,6 +13,97 @@
#define JOB_DISPLAY_ORDER_DEFAULT 0
+//No department
+#define JOB_ASSISTANT "Assistant"
+#define JOB_PRISONER "Prisoner"
+//Command
+#define JOB_CAPTAIN "Captain"
+#define JOB_HEAD_OF_PERSONNEL "Head of Personnel"
+#define JOB_HEAD_OF_SECURITY "Head of Security"
+#define JOB_RESEARCH_DIRECTOR "Research Director"
+#define JOB_CHIEF_ENGINEER "Chief Engineer"
+#define JOB_CHIEF_MEDICAL_OFFICER "Chief Medical Officer"
+//Silicon
+#define JOB_AI "AI"
+#define JOB_CYBORG "Cyborg"
+//Security
+#define JOB_WARDEN "Warden"
+#define JOB_DETECTIVE "Detective"
+#define JOB_SECURITY_OFFICER "Security Officer"
+#define JOB_SECURITY_OFFICER_MEDICAL "Security Officer (Medical)"
+#define JOB_SECURITY_OFFICER_ENGINEERING "Security Officer (Engineering)"
+#define JOB_SECURITY_OFFICER_SCIENCE "Security Officer (Science)"
+#define JOB_SECURITY_OFFICER_SUPPLY "Security Officer (Cargo)"
+#define JOB_CORRECTIONS_OFFICER "Corrections Officer" // SKYRAT EDIT ADDITION
+#define JOB_SECURITY_MEDIC "Security Medic" // SKYRAT EDIT ADDITION
+#define JOB_SECURITY_SERGEANT "Security Sergeant" // SKYRAT EDIT ADDITION
+#define JOB_CIVIL_DISPUTES_OFFICER "Civil Disputes Officer" // SKYRAT EDIT ADDITION
+//Engineering
+#define JOB_STATION_ENGINEER "Station Engineer"
+#define JOB_ATMOSPHERIC_TECHNICIAN "Atmospheric Technician"
+#define JOB_ENGINEERING_GUARD "Engineering Guard" // SKYRAT EDIT ADDITION
+//Medical
+#define JOB_MEDICAL_DOCTOR "Medical Doctor"
+#define JOB_PARAMEDIC "Paramedic"
+#define JOB_CHEMIST "Chemist"
+#define JOB_VIROLOGIST "Virologist"
+#define JOB_ORDERLY "Orderly" // SKYRAT EDIT ADDITION
+//Science
+#define JOB_SCIENTIST "Scientist"
+#define JOB_ROBOTICIST "Roboticist"
+#define JOB_GENETICIST "Geneticist"
+#define JOB_VANGUARD_OPERATIVE "Vanguard Operative" // SKYRAT EDIT ADDITION
+#define JOB_SCIENCE_GUARD "Science Guard"
+//Supply
+#define JOB_QUARTERMASTER "Quartermaster"
+#define JOB_CARGO_TECHNICIAN "Cargo Technician"
+#define JOB_SHAFT_MINER "Shaft Miner"
+#define JOB_CUSTOMS_AGENT "Customs Agent" // SKYRAT EDIT ADDITION
+//Service
+#define JOB_BARTENDER "Bartender"
+#define JOB_BOTANIST "Botanist"
+#define JOB_COOK "Cook"
+#define JOB_JANITOR "Janitor"
+#define JOB_CLOWN "Clown"
+#define JOB_MIME "Mime"
+#define JOB_CURATOR "Curator"
+#define JOB_LAWYER "Lawyer"
+#define JOB_CHAPLAIN "Chaplain"
+#define JOB_PSYCHOLOGIST "Psychologist"
+#define JOB_BARBER "Barber" // SKYRAT EDIT ADDITION
+#define JOB_BOUNCER "Bouncer" // SKYRAT EDIT ADDITION
+//ERTs
+#define JOB_ERT_COMMANDER "Emergency Response Team Commander"
+#define JOB_ERT_OFFICER "Security Response Officer"
+#define JOB_ERT_ENGINEER "Engineering Response Officer"
+#define JOB_ERT_MEDICAL_DOCTOR "Medical Response Officer"
+#define JOB_ERT_CLOWN "Entertainment Response Officer"
+#define JOB_ERT_CHAPLAIN "Religious Response Officer"
+#define JOB_ERT_JANITOR "Janitorial Response Officer"
+#define JOB_ERT_DEATHSQUAD "Death Commando"
+//CentCom
+#define JOB_CENTCOM "Central Command"
+#define JOB_CENTCOM_OFFICIAL "CentCom Official"
+#define JOB_CENTCOM_ADMIRAL "Admiral"
+#define JOB_CENTCOM_COMMANDER "CentCom Commander"
+#define JOB_CENTCOM_VIP "VIP Guest"
+#define JOB_CENTCOM_BARTENDER "CentCom Bartender"
+#define JOB_CENTCOM_CUSTODIAN "Custodian"
+#define JOB_CENTCOM_THUNDERDOME_OVERSEER "Thunderdome Overseer"
+#define JOB_CENTCOM_MEDICAL_DOCTOR "Medical Officer"
+#define JOB_CENTCOM_RESEARCH_OFFICER "Research Officer"
+#define JOB_CENTCOM_SPECIAL_OFFICER "Special Ops Officer"
+#define JOB_CENTCOM_PRIVATE_SECURITY "Private Security Force"
+#define JOB_BLUESHIELD "Blueshield" // SKYRAT EDIT ADDITION
+#define JOB_NT_REP "Nanotrasen Representative" // SKYRAT EDIT ADDITION
+// SKYRAT EDIT ADDITION START
+// Off-Station
+#define JOB_SPACE_POLICE "Space Police"
+#define JOB_SOLGOV "SolGov"
+#define JOB_SOLGOV_LIASON "SolGov Liason"
+// SKYRAT EDIT ADDITION END
+
+
#define JOB_DISPLAY_ORDER_ASSISTANT 1
#define JOB_DISPLAY_ORDER_CAPTAIN 2
#define JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL 3
@@ -62,6 +153,7 @@
#define JOB_DISPLAY_ORDER_CUSTOMS_AGENT 47 //SKYRAT EDIT ADDITION
#define DEPARTMENT_UNASSIGNED "No department assigned"
+
#define DEPARTMENT_BITFLAG_SECURITY (1<<0)
#define DEPARTMENT_SECURITY "Security"
#define DEPARTMENT_BITFLAG_COMMAND (1<<1)
diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm
index 83f80e063d4..3835a1c0a26 100644
--- a/code/__DEFINES/preferences.dm
+++ b/code/__DEFINES/preferences.dm
@@ -56,8 +56,8 @@
#define SCALING_METHOD_BLUR "blur"
#define PARALLAX_DELAY_DEFAULT world.tick_lag
-#define PARALLAX_DELAY_MED 1
-#define PARALLAX_DELAY_LOW 2
+#define PARALLAX_DELAY_MED 1
+#define PARALLAX_DELAY_LOW 2
#define SEC_DEPT_NONE "None"
#define SEC_DEPT_ENGINEERING "Engineering"
diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm
index c32842b0cdf..16b5f54da8b 100644
--- a/code/controllers/configuration/entries/game_options.dm
+++ b/code/controllers/configuration/entries/game_options.dm
@@ -292,7 +292,7 @@
min_val = -1
/datum/config_entry/string/overflow_job
- default = "Assistant"
+ default = JOB_ASSISTANT
/datum/config_entry/flag/starlight
/datum/config_entry/flag/grey_assistants
diff --git a/code/controllers/subsystem/id_access.dm b/code/controllers/subsystem/id_access.dm
index dc572214753..9271f80db58 100644
--- a/code/controllers/subsystem/id_access.dm
+++ b/code/controllers/subsystem/id_access.dm
@@ -154,37 +154,37 @@ SUBSYSTEM_DEF(id_access)
sub_department_managers_tgui = list(
"[ACCESS_CAPTAIN]" = list(
"regions" = list(REGION_COMMAND),
- "head" = "Captain",
+ "head" = JOB_CAPTAIN,
"templates" = list(),
"pdas" = list(),
),
"[ACCESS_HOP]" = list(
"regions" = list(REGION_GENERAL, REGION_SUPPLY),
- "head" = "Head of Personnel",
+ "head" = JOB_HEAD_OF_PERSONNEL,
"templates" = list(),
"pdas" = list(),
),
"[ACCESS_HOS]" = list(
"regions" = list(REGION_SECURITY),
- "head" = "Head of Security",
+ "head" = JOB_HEAD_OF_SECURITY,
"templates" = list(),
"pdas" = list(),
),
"[ACCESS_CMO]" = list(
"regions" = list(REGION_MEDBAY),
- "head" = "Chief Medical Officer",
+ "head" = JOB_CHIEF_MEDICAL_OFFICER,
"templates" = list(),
"pdas" = list(),
),
"[ACCESS_RD]" = list(
"regions" = list(REGION_RESEARCH),
- "head" = "Research Director",
+ "head" = JOB_RESEARCH_DIRECTOR,
"templates" = list(),
"pdas" = list(),
),
"[ACCESS_CE]" = list(
"regions" = list(REGION_ENGINEERING),
- "head" = "Chief Engineer",
+ "head" = JOB_CHIEF_ENGINEER,
"templates" = list(),
"pdas" = list(),
),
diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm
index 807531f77c0..cd61108a05e 100644
--- a/code/controllers/subsystem/job.dm
+++ b/code/controllers/subsystem/job.dm
@@ -50,13 +50,14 @@ SUBSYSTEM_DEF(job)
* See [/datum/controller/subsystem/ticker/proc/equip_characters]
*/
var/list/chain_of_command = list(
- "Captain" = 1,
- "Head of Personnel" = 2,
- "Research Director" = 3,
- "Chief Engineer" = 4,
- "Chief Medical Officer" = 5,
- "Head of Security" = 6,
- "Quartermaster" = 7)
+ JOB_CAPTAIN = 1,
+ JOB_HEAD_OF_PERSONNEL = 2,
+ JOB_RESEARCH_DIRECTOR = 3,
+ JOB_CHIEF_ENGINEER = 4,
+ JOB_CHIEF_MEDICAL_OFFICER = 5,
+ JOB_HEAD_OF_SECURITY = 6,
+ JOB_QUARTERMASTER = 7,
+ )
/// If TRUE, some player has been assigned Captaincy or Acting Captaincy at some point during the shift and has been given the spare ID safe code.
var/assigned_captain = FALSE
@@ -332,7 +333,7 @@ SUBSYSTEM_DEF(job)
/// Attempts to fill out all available AI positions.
/datum/controller/subsystem/job/proc/fill_ai_positions()
- var/datum/job/ai_job = GetJob("AI")
+ var/datum/job/ai_job = GetJob(JOB_AI)
if(!ai_job)
return
// In byond for(in to) loops, the iteration is inclusive so we need to stop at ai_job.total_positions - 1
@@ -589,7 +590,7 @@ SUBSYSTEM_DEF(job)
return C.holder.auto_deadmin()
/datum/controller/subsystem/job/proc/setup_officer_positions()
- var/datum/job/J = SSjob.GetJob("Security Officer")
+ var/datum/job/J = SSjob.GetJob(JOB_SECURITY_OFFICER)
if(!J)
CRASH("setup_officer_positions(): Security officer job is missing")
@@ -806,22 +807,41 @@ SUBSYSTEM_DEF(job)
/// Builds various lists of jobs based on station, centcom and additional jobs with icons associated with them.
/datum/controller/subsystem/job/proc/setup_job_lists()
- station_jobs = list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician", \
- "Shaft Miner", "Clown", "Mime", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer", \
- "Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Paramedic", "Chemist", "Geneticist", "Virologist", "Psychologist", \
- "Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer", "Corrections Officer", "Prisoner")
+ station_jobs = list(
+ JOB_ASSISTANT, JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BARTENDER, JOB_BOTANIST,
+ JOB_COOK, JOB_JANITOR, JOB_CLOWN, JOB_MIME, JOB_CURATOR, JOB_LAWYER, JOB_CHAPLAIN,
+ JOB_PSYCHOLOGIST, JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN,
+ JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_CHIEF_MEDICAL_OFFICER,
+ JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_RESEARCH_DIRECTOR,
+ JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_HEAD_OF_SECURITY, JOB_WARDEN,
+ JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_CORRECTIONS_OFFICER, JOB_PRISONER,
+ )
- head_of_staff_jobs = list("Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Head of Security", "Captain")
+ head_of_staff_jobs = list(
+ JOB_CAPTAIN,
+ JOB_HEAD_OF_PERSONNEL,
+ JOB_HEAD_OF_SECURITY,
+ JOB_RESEARCH_DIRECTOR,
+ JOB_CHIEF_ENGINEER,
+ JOB_CHIEF_MEDICAL_OFFICER,
+ )
- additional_jobs_with_icons = list("Emergency Response Team Commander", "Security Response Officer", "Engineering Response Officer", "Medical Response Officer", \
- "Entertainment Response Officer", "Religious Response Officer", "Janitorial Response Officer", "Death Commando", "Security Officer (Engineering)", \
- "Security Officer (Cargo)", "Security Officer (Medical)", "Security Officer (Science)", "Blueshield", "Nanotrasen Representative", "Shuttle Pilot", \
- "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Vanguard Operative", "Space Police", "SolGov", "SolGov Liasion", "Barber", "Orderly", "Science Guard", "Bouncer", "Customs Agent", "Engineering Guard")
- //SKYRAT EDIT ADDITIONS: Blueshield, NT Rep, Shuttle Pilot, Sec Medic, Sec Sarge, CDO, Vanguard Op, Space Police, SolGov, SolGov Liasion, Barber, Orderly, Science Guard, Bouncer, Customs Agent, Engineering Guard
+ additional_jobs_with_icons = list(
+ JOB_ERT_COMMANDER, JOB_ERT_OFFICER, JOB_ERT_ENGINEER, JOB_ERT_MEDICAL_DOCTOR,
+ JOB_ERT_CLOWN, JOB_ERT_CHAPLAIN, JOB_ERT_JANITOR, JOB_ERT_DEATHSQUAD,
+ JOB_SECURITY_OFFICER_MEDICAL, JOB_SECURITY_OFFICER_ENGINEERING, JOB_SECURITY_OFFICER_SCIENCE, JOB_SECURITY_OFFICER_SUPPLY,
+ JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER,
+ JOB_BOUNCER, JOB_ORDERLY, JOB_SCIENCE_GUARD, JOB_ENGINEERING_GUARD, JOB_CUSTOMS_AGENT,
+ JOB_BLUESHIELD, JOB_NT_REP, JOB_VANGUARD_OPERATIVE,
+ JOB_SPACE_POLICE, JOB_SOLGOV, JOB_SOLGOV_LIASON,
+ JOB_BARBER,
+ )
- centcom_jobs = list("Central Command", "VIP Guest", "Custodian", "Thunderdome Overseer", "CentCom Official", "Medical Officer", "Research Officer", \
- "Special Ops Officer", "Admiral", "CentCom Commander", "CentCom Bartender", "Private Security Force", "Fleetmaster", "Bridge Officer", "Operations Inspector", \
- "Deck Crewman")
+ centcom_jobs = list(
+ JOB_CENTCOM, JOB_CENTCOM_OFFICIAL, JOB_CENTCOM_ADMIRAL, JOB_CENTCOM_COMMANDER, JOB_CENTCOM_VIP,
+ JOB_CENTCOM_BARTENDER, JOB_CENTCOM_CUSTODIAN, JOB_CENTCOM_THUNDERDOME_OVERSEER, JOB_CENTCOM_MEDICAL_DOCTOR,
+ JOB_CENTCOM_RESEARCH_OFFICER, JOB_CENTCOM_SPECIAL_OFFICER, JOB_CENTCOM_PRIVATE_SECURITY,
+ )
job_priorities_to_strings = list(
"[JP_LOW]" = "Low Priority",
diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm
index 8a3ca5ba516..ca3eb052042 100644
--- a/code/controllers/subsystem/persistence.dm
+++ b/code/controllers/subsystem/persistence.dm
@@ -144,7 +144,7 @@ SUBSYSTEM_DEF(persistence)
if(json["version"] < TATTOO_PERSISTENCE_VERSION)
update_prisoner_tattoos(json)
- var/datum/job/prisoner_datum = SSjob.name_occupations["Prisoner"]
+ var/datum/job/prisoner_datum = SSjob.name_occupations[JOB_PRISONER]
if(!prisoner_datum)
return
var/iterations_allowed = prisoner_datum.spawn_positions
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 3f75e41262e..75cdcff5129 100644
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -378,7 +378,7 @@ SUBSYSTEM_DEF(ticker)
// Find a suitable player to hold captaincy.
for(var/mob/dead/new_player/new_player_mob as anything in GLOB.new_player_list)
- if(is_banned_from(new_player_mob.ckey, list("Captain")))
+ if(is_banned_from(new_player_mob.ckey, list(JOB_CAPTAIN)))
CHECK_TICK
continue
if(!ishuman(new_player_mob.new_character))
diff --git a/code/datums/brain_damage/creepy_trauma.dm b/code/datums/brain_damage/creepy_trauma.dm
index cc05063a433..a049a066e75 100644
--- a/code/datums/brain_damage/creepy_trauma.dm
+++ b/code/datums/brain_damage/creepy_trauma.dm
@@ -117,7 +117,11 @@
/datum/brain_trauma/special/obsessed/proc/find_obsession()
var/list/viable_minds = list() //The first list, which excludes hijinks
var/list/possible_targets = list() //The second list, which filters out silicons and simplemobs
- var/static/list/trait_obsessions = list("Mime" = TRAIT_MIME_FAN, "Clown" = TRAIT_CLOWN_ENJOYER, "Chaplain" = TRAIT_SPIRITUAL) //Jobs and their corresponding quirks
+ var/static/list/trait_obsessions = list(
+ JOB_MIME = TRAIT_MIME_FAN,
+ JOB_CLOWN = TRAIT_CLOWN_ENJOYER,
+ JOB_CHAPLAIN = TRAIT_SPIRITUAL,
+ ) // Jobs and their corresponding quirks
var/list/special_pool = list() //The special list, for quirk-based
var/chosen_victim //The obsession target
diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm
index c45879e259b..ecb238340ee 100644
--- a/code/datums/components/mood.dm
+++ b/code/datums/components/mood.dm
@@ -43,7 +43,7 @@
/datum/component/mood/proc/register_job_signals(datum/source, job)
SIGNAL_HANDLER
- if(job in list("Research Director", "Scientist", "Roboticist"))
+ if(job in list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST))
RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT_RND, .proc/add_event) //Mood events that are only for RnD members
/datum/component/mood/proc/print_mood(mob/user)
diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm
index aaedc1e64c9..7ae90e3b01d 100644
--- a/code/datums/diseases/transformation.dm
+++ b/code/datums/diseases/transformation.dm
@@ -179,7 +179,7 @@
stage5 = list("Your skin feels as if it's about to burst off!")
new_form = /mob/living/silicon/robot
infectable_biotypes = MOB_ORGANIC|MOB_UNDEAD|MOB_ROBOTIC
- bantype = "Cyborg"
+ bantype = JOB_CYBORG
/datum/disease/transformation/robot/stage_act(delta_time, times_fired)
diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm
deleted file mode 100644
index ca2149ac824..00000000000
--- a/code/game/gamemodes/changeling/changeling.dm
+++ /dev/null
@@ -1,186 +0,0 @@
-GLOBAL_LIST_INIT(slots, list("head", "wear_mask", "back", "wear_suit", "w_uniform", "shoes", "belt", "gloves", "glasses", "ears", "wear_id", "s_store"))
-GLOBAL_LIST_INIT(slot2slot, list("head" = ITEM_SLOT_HEAD, "wear_mask" = ITEM_SLOT_MASK, "neck" = ITEM_SLOT_NECK, "back" = ITEM_SLOT_BACK, "wear_suit" = ITEM_SLOT_OCLOTHING, "w_uniform" = ITEM_SLOT_ICLOTHING, "shoes" = ITEM_SLOT_FEET, "belt" = ITEM_SLOT_BELT, "gloves" = ITEM_SLOT_GLOVES, "glasses" = ITEM_SLOT_EYES, "ears" = ITEM_SLOT_EARS, "wear_id" = ITEM_SLOT_ID, "s_store" = ITEM_SLOT_SUITSTORE))
-GLOBAL_LIST_INIT(slot2type, list("head" = /obj/item/clothing/head/changeling, "wear_mask" = /obj/item/clothing/mask/changeling, "back" = /obj/item/changeling, "wear_suit" = /obj/item/clothing/suit/changeling, "w_uniform" = /obj/item/clothing/under/changeling, "shoes" = /obj/item/clothing/shoes/changeling, "belt" = /obj/item/changeling, "gloves" = /obj/item/clothing/gloves/changeling, "glasses" = /obj/item/clothing/glasses/changeling, "ears" = /obj/item/changeling, "wear_id" = /obj/item/changeling/id, "s_store" = /obj/item/changeling))
-
-
-/datum/game_mode/changeling
- name = "changeling"
- config_tag = "changeling"
- report_type = "changeling"
- antag_flag = ROLE_CHANGELING
- false_report_weight = 10
- restricted_jobs = list("AI", "Cyborg")
- protected_jobs = list("Prisoner", "Security Officer", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Corrections Officer", "Blueshield", "Warden", "Detective", "Head of Security", "Captain") //SKYRAT EDIT ADDITION - SEC_HAUL
- required_players = 15
- required_enemies = 1
- recommended_enemies = 3
- reroll_friendly = 1
-
- announce_span = "green"
- announce_text = "Alien changelings have infiltrated the crew!\n\
- Changelings: Accomplish the objectives assigned to you.\n\
- Crew: Root out and eliminate the changeling menace."
-
- var/const/changeling_amount = 6 //hard limit on changelings if scaling is turned off //SKYRAT EDIT CHANGE - ORIGINAL: 4
- var/list/changelings = list()
-
-/datum/game_mode/changeling/pre_setup()
-
- if(CONFIG_GET(flag/protect_roles_from_antagonist))
- restricted_jobs += protected_jobs
-
- if(CONFIG_GET(flag/protect_assistant_from_antagonist))
- restricted_jobs += "Assistant"
-
- var/num_changelings = 1
-
- var/csc = CONFIG_GET(number/changeling_scaling_coeff)
- if(csc)
- //num_changelings = max(1, min(round(num_players() / (csc * 2)) + 2, round(num_players() / csc))) ORIGINAL
- num_changelings = max(1, round(num_players()/csc)) //SKYRAT EDIT CHANGE
- message_admins("The roundtype is changeling, based off of coefficient calculations there should be [num_changelings] changelings.") //SKYRAT EDIT ADDITION
- else
- num_changelings = max(1, min(num_players(), changeling_amount))
-
- if(antag_candidates.len>0)
- var/num_of_changelings = 0 //SKYRAT EDIT ADDIDTION
- for(var/i = 0, i < num_changelings, i++)
- if(!antag_candidates.len)
- break
- var/datum/mind/changeling = antag_pick(antag_candidates)
- antag_candidates -= changeling
- changelings += changeling
- changeling.special_role = ROLE_CHANGELING
- changeling.restricted_roles = restricted_jobs
- GLOB.pre_setup_antags += changeling
- num_of_changelings++ //SKYRAT EDIT ADDIDION
- message_admins("The number of changelings should be [num_changelings] and there are currently [num_of_changelings].") //SKYRAT EDIT ADDITION
- return TRUE
- else
- setup_error = "Not enough changeling candidates"
- return FALSE
-
-/datum/game_mode/changeling/post_setup()
- for(var/datum/mind/changeling in changelings)
- log_game("[key_name(changeling)] has been selected as a changeling")
- var/datum/antagonist/changeling/new_antag = new()
- changeling.add_antag_datum(new_antag)
- GLOB.pre_setup_antags -= changeling
- ..()
-
-/datum/game_mode/changeling/make_antag_chance(mob/living/carbon/human/character) //Assigns changeling to latejoiners
- var/csc = CONFIG_GET(number/changeling_scaling_coeff)
- var/changelingcap = min(round(GLOB.joined_player_list.len / (csc * 2)) + 2, round(GLOB.joined_player_list.len / csc))
- if(changelings.len >= changelingcap) //Caps number of latejoin antagonists
- return
- if(changelings.len <= (changelingcap - 2) || prob(100 - (csc * 2)))
- if(ROLE_CHANGELING in character.client.prefs.be_special)
- if(!is_banned_from(character.ckey, list(ROLE_CHANGELING, ROLE_SYNDICATE)) && !QDELETED(character))
- if(age_check(character.client))
- if(!(character.job in restricted_jobs))
- character.mind.make_Changeling()
- changelings += character.mind
-
-/datum/game_mode/changeling/generate_report()
- return "The Gorlex Marauders have announced the successful raid and destruction of Central Command containment ship #S-[rand(1111, 9999)]. This ship housed only a single prisoner - \
- codenamed \"Thing\", and it was highly adaptive and extremely dangerous. We have reason to believe that the Thing has allied with the Syndicate, and you should note that likelihood \
- of the Thing being sent to a station in this sector is highly likely. It may be in the guise of any crew member. Trust nobody - suspect everybody. Do not announce this to the crew, \
- as paranoia may spread and inhibit workplace efficiency."
-
-/proc/changeling_transform(mob/living/carbon/human/user, datum/changelingprofile/chosen_prof)
- var/datum/dna/chosen_dna = chosen_prof.dna
- user.real_name = chosen_prof.name
- user.underwear = chosen_prof.underwear
- user.undershirt = chosen_prof.undershirt
- user.socks = chosen_prof.socks
-
- chosen_dna.transfer_identity(user, 1)
- user.updateappearance(mutcolor_update=1)
- user.update_body()
- user.domutcheck()
-
- // get rid of any scars from previous changeling-ing
- for(var/i in user.all_scars)
- var/datum/scar/iter_scar = i
- if(iter_scar.fake)
- qdel(iter_scar)
-
- // Do skillchip code after DNA code.
- // There's a mutation that increases max chip complexity available, even though we force-implant skillchips.
-
- // Remove existing skillchips.
- user.destroy_all_skillchips(silent = FALSE)
-
- // Add new set of skillchips.
- for(var/chip in chosen_prof.skillchips)
- var/chip_type = chip["type"]
- var/obj/item/skillchip/skillchip = new chip_type(user)
-
- if(!istype(skillchip))
- stack_trace("Failure to implant changeling from [chosen_prof] with skillchip [skillchip]. Tried to implant with non-skillchip type [chip_type]")
- qdel(skillchip)
- continue
-
- // Try force-implanting and activating. If it doesn't work, there's nothing much we can do. There may be some
- // incompatibility out of our hands
- var/implant_msg = user.implant_skillchip(skillchip, TRUE)
- if(implant_msg)
- // Hopefully recording the error message will help debug it.
- stack_trace("Failure to implant changeling from [chosen_prof] with skillchip [skillchip]. Error msg: [implant_msg]")
- qdel(skillchip)
- continue
-
- // Time to set the metadata. This includes trying to activate the chip.
- var/set_meta_msg = skillchip.set_metadata(chip)
-
- if(set_meta_msg)
- // Hopefully recording the error message will help debug it.
- stack_trace("Failure to activate changeling skillchip from [chosen_prof] with skillchip [skillchip] using [chip] metadata. Error msg: [set_meta_msg]")
- continue
-
- //vars hackery. not pretty, but better than the alternative.
- for(var/slot in GLOB.slots)
- if(istype(user.vars[slot], GLOB.slot2type[slot]) && !(chosen_prof.exists_list[slot])) //remove unnecessary flesh items
- qdel(user.vars[slot])
- continue
-
- if((user.vars[slot] && !istype(user.vars[slot], GLOB.slot2type[slot])) || !(chosen_prof.exists_list[slot]))
- continue
-
- if(istype(user.vars[slot], GLOB.slot2type[slot]) && slot == "wear_id") //always remove old flesh IDs, so they get properly updated
- qdel(user.vars[slot])
-
- var/obj/item/C
- var/equip = 0
- if(!user.vars[slot])
- var/thetype = GLOB.slot2type[slot]
- equip = 1
- C = new thetype(user)
-
- else if(istype(user.vars[slot], GLOB.slot2type[slot]))
- C = user.vars[slot]
-
- C.appearance = chosen_prof.appearance_list[slot]
- C.name = chosen_prof.name_list[slot]
- C.flags_cover = chosen_prof.flags_cover_list[slot]
- C.lefthand_file = chosen_prof.lefthand_file_list[slot]
- C.righthand_file = chosen_prof.righthand_file_list[slot]
- C.inhand_icon_state = chosen_prof.inhand_icon_state_list[slot]
- C.worn_icon = chosen_prof.worn_icon_list[slot]
- C.worn_icon_state = chosen_prof.worn_icon_state_list[slot]
-
- if(istype(C, /obj/item/changeling/id) && chosen_prof.id_icon)
- var/obj/item/changeling/id/flesh_id = C
- flesh_id.hud_icon = chosen_prof.id_icon
-
- if(equip)
- user.equip_to_slot_or_del(C, GLOB.slot2slot[slot])
- if(!QDELETED(C))
- ADD_TRAIT(C, TRAIT_NODROP, CHANGELING_TRAIT)
-
- for(var/stored_scar_line in chosen_prof.stored_scars)
- var/datum/scar/attempted_fake_scar = user.load_scar(stored_scar_line)
- if(attempted_fake_scar)
- attempted_fake_scar.fake = TRUE
-
- user.regenerate_icons()
diff --git a/code/game/gamemodes/changeling/traitor_chan.dm b/code/game/gamemodes/changeling/traitor_chan.dm
deleted file mode 100644
index 6d292c057bd..00000000000
--- a/code/game/gamemodes/changeling/traitor_chan.dm
+++ /dev/null
@@ -1,94 +0,0 @@
-/datum/game_mode/traitor/changeling
- name = "traitor+changeling"
- config_tag = "traitorchan"
- report_type = "traitorchan"
- false_report_weight = 10
- traitors_possible = 3 //hard limit on traitors if scaling is turned off
- restricted_jobs = list("Prisoner","AI", "Cyborg")
- required_players = 25
- required_enemies = 1 // how many of each type are required
- recommended_enemies = 3
- reroll_friendly = 1
- announce_span = "Traitors and Changelings"
- announce_text = "There are alien creatures on the station along with some syndicate operatives out for their own gain! Do not let the changelings or the traitors succeed!"
-
- var/list/possible_changelings = list()
- var/list/changelings = list()
- var/const/changeling_amount = 1 //hard limit on changelings if scaling is turned off
-
-/datum/game_mode/traitor/changeling/can_start()
- . = ..()
- if(!.)
- return
- possible_changelings = get_players_for_role(ROLE_CHANGELING)
- if(possible_changelings.len < required_enemies)
- return FALSE
- return TRUE
-
-/datum/game_mode/traitor/changeling/pre_setup()
- if(CONFIG_GET(flag/protect_roles_from_antagonist))
- restricted_jobs += protected_jobs
-
- if(CONFIG_GET(flag/protect_assistant_from_antagonist))
- restricted_jobs += "Assistant"
-
- var/list/datum/mind/possible_changelings = get_players_for_role(ROLE_CHANGELING)
-
- var/num_changelings = 1
-
- var/csc = CONFIG_GET(number/changeling_scaling_coeff)
- if(csc)
- //num_changelings = max(1, min(round(num_players() / (csc * 4)) + 2, round(num_players() / (csc * 2)))) ORIGINAL
- num_changelings = max(1, round(num_players()/csc) + num_modifier) //SKYRAT EDIT CHANGE
- message_admins("The roundtype is traitor-changeling, based off of coefficient calculations there should be [num_changelings] traitors/changelings.") //SKYRAT EDIT ADDITON
- else
- num_changelings = max(1, min(num_players(), changeling_amount/2))
-
- if(possible_changelings.len>0)
- var/num_of_changelings = 0 //SKYRAT EDIT ADDIDTION
- for(var/j = 0, j < num_changelings, j++)
- if(!possible_changelings.len)
- break
- var/datum/mind/changeling = antag_pick(possible_changelings)
- antag_candidates -= changeling
- possible_changelings -= changeling
- changeling.special_role = ROLE_CHANGELING
- changelings += changeling
- changeling.restricted_roles = restricted_jobs
- num_of_changelings++
- message_admins("The number of changelings should be [num_changelings] and there are currently [num_of_changelings].") //SKYRAT EDIT ADDITION
- . = ..()
- if(.) //To ensure the game mode is going ahead
- for(var/antag in changelings)
- GLOB.pre_setup_antags += antag
- return
- else
- return FALSE
-
-/datum/game_mode/traitor/changeling/post_setup()
- for(var/datum/mind/changeling in changelings)
- changeling.add_antag_datum(/datum/antagonist/changeling)
- GLOB.pre_setup_antags -= changeling
- return ..()
-
-/datum/game_mode/traitor/changeling/make_antag_chance(mob/living/carbon/human/character) //Assigns changeling to latejoiners
- var/csc = CONFIG_GET(number/changeling_scaling_coeff)
- var/changelingcap = min( round(GLOB.joined_player_list.len / (csc * 4)) + 2, round(GLOB.joined_player_list.len / (csc * 2)))
- if(changelings.len >= changelingcap) //Caps number of latejoin antagonists
- ..()
- return
- if(changelings.len <= (changelingcap - 2) || prob(100 / (csc * 4)))
- if(ROLE_CHANGELING in character.client.prefs.be_special)
- if(!is_banned_from(character.ckey, list(ROLE_CHANGELING, ROLE_SYNDICATE)) && !QDELETED(character))
- if(age_check(character.client))
- if(!(character.job in restricted_jobs))
- character.mind.make_Changeling()
- changelings += character.mind
- if(QDELETED(character))
- return
- ..()
-
-/datum/game_mode/traitor/changeling/generate_report()
- return "The Syndicate has started some experimental research regarding humanoid shapeshifting. There are rumors that this technology will be field tested on a Nanotrasen station \
- for infiltration purposes. Be advised that support personel may also be deployed to defend these shapeshifters. Trust nobody - suspect everybody. Do not announce this to the crew, \
- as paranoia may spread and inhibit workplace efficiency."
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
deleted file mode 100644
index 5b5da397fea..00000000000
--- a/code/game/gamemodes/cult/cult.dm
+++ /dev/null
@@ -1,158 +0,0 @@
-#define CULT_SCALING_COEFFICIENT 9.3 //Roughly one new cultist at roundstart per this many players
-
-/datum/game_mode
- var/list/datum/mind/cult = list()
-
-/proc/iscultist(mob/living/M)
- return istype(M) && M.mind && M.mind.has_antag_datum(/datum/antagonist/cult)
-
-/datum/team/cult/proc/is_sacrifice_target(datum/mind/mind)
- for(var/datum/objective/sacrifice/sac_objective in objectives)
- if(mind == sac_objective.target)
- return TRUE
- return FALSE
-
-/proc/is_convertable_to_cult(mob/living/M,datum/team/cult/specific_cult)
- if(!istype(M))
- return FALSE
- if(M.mind)
- if(ishuman(M) && (M.mind.holy_role))
- return FALSE
- if(specific_cult?.is_sacrifice_target(M.mind))
- return FALSE
- if(M.mind.enslaved_to && !iscultist(M.mind.enslaved_to))
- return FALSE
- if(M.mind.unconvertable)
- return FALSE
- else
- return FALSE
- if(HAS_TRAIT(M, TRAIT_MINDSHIELD) || issilicon(M) || isbot(M) || isdrone(M) || !M.client)
- return FALSE //can't convert machines, shielded, or braindead
- return TRUE
-
-/datum/game_mode/cult
- name = "cult"
- config_tag = "cult"
- report_type = "cult"
- antag_flag = ROLE_CULTIST
- false_report_weight = 10
- restricted_jobs = list("Prisoner","Chaplain","AI", "Cyborg", "Security Officer", "Blueshield", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Corrections Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel") //SKYRAT EDIT ADDITION - SEC_HAUL
- protected_jobs = list()
- required_players = 29
- required_enemies = 4
- recommended_enemies = 4
- enemy_minimum_age = 14
-
- announce_span = "cult"
- announce_text = "Some crew members are trying to start a cult to Nar'Sie!\n\
- Cultists: Carry out Nar'Sie's will.\n\
- Crew: Prevent the cult from expanding and drive it out."
-
- var/acolytes_needed = 10 //for the survive objective
- var/acolytes_survived = 0
-
- var/list/cultists_to_cult = list() //the cultists we'll convert
-
- var/datum/team/cult/main_cult
-
-
-/datum/game_mode/cult/pre_setup()
- if(CONFIG_GET(flag/protect_roles_from_antagonist))
- restricted_jobs += protected_jobs
-
- if(CONFIG_GET(flag/protect_assistant_from_antagonist))
- restricted_jobs += "Assistant"
-
- //cult scaling goes here
- recommended_enemies = 1 + round(num_players()/CULT_SCALING_COEFFICIENT)
- var/remaining = (num_players() % CULT_SCALING_COEFFICIENT) * 10 //Basically the % of how close the population is toward adding another cultis
- if(prob(remaining))
- recommended_enemies++
-
-
- for(var/cultists_number = 1 to recommended_enemies)
- if(!antag_candidates.len)
- break
- var/datum/mind/cultist = antag_pick(antag_candidates)
- antag_candidates -= cultist
- cultists_to_cult += cultist
- cultist.special_role = ROLE_CULTIST
- cultist.restricted_roles = restricted_jobs
- log_game("[key_name(cultist)] has been selected as a cultist")
-
- if(cultists_to_cult.len>=required_enemies)
- for(var/antag in cultists_to_cult)
- GLOB.pre_setup_antags += antag
- return TRUE
- else
- setup_error = "Not enough cultist candidates"
- return FALSE
-
-
-/datum/game_mode/cult/post_setup()
- main_cult = new
-
- for(var/datum/mind/cult_mind in cultists_to_cult)
- add_cultist(cult_mind, 0, equip=TRUE, cult_team = main_cult)
- GLOB.pre_setup_antags -= cult_mind
-
- main_cult.setup_objectives() //Wait until all cultists are assigned to make sure none will be chosen as sacrifice.
-
- . = ..()
-
-/datum/game_mode/proc/add_cultist(datum/mind/cult_mind, stun , equip = FALSE, datum/team/cult/cult_team = null)
- if (!istype(cult_mind))
- return FALSE
-
- var/datum/antagonist/cult/new_cultist = new()
- new_cultist.give_equipment = equip
-
- if(cult_mind.add_antag_datum(new_cultist,cult_team))
- if(stun)
- cult_mind.current.Unconscious(100)
- return TRUE
-
-/datum/game_mode/proc/remove_cultist(datum/mind/cult_mind, silent, stun)
- if(cult_mind.current)
- var/datum/antagonist/cult/cult_datum = cult_mind.has_antag_datum(/datum/antagonist/cult)
- if(!cult_datum)
- return FALSE
- cult_datum.silent = silent
- cult_mind.remove_antag_datum(cult_datum)
- if(stun)
- cult_mind.current.Unconscious(100)
- return TRUE
-
-/datum/game_mode/cult/proc/check_cult_victory()
- return main_cult.check_cult_victory()
-
-
-/datum/game_mode/cult/set_round_result()
- ..()
- if(check_cult_victory())
- SSticker.mode_result = "win - cult win"
- SSticker.news_report = CULT_SUMMON
- else
- SSticker.mode_result = "loss - staff stopped the cult"
- SSticker.news_report = CULT_FAILURE
-
-/datum/game_mode/cult/proc/check_survive()
- var/acolytes_survived = 0
- for(var/datum/mind/cult_mind in cult)
- if (cult_mind.current && cult_mind.current.stat != DEAD)
- if(cult_mind.current.onCentCom() || cult_mind.current.onSyndieBase())
- acolytes_survived++
- if(acolytes_survived>=acolytes_needed)
- return FALSE
- else
- return TRUE
-
-
-/datum/game_mode/cult/generate_report()
- return "Some stations in your sector have reported evidence of blood sacrifice and strange magic. Ties to the Wizards' Federation have been proven not to exist, and many employees \
- have disappeared; even Central Command employees light-years away have felt strange presences and at times hysterical compulsions. Interrogations point towards this being the work of \
- the cult of Nar'Sie. If evidence of this cult is discovered aboard your station, extreme caution and extreme vigilance must be taken going forward, and all resources should be \
- devoted to stopping this cult. Note that holy water seems to weaken and eventually return the minds of cultists that ingest it, and mindshield implants will prevent conversion \
- altogether."
-
-#undef CULT_SCALING_COEFFICIENT
diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm
index 85202a6880a..34648a6cf02 100644
--- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm
+++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm
@@ -50,8 +50,11 @@
antag_datum = /datum/antagonist/traitor
antag_flag = ROLE_SYNDICATE_INFILTRATOR
antag_flag_override = ROLE_TRAITOR
- protected_roles = list("Prisoner", "Blueshield", "Corrections Officer", "Security Officer", "Warden", "Detective", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Head of Security", "Captain", "Nanotrasen Representative", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster", "Vanguard Operative") //SKYRAT EDIT - SEC_HAUL
- restricted_roles = list("Cyborg", "AI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Vanguard Operative", "Nanotrasen Representative", "Blueshield", "Civil Disputes Officer", "Security Sergeant", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard") //SKYRAT EDIT - Sec_haul
+ protected_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_SECURITY_OFFICER, JOB_DETECTIVE,
+ JOB_PRISONER, JOB_BLUESHIELD, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER,
+ JOB_NT_REP, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_VANGUARD_OPERATIVE,
+ JOB_ORDERLY, JOB_BOUNCER, JOB_CUSTOMS_AGENT, JOB_ENGINEERING_GUARD, JOB_SCIENCE_GUARD) // SKYRAT EDIT ADDITION - ALL AFTER JOB_DETECTIVE
+ restricted_roles = list(JOB_AI, JOB_CYBORG)
required_candidates = 1
weight = 7
cost = 5
@@ -70,8 +73,13 @@
antag_datum = /datum/antagonist/rev/head
antag_flag = ROLE_PROVOCATEUR
antag_flag_override = ROLE_REV
- restricted_roles = list("Cyborg", "AI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Vanguard Operative", "Nanotrasen Representative", "Blueshield", "Civil Disputes Officer", "Security Sergeant", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard") //SKYRAT EDIT - Sec_haul
- enemy_roles = list("AI", "Cyborg", "Security Officer","Detective","Head of Security", "Captain", "Warden")
+ restricted_roles = list(JOB_AI, JOB_CYBORG,
+ JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_RESEARCH_DIRECTOR, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER,
+ JOB_CORRECTIONS_OFFICER, JOB_CIVIL_DISPUTES_OFFICER, JOB_SECURITY_SERGEANT,
+ JOB_NT_REP, JOB_BLUESHIELD, JOB_VANGUARD_OPERATIVE,
+ JOB_ORDERLY, JOB_BOUNCER, JOB_CUSTOMS_AGENT, JOB_ENGINEERING_GUARD, JOB_SCIENCE_GUARD,
+ ) // SKYRAT EDIT ADDITION - ALL AFTER JOB_CHIEF_MEDICAL_OFFICER
+ enemy_roles = list(JOB_AI, JOB_CYBORG, JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 1
weight = 2
@@ -137,7 +145,7 @@
//////////////////////////////////////////////
// //
-// HERETIC SMUGGLER //
+// HERETIC SMUGGLER //
// //
//////////////////////////////////////////////
@@ -146,8 +154,12 @@
antag_datum = /datum/antagonist/heretic
antag_flag = ROLE_HERETIC_SMUGGLER
antag_flag_override = ROLE_HERETIC
- protected_roles = list("Prisoner", "Blueshield", "Corrections Officer", "Security Officer", "Warden", "Detective", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Head of Security", "Captain", "Nanotrasen Representative", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster", "Vanguard Operative") //SKYRAT EDIT - SEC_HAUL
- restricted_roles = list("Cyborg", "AI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Vanguard Operative", "Nanotrasen Representative", "Blueshield", "Civil Disputes Officer", "Security Sergeant", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard") //SKYRAT EDIT - Sec_haul
+ protected_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_PRISONER,
+ JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER,
+ JOB_CORRECTIONS_OFFICER, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER,
+ JOB_NT_REP, JOB_BLUESHIELD, JOB_VANGUARD_OPERATIVE
+ ) // SKYRAT EDIT ADDITION - ALL AFTER JOB_PRISONER
+ restricted_roles = list(JOB_AI, JOB_CYBORG)
required_candidates = 1
weight = 4
cost = 10
diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
index 2c6c0238ed4..283d310e160 100644
--- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
+++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
@@ -184,8 +184,12 @@
antag_datum = /datum/antagonist/traitor
antag_flag = ROLE_SLEEPER_AGENT
antag_flag_override = ROLE_TRAITOR
- protected_roles = list("Prisoner", "Blueshield", "Corrections Officer", "Security Officer", "Warden", "Detective", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Head of Security", "Captain", "Nanotrasen Representative", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster", "Vanguard Operative") //SKYRAT EDIT - SEC_HAUL
- restricted_roles = list("Cyborg", "AI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Vanguard Operative", "Nanotrasen Representative", "Blueshield", "Civil Disputes Officer", "Security Sergeant", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard") //SKYRAT EDIT - Sec_haul
+ protected_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_PRISONER,
+ JOB_BLUESHIELD, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER,
+ JOB_NT_REP, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_VANGUARD_OPERATIVE,
+ JOB_ORDERLY, JOB_BOUNCER, JOB_CUSTOMS_AGENT, JOB_ENGINEERING_GUARD, JOB_SCIENCE_GUARD
+ ) // SKYRAT EDIT ADDITION - ALL AFTER JOB_PRISONER
+ restricted_roles = list(JOB_AI, JOB_CYBORG)
required_candidates = 1
weight = 7
cost = 10
@@ -250,8 +254,12 @@
antag_datum = /datum/antagonist/gang
antag_flag = ROLE_FAMILY_HEAD_ASPIRANT
antag_flag_override = ROLE_FAMILIES
- protected_roles = list("Prisoner", "Head of Personnel")
- restricted_roles = list("Cyborg", "AI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Vanguard Operative", "Nanotrasen Representative", "Blueshield", "Civil Disputes Officer", "Security Sergeant", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard") //SKYRAT EDIT - Sec_haul
+ protected_roles = list(JOB_HEAD_OF_PERSONNEL, JOB_PRISONER)
+ restricted_roles = list(JOB_AI, JOB_CYBORG, JOB_CAPTAIN, JOB_RESEARCH_DIRECTOR, JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_SECURITY_OFFICER, JOB_DETECTIVE,
+ JOB_CORRECTIONS_OFFICER, JOB_CIVIL_DISPUTES_OFFICER, JOB_SECURITY_SERGEANT,
+ JOB_VANGUARD_OPERATIVE, JOB_NT_REP, JOB_BLUESHIELD,
+ JOB_ORDERLY, JOB_BOUNCER, JOB_CUSTOMS_AGENT, JOB_ENGINEERING_GUARD, JOB_SCIENCE_GUARD
+ ) // SKYRAT EDIT ADDITION - ALL AFTER JOB_DETECTIVE
required_candidates = 3
weight = 2
cost = 19
@@ -306,7 +314,7 @@
//////////////////////////////////////////////
// //
// Malfunctioning AI //
-// //
+// //
//////////////////////////////////////////////
/datum/dynamic_ruleset/midround/malf
@@ -314,8 +322,10 @@
antag_datum = /datum/antagonist/malf_ai
antag_flag = ROLE_MALF_MIDROUND
antag_flag_override = ROLE_MALF
- enemy_roles = list("Security Officer", "Warden","Detective","Head of Security", "Captain", "Scientist", "Chemist", "Research Director", "Chief Engineer", "Blueshield")
- exclusive_roles = list("AI")
+ enemy_roles = list(JOB_RESEARCH_DIRECTOR, JOB_CHIEF_ENGINEER, JOB_SCIENTIST, JOB_CHEMIST, JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_SECURITY_OFFICER,
+ JOB_DETECTIVE, JOB_CAPTAIN, JOB_BLUESHIELD
+ ) // SKYRAT EDIT ADDITION - ALL AFTER JOB_SECURITY_OFFICER
+ exclusive_roles = list(JOB_AI)
required_enemies = list(4,4,4,4,4,4,2,2,2,0)
required_candidates = 1
weight = 3
@@ -366,7 +376,7 @@
antag_datum = /datum/antagonist/wizard
antag_flag = ROLE_WIZARD_MIDROUND
antag_flag_override = ROLE_WIZARD
- enemy_roles = list("Security Officer","Detective","Head of Security", "Captain")
+ enemy_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 1
weight = 1
@@ -398,7 +408,7 @@
antag_flag = ROLE_OPERATIVE_MIDROUND
antag_flag_override = ROLE_OPERATIVE
antag_datum = /datum/antagonist/nukeop
- enemy_roles = list("AI", "Cyborg", "Security Officer", "Warden","Detective","Head of Security", "Captain")
+ enemy_roles = list(JOB_AI, JOB_CYBORG, JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(3,3,3,3,3,2,1,1,0,0)
required_candidates = 5
weight = 5
@@ -440,7 +450,7 @@
name = "Blob"
antag_datum = /datum/antagonist/blob
antag_flag = ROLE_BLOB
- enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
+ enemy_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 1
weight = 2
@@ -458,9 +468,13 @@
antag_datum = /datum/antagonist/blob/infection
antag_flag = ROLE_BLOB_INFECTION
antag_flag_override = ROLE_BLOB
- protected_roles = list("Prisoner", "Blueshield", "Corrections Officer", "Security Officer", "Warden", "Detective", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Head of Security", "Captain", "Nanotrasen Representative", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster", "Vanguard Operative") //SKYRAT EDIT - SEC_HAUL
- restricted_roles = list("Cyborg", "AI", "Positronic Brain")
- enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
+ protected_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_PRISONER,
+ JOB_BLUESHIELD, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER,
+ JOB_NT_REP, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER,
+ JOB_VANGUARD_OPERATIVE
+ ) // SKYRAT EDIT ADDITION - ALL AFTER JOB_PRISONER
+ restricted_roles = list(JOB_AI, JOB_CYBORG, ROLE_POSITRONIC_BRAIN)
+ enemy_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 1
weight = 2
@@ -498,7 +512,7 @@
name = "Alien Infestation"
antag_datum = /datum/antagonist/xeno
antag_flag = ROLE_ALIEN
- enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
+ enemy_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 1
weight = 0 //SKYRAT EDIT CHANGE
@@ -545,7 +559,7 @@
antag_datum = /datum/antagonist/nightmare
antag_flag = ROLE_NIGHTMARE
antag_flag_override = ROLE_ALIEN
- enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
+ enemy_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 1
weight = 3
@@ -591,7 +605,7 @@
antag_datum = /datum/antagonist/space_dragon
antag_flag = ROLE_SPACE_DRAGON
antag_flag_override = ROLE_SPACE_DRAGON
- enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
+ enemy_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 1
weight = 4
@@ -635,7 +649,7 @@
name = "Abductors"
antag_datum = /datum/antagonist/abductor
antag_flag = ROLE_ABDUCTOR
- enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
+ enemy_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 2
required_applicants = 2
@@ -674,7 +688,7 @@
antag_datum = /datum/antagonist/swarmer
antag_flag = ROLE_SWARMER
required_type = /mob/dead/observer
- enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
+ enemy_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 0
weight = 3
@@ -707,7 +721,7 @@
name = "Space Ninja"
antag_datum = /datum/antagonist/ninja
antag_flag = ROLE_NINJA
- enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
+ enemy_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 1
weight = 4
@@ -747,7 +761,7 @@
name = "Spiders"
antag_flag = ROLE_SPIDER
required_type = /mob/dead/observer
- enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
+ enemy_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 0
weight = 3
@@ -765,7 +779,7 @@
name = "Revenant"
antag_datum = /datum/antagonist/revenant
antag_flag = ROLE_REVENANT
- enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
+ enemy_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 1
weight = 4
@@ -830,7 +844,7 @@
name = "Space Pirates"
antag_flag = "Space Pirates"
required_type = /mob/dead/observer
- enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
+ enemy_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 3
weight = 4
@@ -852,8 +866,8 @@
name = "Obsessed"
antag_datum = /datum/antagonist/obsessed
antag_flag = ROLE_OBSESSED
- restricted_roles = list("Cyborg", "AI", "Positronic Brain")
- enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
+ restricted_roles = list(JOB_AI, JOB_CYBORG, ROLE_POSITRONIC_BRAIN)
+ enemy_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_DETECTIVE)
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 1
weight = 4
diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm
index d8ac83e0dcd..4ee8768e9e5 100644
--- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm
+++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm
@@ -11,8 +11,12 @@
antag_flag = ROLE_TRAITOR
antag_datum = /datum/antagonist/traitor
minimum_required_age = 0
- protected_roles = list("Prisoner","Security Officer", "Warden", "Detective", "Head of Security", "Captain")
- restricted_roles = list("Cyborg", "AI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Vanguard Operative", "Nanotrasen Representative", "Blueshield", "Civil Disputes Officer", "Security Sergeant", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard") //SKYRAT EDIT - Sec_haul
+ protected_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_PRISONER)
+ restricted_roles = list(JOB_AI, JOB_CYBORG,
+ 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 ADDITION - ALL AFTER JOB_CYBORG
required_candidates = 1
weight = 5
cost = 8 // Avoid raising traitor threat above this, as it is the default low cost ruleset.
@@ -53,7 +57,7 @@
antag_flag = ROLE_MALF
antag_datum = /datum/antagonist/malf_ai
minimum_required_age = 14
- exclusive_roles = list("AI")
+ exclusive_roles = list(JOB_AI)
required_candidates = 1
weight = 3
cost = 18
@@ -97,8 +101,12 @@
name = "Blood Brothers"
antag_flag = ROLE_BROTHER
antag_datum = /datum/antagonist/brother
- protected_roles = list("Prisoner","Security Officer", "Warden", "Detective", "Head of Security", "Captain")
- restricted_roles = list("Cyborg", "AI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Vanguard Operative", "Nanotrasen Representative", "Blueshield", "Civil Disputes Officer", "Security Sergeant", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard") //SKYRAT EDIT - Sec_haul
+ protected_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_PRISONER)
+ restricted_roles = list(JOB_AI, JOB_CYBORG,
+ 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_CYBORG
required_candidates = 2
weight = 4
cost = 15
@@ -146,8 +154,12 @@
name = "Changelings"
antag_flag = ROLE_CHANGELING
antag_datum = /datum/antagonist/changeling
- protected_roles = list("Prisoner","Security Officer", "Warden", "Detective", "Head of Security", "Captain")
- restricted_roles = list("Cyborg", "AI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Vanguard Operative", "Nanotrasen Representative", "Blueshield", "Civil Disputes Officer", "Security Sergeant", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard") //SKYRAT EDIT - Sec_haul
+ protected_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_PRISONER)
+ restricted_roles = list(JOB_AI, JOB_CYBORG,
+ 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_CYBORG
required_candidates = 1
weight = 3
cost = 16
@@ -185,8 +197,12 @@
name = "Heretics"
antag_flag = ROLE_HERETIC
antag_datum = /datum/antagonist/heretic
- protected_roles = list("Prisoner","Security Officer", "Warden", "Detective", "Head of Security", "Captain")
- restricted_roles = list("Cyborg", "AI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Vanguard Operative", "Nanotrasen Representative", "Blueshield", "Civil Disputes Officer", "Security Sergeant", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard") //SKYRAT EDIT - Sec_haul
+ protected_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_PRISONER)
+ restricted_roles = list(JOB_AI, JOB_CYBORG,
+ 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_CYBORG
required_candidates = 1
weight = 3
cost = 15
@@ -233,7 +249,7 @@
antag_datum = /datum/antagonist/wizard
flags = HIGH_IMPACT_RULESET
minimum_required_age = 14
- restricted_roles = list("Head of Security", "Captain") // Just to be sure that a wizard getting picked won't ever imply a Captain or HoS not getting drafted
+ restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY) // Just to be sure that a wizard getting picked won't ever imply a Captain or HoS not getting drafted
required_candidates = 1
weight = 2
cost = 20
@@ -276,7 +292,11 @@
antag_flag = ROLE_CULTIST
antag_datum = /datum/antagonist/cult
minimum_required_age = 14
- restricted_roles = list("Cyborg", "AI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Vanguard Operative", "Nanotrasen Representative", "Blueshield", "Civil Disputes Officer", "Security Sergeant", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard") //SKYRAT EDIT - Sec_haul
+ restricted_roles = list(JOB_AI, JOB_CYBORG,
+ 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_CYBORG
required_candidates = 2
weight = 3
cost = 20
@@ -334,7 +354,7 @@
antag_datum = /datum/antagonist/nukeop
var/datum/antagonist/antag_leader_datum = /datum/antagonist/nukeop/leader
minimum_required_age = 14
- restricted_roles = list("Head of Security", "Captain") // Just to be sure that a nukie getting picked won't ever imply a Captain or HoS not getting drafted
+ restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_SECURITY) // Just to be sure that a nukie getting picked won't ever imply a Captain or HoS not getting drafted
required_candidates = 5
weight = 3
cost = 20
@@ -419,7 +439,11 @@
antag_flag_override = ROLE_REV
antag_datum = /datum/antagonist/rev/head
minimum_required_age = 14
- restricted_roles = list("Cyborg", "AI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Vanguard Operative", "Nanotrasen Representative", "Blueshield", "Civil Disputes Officer", "Security Sergeant", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard") //SKYRAT EDIT - Sec_haul
+ restricted_roles = list(JOB_AI, JOB_CYBORG,
+ 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_CYBORG
required_candidates = 3
weight = 3
delay = 7 MINUTES
@@ -502,8 +526,12 @@
persistent = TRUE
antag_datum = /datum/antagonist/gang
antag_flag = ROLE_FAMILIES
- protected_roles = list("Prisoner", "Head of Personnel")
- restricted_roles = list("Cyborg", "AI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Vanguard Operative", "Nanotrasen Representative", "Blueshield", "Civil Disputes Officer", "Security Sergeant", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard") //SKYRAT EDIT - Sec_haul
+ protected_roles = list(JOB_HEAD_OF_PERSONNEL, JOB_PRISONER)
+ restricted_roles = list(JOB_AI, JOB_CYBORG,
+ 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_CYBORG
required_candidates = 3
weight = 1
cost = 19
@@ -598,7 +626,7 @@
name = "Monkey"
antag_flag = ROLE_MONKEY
antag_datum = /datum/antagonist/monkey/leader
- restricted_roles = list("Cyborg", "AI", "Prisoner")
+ restricted_roles = list(JOB_AI, JOB_CYBORG, JOB_PRISONER)
required_candidates = 1
weight = 3
cost = 0
diff --git a/code/game/gamemodes/eldritch_cult/eldritch_cult.dm b/code/game/gamemodes/eldritch_cult/eldritch_cult.dm
deleted file mode 100644
index 66cefd06208..00000000000
--- a/code/game/gamemodes/eldritch_cult/eldritch_cult.dm
+++ /dev/null
@@ -1,69 +0,0 @@
-/datum/game_mode/heretics
- name = "heresy"
- config_tag = "heresy"
- report_type = "heresy"
- antag_flag = ROLE_HERETIC
- false_report_weight = 5
- protected_jobs = list("Prisoner", "Security Officer", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Corrections Officer", "Warden", "Blueshield", "Detective", "Head of Security", "Captain") //SKYRAT EDIT ADDITION - SEC_HAUL
- restricted_jobs = list("AI", "Cyborg")
- required_players = 0
- required_enemies = 1
- recommended_enemies = 4
- reroll_friendly = 1
- enemy_minimum_age = 0
-
- announce_span = "danger"
- announce_text = "Heretics have been spotted on the station!\n\
- Heretics: Accomplish your objectives.\n\
- Crew: Do not let the madman succeed!"
-
- var/ecult_possible = 4 //hard limit on culties if scaling is turned off
- var/num_ecult = 1
- var/list/culties = list()
-
-/datum/game_mode/heretics/pre_setup()
-
- if(CONFIG_GET(flag/protect_roles_from_antagonist))
- restricted_jobs += protected_jobs
-
- if(CONFIG_GET(flag/protect_assistant_from_antagonist))
- restricted_jobs += "Assistant"
-
-
- var/esc = CONFIG_GET(number/ecult_scaling_coeff)
- if(esc)
- num_ecult = min(max(1, min(round(num_players() / (esc * 2)) + 2, round(num_players() / esc))),4)
- else
- num_ecult = max(1, min(num_players(), ecult_possible))
-
- for(var/i in 1 to num_ecult)
- if(!antag_candidates.len)
- break
- var/datum/mind/cultie = antag_pick(antag_candidates)
- antag_candidates -= cultie
- cultie.special_role = ROLE_HERETIC
- cultie.restricted_roles = restricted_jobs
- culties += cultie
-
- var/enough_heretics = culties.len > 0
-
- if(!enough_heretics)
- setup_error = "Not enough heretic candidates"
- return FALSE
- else
- for(var/antag in culties)
- GLOB.pre_setup_antags += antag
- return TRUE
-
-/datum/game_mode/heretics/post_setup()
- for(var/c in culties)
- var/datum/mind/cultie = c
- log_game("[key_name(cultie)] has been selected as a heretic!")
- var/datum/antagonist/heretic/new_antag = new()
- cultie.add_antag_datum(new_antag)
- GLOB.pre_setup_antags -= cultie
- return ..()
-
-/datum/game_mode/heretics/generate_report()
- return "Cybersun Industries has announced that they have successfully raided a high-security library. The library contained a very dangerous book that was \
- shown to posses anomalous properties. We suspect that the book has been copied over, Stay vigilant!"
diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm
deleted file mode 100644
index 4e4b12f440c..00000000000
--- a/code/game/gamemodes/gang/gang.dm
+++ /dev/null
@@ -1,50 +0,0 @@
-/datum/game_mode/gang
- name = "Families"
- config_tag = "families"
- antag_flag = ROLE_FAMILIES
- false_report_weight = 5
- required_players = 40
- required_enemies = 6
- recommended_enemies = 6
- announce_span = "danger"
- announce_text = "Grove For Lyfe!"
- reroll_friendly = FALSE
- restricted_jobs = list("Cyborg", "AI", "Prisoner","Security Officer", "Security Medic", "Securty Sergeant", "Corrections Officer", "Warden", "Blueshield", "Detective", "Head of Security", "Captain", "Head of Personnel") //SKYRAT EDIT ADDITION - SEC_HAUL
- protected_jobs = list()
-
- /// A reference to the handler that is used to run pre_setup(), post_setup(), etc..
- var/datum/gang_handler/handler
-
-/datum/game_mode/gang/warriors
- name = "Warriors"
- config_tag = "warriors"
- announce_text = "Can you survive this onslaught?"
-
-/datum/game_mode/gang/warriors/pre_setup()
- handler = new /datum/gang_handler(antag_candidates,restricted_jobs)
- var/list/datum/antagonist/gang/gangs_to_generate = subtypesof(/datum/antagonist/gang)
- handler.gangs_to_generate = gangs_to_generate.len
- handler.gang_balance_cap = 3
- return handler.pre_setup_analogue()
-
-/datum/game_mode/gang/pre_setup()
- handler = new /datum/gang_handler(antag_candidates,restricted_jobs)
- return handler.pre_setup_analogue()
-
-/datum/game_mode/gang/Destroy()
- QDEL_NULL(handler)
- return ..()
-
-/datum/game_mode/gang/post_setup()
- handler.post_setup_analogue(FALSE)
- gamemode_ready = TRUE
- return ..()
-
-/datum/game_mode/gang/process()
- handler.process_analogue()
-
-/datum/game_mode/gang/set_round_result()
- return handler.set_round_result_analogue()
-
-/datum/game_mode/gang/generate_report()
- return "Potential violent criminal activity has been detected on board your station, and we believe the Spinward Stellar Coalition may be conducting an audit of us. Keep an eye out for tagging of turf, color coordination, and suspicious people asking you to say things a little closer to their chest."
diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm
index 0b56182d823..433d2a2a03a 100644
--- a/code/game/gamemodes/objective_items.dm
+++ b/code/game/gamemodes/objective_items.dm
@@ -29,49 +29,49 @@
name = "the captain's antique laser gun."
targetitem = /obj/item/gun/energy/laser/captain
difficulty = 5
- excludefromjob = list("Captain")
+ excludefromjob = list(JOB_CAPTAIN)
/datum/objective_item/steal/hoslaser
name = "the head of security's personal laser gun."
targetitem = /obj/item/gun/energy/e_gun/hos
difficulty = 10
- excludefromjob = list("Head Of Security")
+ excludefromjob = list(JOB_HEAD_OF_SECURITY)
/datum/objective_item/steal/handtele
name = "a hand teleporter."
targetitem = /obj/item/hand_tele
difficulty = 5
- excludefromjob = list("Captain", "Research Director")
+ excludefromjob = list(JOB_CAPTAIN, JOB_RESEARCH_DIRECTOR)
/datum/objective_item/steal/jetpack
name = "the Captain's jetpack."
targetitem = /obj/item/tank/jetpack/oxygen/captain
difficulty = 5
- excludefromjob = list("Captain")
+ excludefromjob = list(JOB_CAPTAIN)
/datum/objective_item/steal/magboots
name = "the chief engineer's advanced magnetic boots."
targetitem = /obj/item/clothing/shoes/magboots/advance
difficulty = 5
- excludefromjob = list("Chief Engineer")
+ excludefromjob = list(JOB_CHIEF_ENGINEER)
/datum/objective_item/steal/capmedal
name = "the medal of captaincy."
targetitem = /obj/item/clothing/accessory/medal/gold/captain
difficulty = 5
- excludefromjob = list("Captain")
+ excludefromjob = list(JOB_CAPTAIN)
/datum/objective_item/steal/hypo
name = "the hypospray."
targetitem = /obj/item/reagent_containers/hypospray/cmo
difficulty = 5
- excludefromjob = list("Chief Medical Officer")
+ excludefromjob = list(JOB_CHIEF_MEDICAL_OFFICER)
/datum/objective_item/steal/nukedisc
name = "the nuclear authentication disk."
targetitem = /obj/item/disk/nuclear
difficulty = 5
- excludefromjob = list("Captain")
+ excludefromjob = list(JOB_CAPTAIN)
/datum/objective_item/steal/nukedisc/check_special_completion(obj/item/disk/nuclear/N)
return !N.fake
@@ -80,13 +80,13 @@
name = "a reflector trenchcoat."
targetitem = /obj/item/clothing/suit/hooded/ablative
difficulty = 3
- excludefromjob = list("Head of Security", "Warden")
+ excludefromjob = list(JOB_HEAD_OF_SECURITY, JOB_WARDEN)
/datum/objective_item/steal/reactive
name = "the reactive teleport armor."
targetitem = /obj/item/clothing/suit/armor/reactive/teleport
difficulty = 5
- excludefromjob = list("Research Director")
+ excludefromjob = list(JOB_RESEARCH_DIRECTOR)
/datum/objective_item/steal/documents
name = "any set of secret documents of any organization."
@@ -106,7 +106,7 @@
name = "the source code for Project Goon from the master R&D server mainframe."
targetitem = /obj/item/computer_hardware/hard_drive/cluster/hdd_theft
difficulty = 10
- excludefromjob = list("Research Director","Scientist", "Geneticist", "Roboticist")
+ excludefromjob = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST)
/datum/objective_item/steal/hdd_extraction/New()
special_equipment += /obj/item/paper/guides/antag/hdd_extraction
@@ -130,7 +130,10 @@
name = "28 moles of plasma (full tank)."
targetitem = /obj/item/tank
difficulty = 3
- excludefromjob = list("Chief Engineer","Research Director","Station Engineer","Scientist","Atmospheric Technician")
+ excludefromjob = list(
+ JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN,
+ JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST,
+ )
/datum/objective_item/steal/plasma/check_special_completion(obj/item/tank/T)
var/target_amount = text2num(name)
@@ -155,7 +158,7 @@
name = "the station blueprints."
targetitem = /obj/item/areaeditor/blueprints
difficulty = 10
- excludefromjob = list("Chief Engineer")
+ excludefromjob = list(JOB_CHIEF_ENGINEER)
altitems = list(/obj/item/photo)
/datum/objective_item/steal/blueprints/check_special_completion(obj/item/I)
@@ -171,7 +174,7 @@
name = "an unused sample of slime extract."
targetitem = /obj/item/slime_extract
difficulty = 3
- excludefromjob = list("Research Director","Scientist")
+ excludefromjob = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST)
/datum/objective_item/steal/slime/check_special_completion(obj/item/slime_extract/E)
if(E.Uses > 0)
@@ -182,7 +185,7 @@
name = "The Blackbox."
targetitem = /obj/item/blackbox
difficulty = 10
- excludefromjob = list("Chief Engineer","Station Engineer","Atmospheric Technician")
+ excludefromjob = list(JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN)
//Unique Objectives
/datum/objective_item/special/New()
diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm
deleted file mode 100644
index 5d6d6557ae0..00000000000
--- a/code/game/gamemodes/revolution/revolution.dm
+++ /dev/null
@@ -1,206 +0,0 @@
-// To add a rev to the list of revolutionaries, make sure it's rev (with if(SSticker.mode.name == "revolution)),
-// then call SSticker.mode:add_revolutionary(_THE_PLAYERS_MIND_)
-// nothing else needs to be done, as that proc will check if they are a valid target.
-// Just make sure the converter is a head before you call it!
-// To remove a rev (from brainwashing or w/e), call SSticker.mode:remove_revolutionary(_THE_PLAYERS_MIND_),
-// this will also check they're not a head, so it can just be called freely
-// If the game somtimes isn't registering a win properly, then our check_finished is fucked up.
-
-
-/datum/game_mode/revolution
- name = "revolution"
- config_tag = "revolution"
- report_type = "revolution"
- antag_flag = ROLE_REV
- false_report_weight = 10
- restricted_jobs = list("Prisoner", "Security Officer", "Security Medic", "Security Sergeant", "Corrections Officer", "Civil Disputes Officer", "Warden", "Detective", "Blueshield", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer") //SKYRAT EDIT ADDITION - SEC_HAUL
- required_jobs = list(list("Captain"=1),list("Head of Personnel"=1),list("Head of Security"=1),list("Chief Engineer"=1),list("Research Director"=1),list("Chief Medical Officer"=1)) //Any head present
- required_players = 30
- required_enemies = 2
- recommended_enemies = 3
- enemy_minimum_age = 14
-
- announce_span = "Revolution"
- announce_text = "Some crewmembers are attempting a coup!\n\
- Revolutionaries: Expand your cause and overthrow the heads of staff by execution or otherwise.\n\
- Crew: Prevent the revolutionaries from taking over the station."
-
- var/finished = 0
- var/max_headrevs = 3
- var/datum/team/revolution/revolution
- var/list/datum/mind/headrev_candidates = list()
- var/end_when_heads_dead = TRUE
-
-///////////////////////////////////////////////////////////////////////////////
-//Gets the round setup, cancelling if there's not enough players at the start//
-///////////////////////////////////////////////////////////////////////////////
-/datum/game_mode/revolution/pre_setup()
-
- if(CONFIG_GET(flag/protect_roles_from_antagonist))
- restricted_jobs += protected_jobs
-
- if(CONFIG_GET(flag/protect_assistant_from_antagonist))
- restricted_jobs += "Assistant"
-
- for (var/i=1 to max_headrevs)
- if (antag_candidates.len==0)
- break
- var/datum/mind/lenin = antag_pick(antag_candidates)
- antag_candidates -= lenin
- headrev_candidates += lenin
- lenin.restricted_roles = restricted_jobs
-
- if(headrev_candidates.len < required_enemies)
- setup_error = "Not enough headrev candidates"
- return FALSE
-
- for(var/antag in headrev_candidates)
- GLOB.pre_setup_antags += antag
- return TRUE
-
-/datum/game_mode/revolution/post_setup()
- var/list/heads = SSjob.get_living_heads()
- var/list/sec = SSjob.get_living_sec()
- var/weighted_score = min(max(round(heads.len - ((8 - sec.len) / 3)),1),max_headrevs)
-
- for(var/datum/mind/rev_mind in headrev_candidates) //People with return to lobby may still be in the lobby. Let's pick someone else in that case.
- if(isnewplayer(rev_mind.current))
- headrev_candidates -= rev_mind
- var/list/newcandidates = shuffle(antag_candidates)
- if(newcandidates.len == 0)
- continue
- for(var/M in newcandidates)
- var/datum/mind/lenin = M
- antag_candidates -= lenin
- newcandidates -= lenin
- if(isnewplayer(lenin.current)) //We don't want to make the same mistake again
- continue
- else
- var/mob/Nm = lenin.current
- if(Nm.job in restricted_jobs) //Don't make the HOS a replacement revhead
- antag_candidates += lenin //Let's let them keep antag chance for other antags
- continue
-
- headrev_candidates += lenin
- break
-
- while(weighted_score < headrev_candidates.len) //das vi danya
- var/datum/mind/trotsky = pick(headrev_candidates)
- antag_candidates += trotsky
- headrev_candidates -= trotsky
-
- revolution = new()
-
- for(var/datum/mind/rev_mind in headrev_candidates)
- log_game("[key_name(rev_mind)] has been selected as a head rev")
- var/datum/antagonist/rev/head/new_head = new()
- new_head.give_flash = TRUE
- new_head.give_hud = TRUE
- new_head.remove_clumsy = TRUE
- rev_mind.add_antag_datum(new_head,revolution)
- GLOB.pre_setup_antags -= rev_mind
-
- revolution.update_objectives()
- revolution.update_heads()
-
- SSshuttle.registerHostileEnvironment(src)
- ..()
-
-
-///////////////////////////////////////////
-//Checks who won and if the round is over//
-///////////////////////////////////////////
-/datum/game_mode/revolution/check_finished()
- if(check_rev_victory())
- finished = 1
- else if(check_heads_victory())
- finished = 2
- if(CONFIG_GET(keyed_list/continuous)["revolution"])
- if(finished)
- SSshuttle.clearHostileEnvironment(src)
- return ..()
- if(finished && end_when_heads_dead)
- return TRUE
- else
- return ..()
-
-///////////////////////////////////////////////////
-//Deals with converting players to the revolution//
-///////////////////////////////////////////////////
-/proc/is_revolutionary(mob/M)
- return M && istype(M) && M.mind && M.mind.has_antag_datum(/datum/antagonist/rev)
-
-/proc/is_head_revolutionary(mob/M)
- return M && istype(M) && M.mind && M.mind.has_antag_datum(/datum/antagonist/rev/head)
-
-//////////////////////////
-//Checks for rev victory//
-//////////////////////////
-/datum/game_mode/revolution/proc/check_rev_victory()
- for(var/datum/objective/mutiny/objective in revolution.objectives)
- if(!(objective.check_completion()))
- return FALSE
- return TRUE
-
-/////////////////////////////
-//Checks for a head victory//
-/////////////////////////////
-/datum/game_mode/revolution/proc/check_heads_victory()
- for(var/datum/mind/rev_mind in revolution.head_revolutionaries())
- var/turf/T = get_turf(rev_mind.current)
- if(!considered_afk(rev_mind) && considered_alive(rev_mind) && is_station_level(T.z))
- if(ishuman(rev_mind.current))
- return FALSE
- return TRUE
-
-
-/datum/game_mode/revolution/set_round_result()
- ..()
- if(finished == 1)
- SSticker.mode_result = "win - heads killed"
- SSticker.news_report = REVS_WIN
- else if(finished == 2)
- SSticker.mode_result = "loss - rev heads killed"
- SSticker.news_report = REVS_LOSE
-
-//TODO What should be displayed for revs in non-rev rounds
-/datum/game_mode/revolution/special_report()
- if(finished == 1)
- return "
The heads of staff were killed or exiled! The revolutionaries win!
"
- else if(finished == 2)
- return "The heads of staff managed to stop the revolution!
"
-
-/datum/game_mode/revolution/generate_report()
- return "Employee unrest has spiked in recent weeks, with several attempted mutinies on heads of staff. Some crew have been observed using flashbulb devices to blind their colleagues, \
- who then follow their orders without question and work towards dethroning departmental leaders. Watch for behavior such as this with caution. If the crew attempts a mutiny, you and \
- your heads of staff are fully authorized to execute them using lethal weaponry - they will be later cloned and interrogated at Central Command."
-
-/datum/game_mode/revolution/extended
- name = "extended_revolution"
- config_tag = "extended_revolution"
- end_when_heads_dead = FALSE
-
-/datum/game_mode/revolution/speedy
- name = "speedy_revolution"
- config_tag = "speedy_revolution"
- end_when_heads_dead = FALSE
- var/endtime = null
- var/fuckingdone = FALSE
- var/check_counter = 0
-
-/datum/game_mode/revolution/speedy/pre_setup()
- endtime = world.time + 20 MINUTES
- return ..()
-
-/datum/game_mode/revolution/speedy/process()
- . = ..()
- check_counter++
- if(check_counter == 5)
- check_counter = 0
- if (world.time > endtime && !fuckingdone)
- fuckingdone = TRUE
- for (var/obj/machinery/nuclearbomb/N in GLOB.nuke_list)
- if (!N.timing)
- N.timer_set = 200
- N.set_safety()
- N.set_active()
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
deleted file mode 100644
index e0a0804ab53..00000000000
--- a/code/game/gamemodes/traitor/traitor.dm
+++ /dev/null
@@ -1,102 +0,0 @@
-/datum/game_mode
- var/traitor_name = "traitor"
- var/list/datum/mind/traitors = list()
-
-/datum/game_mode/traitor
- name = "traitor"
- config_tag = "traitor"
- report_type = "traitor"
- antag_flag = ROLE_TRAITOR
- false_report_weight = 20 //Reports of traitors are pretty common.
- restricted_jobs = list("Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances
- protected_jobs = list("Prisoner","Security Officer", "Corrections Officer", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Warden", "Blueshield", "Detective", "Head of Security", "Captain") //SKYRAT EDIT CHANGE - SEC_HAUL
- required_players = 0
- required_enemies = 1
- recommended_enemies = 4
- reroll_friendly = 1
- enemy_minimum_age = 0
-
- announce_span = "danger"
- announce_text = "There are Syndicate agents on the station!\n\
- Traitors: Accomplish your objectives.\n\
- Crew: Do not let the traitors succeed!"
-
- var/list/datum/mind/pre_traitors = list()
- var/traitors_possible = 10 //hard limit on traitors if scaling is turned off //SKYRAT EDIT CHANGE ORIGINAL: 4
- var/num_modifier = 0 // Used for gamemodes, that are a child of traitor, that need more than the usual.
- var/antag_datum = /datum/antagonist/traitor //what type of antag to create
- var/traitors_required = TRUE //Will allow no traitors
-
-
-/datum/game_mode/traitor/pre_setup()
-
- if(CONFIG_GET(flag/protect_roles_from_antagonist))
- restricted_jobs += protected_jobs
-
- if(CONFIG_GET(flag/protect_assistant_from_antagonist))
- restricted_jobs += "Assistant"
-
- var/num_traitors = 1
-
- var/tsc = CONFIG_GET(number/traitor_scaling_coeff)
- if(tsc)
- //num_traitors = max(1, min(round(num_players() / (tsc * 2)) + 2 + num_modifier, round(num_players() / tsc) + num_modifier)) - ORIGINAL
- num_traitors = max(1, round(num_players()/tsc) + num_modifier) //SKYRAT EDIT CHANGE
- message_admins("The roundtype is traitor, based off of coefficient calculations there should be [num_traitors] traitors.") //SKYRAT EDIT ADDITION
- else
- num_traitors = max(1, min(num_players(), traitors_possible))
- var/num_of_traitors = 0 //SKYRAT EDIT ADDITION
- for(var/j = 0, j < num_traitors, j++)
- if (!antag_candidates.len)
- break
- var/datum/mind/traitor = antag_pick(antag_candidates)
- pre_traitors += traitor
- traitor.special_role = traitor_name
- traitor.restricted_roles = restricted_jobs
- log_game("[key_name(traitor)] has been selected as a [traitor_name]")
- antag_candidates.Remove(traitor)
- num_of_traitors++
- message_admins("The number of traitors should be [num_traitors] and there are currently [num_of_traitors].") //SKYRAT EDIT ADDITION
-
- var/enough_tators = !traitors_required || pre_traitors.len > 0
-
- if(!enough_tators)
- setup_error = "Not enough traitor candidates"
- return FALSE
- else
- for(var/antag in pre_traitors)
- GLOB.pre_setup_antags += antag
- return TRUE
-
-
-/datum/game_mode/traitor/post_setup()
- for(var/datum/mind/traitor in pre_traitors)
- var/datum/antagonist/traitor/new_antag = new antag_datum()
- addtimer(CALLBACK(traitor, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100))
- GLOB.pre_setup_antags -= traitor
- ..()
-
- //We're not actually ready until all traitors are assigned.
- gamemode_ready = FALSE
- addtimer(VARSET_CALLBACK(src, gamemode_ready, TRUE), 101)
- return TRUE
-
-/datum/game_mode/traitor/make_antag_chance(mob/living/carbon/human/character) //Assigns traitor to latejoiners
- var/tsc = CONFIG_GET(number/traitor_scaling_coeff)
- var/traitorcap = min(round(GLOB.joined_player_list.len / (tsc * 2)) + 2 + num_modifier, round(GLOB.joined_player_list.len / tsc) + num_modifier)
- if((SSticker.mode.traitors.len + pre_traitors.len) >= traitorcap) //Upper cap for number of latejoin antagonists
- return
- if((SSticker.mode.traitors.len + pre_traitors.len) <= (traitorcap - 2) || prob(100 / (tsc * 2)))
- if(antag_flag in character.client.prefs.be_special)
- if(!is_banned_from(character.ckey, list(ROLE_TRAITOR, ROLE_SYNDICATE)) && !QDELETED(character))
- if(age_check(character.client))
- if(!(character.job in restricted_jobs))
- add_latejoin_traitor(character.mind)
-
-/datum/game_mode/traitor/proc/add_latejoin_traitor(datum/mind/character)
- var/datum/antagonist/traitor/new_antag = new antag_datum()
- character.add_antag_datum(new_antag)
-
-/datum/game_mode/traitor/generate_report()
- return "Although more specific threats are commonplace, you should always remain vigilant for Syndicate agents aboard your station. Syndicate communications have implied that many \
- Nanotrasen employees are Syndicate agents with hidden memories that may be activated at a moment's notice, so it's possible that these agents might not even know their positions."
diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm
index 6b664f5bc9d..cf3b703f974 100644
--- a/code/game/machinery/computer/crew.dm
+++ b/code/game/machinery/computer/crew.dm
@@ -97,64 +97,71 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
var/list/jobs = list(
// Note that jobs divisible by 10 are considered heads of staff, and bolded
// 00: Captain
- "Captain" = 00,
- "Blueshield" = 01, //SKRYAT EDIT ADDITION
+ JOB_CAPTAIN = 00,
+ JOB_BLUESHIELD = 01, // SKYRAT EDIT ADDITION
// 10-19: Security
- "Head of Security" = 10,
- "Warden" = 11,
- "Security Officer" = 12,
- "Security Officer (Medical)" = 13,
- "Security Officer (Engineering)" = 14,
- "Security Officer (Science)" = 15,
- "Security Officer (Cargo)" = 16,
- "Detective" = 17,
- "Security Medic" = 18, //SKYRAT EDIT ADDITION - SEC_HAUL
- "Security Sergeant" = 19, //SKYRAT EDIT ADDITION - SEC_HAUL
+ JOB_HEAD_OF_SECURITY = 10,
+ JOB_WARDEN = 11,
+ JOB_SECURITY_OFFICER = 12,
+ JOB_SECURITY_OFFICER_MEDICAL = 13,
+ JOB_SECURITY_OFFICER_ENGINEERING = 14,
+ JOB_SECURITY_OFFICER_SCIENCE = 15,
+ JOB_SECURITY_OFFICER_SUPPLY = 16,
+ JOB_DETECTIVE = 17,
+ JOB_SECURITY_MEDIC = 18, // SKYRAT EDIT ADDITION
+ JOB_SECURITY_SERGEANT = 19, // SKYRAT EDIT ADDITION
// 20-29: Medbay
- "Chief Medical Officer" = 20,
- "Chemist" = 21,
- "Virologist" = 22,
- "Medical Doctor" = 23,
- "Paramedic" = 24,
+ JOB_CHIEF_MEDICAL_OFFICER = 20,
+ JOB_CHEMIST = 21,
+ JOB_VIROLOGIST = 22,
+ JOB_MEDICAL_DOCTOR = 23,
+ JOB_PARAMEDIC = 24,
// 30-39: Science
- "Research Director" = 30,
- "Scientist" = 31,
- "Roboticist" = 32,
- "Geneticist" = 33,
- "Vanguard Operative" = 34, //SKYRAT EDIT ADDITION
+ JOB_RESEARCH_DIRECTOR = 30,
+ JOB_SCIENTIST = 31,
+ JOB_ROBOTICIST = 32,
+ JOB_GENETICIST = 33,
+ JOB_VANGUARD_OPERATIVE = 34, // SKYRAT EDIT ADDITION
// 40-49: Engineering
- "Chief Engineer" = 40,
- "Station Engineer" = 41,
- "Atmospheric Technician" = 42,
+ JOB_CHIEF_ENGINEER = 40,
+ JOB_STATION_ENGINEER = 41,
+ JOB_ATMOSPHERIC_TECHNICIAN = 42,
// 50-59: Cargo
- "Head of Personnel" = 50,
- "Quartermaster" = 51,
- "Shaft Miner" = 52,
- "Cargo Technician" = 53,
+ JOB_HEAD_OF_PERSONNEL = 50,
+ JOB_QUARTERMASTER = 51,
+ JOB_SHAFT_MINER = 52,
+ JOB_CARGO_TECHNICIAN = 53,
// 60+: Civilian/other
- "Bartender" = 61,
- "Cook" = 62,
- "Botanist" = 63,
- "Curator" = 64,
- "Chaplain" = 65,
- "Clown" = 66,
- "Mime" = 67,
- "Janitor" = 68,
- "Lawyer" = 69,
- "Psychologist" = 71,
- // ANYTHING ELSE = UNKNOWN_JOB_ID, Unknowns/custom jobs will appear after civilians, and before assistants
- "Assistant" = 999,
-
+ JOB_BARTENDER = 61,
+ JOB_COOK = 62,
+ JOB_BOTANIST = 63,
+ JOB_CURATOR = 64,
+ JOB_CHAPLAIN = 65,
+ JOB_CLOWN = 66,
+ JOB_MIME = 67,
+ JOB_JANITOR = 68,
+ JOB_LAWYER = 69,
+ JOB_PSYCHOLOGIST = 71,
// 200-229: Centcom
- "Admiral" = 200,
- "CentCom Commander" = 210,
- "Custodian" = 211,
- "Medical Officer" = 212,
- "Research Officer" = 213,
- "Emergency Response Team Commander" = 220,
- "Security Response Officer" = 221,
- "Engineer Response Officer" = 222,
- "Medical Response Officer" = 223
+ JOB_CENTCOM_ADMIRAL = 200,
+ JOB_CENTCOM = 201,
+ JOB_CENTCOM_OFFICIAL = 210,
+ JOB_CENTCOM_COMMANDER = 211,
+ JOB_CENTCOM_BARTENDER = 212,
+ JOB_CENTCOM_CUSTODIAN = 213,
+ JOB_CENTCOM_MEDICAL_DOCTOR = 214,
+ JOB_CENTCOM_RESEARCH_OFFICER = 215,
+ JOB_ERT_COMMANDER = 220,
+ JOB_ERT_OFFICER = 221,
+ JOB_ERT_ENGINEER = 222,
+ JOB_ERT_MEDICAL_DOCTOR = 223,
+ JOB_ERT_CLOWN = 224,
+ JOB_ERT_CHAPLAIN = 225,
+ JOB_ERT_JANITOR = 226,
+ JOB_ERT_DEATHSQUAD = 227,
+
+ // ANYTHING ELSE = UNKNOWN_JOB_ID, Unknowns/custom jobs will appear after civilians, and before assistants
+ JOB_ASSISTANT = 999,
)
/datum/crewmonitor/ui_interact(mob/user, datum/tgui/ui)
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 9a391c6ae5e..ce1f7e3bd93 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -933,7 +933,12 @@ What a mess.*/
temp += "Discharged"
temp += ""
if("rank")
- var/list/L = list( "Head of Personnel", "Captain", "AI", "Central Command" )
+ var/list/L = list(
+ JOB_CAPTAIN,
+ JOB_HEAD_OF_PERSONNEL,
+ JOB_AI,
+ JOB_CENTCOM,
+ )
//This was so silly before the change. Now it actually works without beating your head against the keyboard. /N
if((istype(active1, /datum/data/record) && L.Find(rank)))
temp = "Rank:
"
diff --git a/code/game/machinery/telecomms/computers/logbrowser.dm b/code/game/machinery/telecomms/computers/logbrowser.dm
index 87085b1d8ab..b324341c9ba 100644
--- a/code/game/machinery/telecomms/computers/logbrowser.dm
+++ b/code/game/machinery/telecomms/computers/logbrowser.dm
@@ -77,7 +77,7 @@
race = "Slime"
// sometimes M gets deleted prematurely for AIs... just check the job
- else if(ispath(mobtype, /mob/living/silicon) || C.parameters["job"] == "AI")
+ else if(ispath(mobtype, /mob/living/silicon) || C.parameters["job"] == JOB_AI)
race = "Artificial Life"
else if(isobj(mobtype))
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index 9ee9052aea8..75dc57d9fa3 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -255,7 +255,7 @@
return
var/mob/living/brain/brainmob = M.brainmob
- if(is_banned_from(brainmob.ckey, "Cyborg") || QDELETED(src) || QDELETED(brainmob) || QDELETED(user) || QDELETED(M) || !Adjacent(user))
+ if(is_banned_from(brainmob.ckey, JOB_CYBORG) || QDELETED(src) || QDELETED(brainmob) || QDELETED(user) || QDELETED(M) || !Adjacent(user))
if(!QDELETED(M))
to_chat(user, span_warning("This [M.name] does not seem to fit!"))
return
@@ -289,7 +289,7 @@
O.log_current_laws()
brainmob.mind?.remove_antags_for_borging()
- O.job = "Cyborg"
+ O.job = JOB_CYBORG
O.cell = chest.cell
chest.cell.forceMove(O)
@@ -348,7 +348,7 @@
chest.cell.forceMove(O)
chest.cell = null
O.locked = panel_locked
- O.job = "Cyborg"
+ O.job = JOB_CYBORG
forceMove(O)
O.robot_suit = src
if(!locomotion)
diff --git a/code/game/objects/structures/ai_core.dm b/code/game/objects/structures/ai_core.dm
index 201f97b0940..324b5ed8e06 100644
--- a/code/game/objects/structures/ai_core.dm
+++ b/code/game/objects/structures/ai_core.dm
@@ -197,7 +197,7 @@
return
var/mob/living/brain/B = M.brainmob
- if(!CONFIG_GET(flag/allow_ai) || (is_banned_from(B.ckey, "AI") && !QDELETED(src) && !QDELETED(user) && !QDELETED(M) && !QDELETED(user) && Adjacent(user)))
+ if(!CONFIG_GET(flag/allow_ai) || (is_banned_from(B.ckey, JOB_AI) && !QDELETED(src) && !QDELETED(user) && !QDELETED(M) && !QDELETED(user) && Adjacent(user)))
if(!QDELETED(M))
to_chat(user, span_warning("This [M.name] does not seem to fit!"))
return
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index f7aad8f38a3..f601969520e 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -85,7 +85,7 @@
body += "VV - "
body += "SP - "
body += "TP - "
- if (job == "Cyborg")
+ if (job == JOB_CYBORG)
body += "BP - "
body += "PM - "
body += "SM - "
diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm
index 4015bfcdc19..8e182665292 100644
--- a/code/modules/admin/verbs/mapping.dm
+++ b/code/modules/admin/verbs/mapping.dm
@@ -298,9 +298,9 @@ GLOBAL_VAR_INIT(say_disabled, FALSE)
for(var/job in subtypesof(/datum/job))
var/datum/job/JB = new job
switch(JB.title)
- if("AI")
+ if(JOB_AI)
final.Insert(icon('icons/mob/ai.dmi', "ai", SOUTH, 1), "AI")
- if("Cyborg")
+ if(JOB_CYBORG)
final.Insert(icon('icons/mob/robots.dmi', "robot", SOUTH, 1), "Cyborg")
else
for(var/obj/item/I in D)
diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm
index 4d70fecdafd..944c836a01b 100644
--- a/code/modules/admin/verbs/pray.dm
+++ b/code/modules/admin/verbs/pray.dm
@@ -21,7 +21,7 @@
var/font_color = "purple"
var/prayer_type = "PRAYER"
var/deity
- if(usr.job == "Chaplain")
+ if(usr.job == JOB_CHAPLAIN)
cross.icon_state = "kingyellow"
font_color = "blue"
prayer_type = "CHAPLAIN PRAYER"
@@ -40,7 +40,7 @@
prayer_type = "SPIRITUAL PRAYER"
var/msg_tmp = msg
- GLOB.requests.pray(usr.client, msg, usr.job == "Chaplain")
+ GLOB.requests.pray(usr.client, msg, usr.job == JOB_CHAPLAIN)
msg = span_adminnotice("[icon2html(cross, GLOB.admins)][prayer_type][deity ? " (to [deity])" : ""]: [ADMIN_FULLMONTY(src)] [ADMIN_SC(src)]: [msg]")
for(var/client/C in GLOB.admins)
if(C.prefs.chat_toggles & CHAT_PRAYER)
diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm
index f3ed4a06a38..5c76e98585e 100644
--- a/code/modules/antagonists/abductor/abductor.dm
+++ b/code/modules/antagonists/abductor/abductor.dm
@@ -142,7 +142,7 @@ GLOBAL_LIST_INIT(possible_abductor_names, list("Alpha","Beta","Gamma","Delta","E
to_chat(admin, span_warning("This only works on humans!"))
return
var/mob/living/carbon/human/H = owner.current
- var/gear = tgui_alert(admin,"Agent or Scientist Gear","Gear",list("Agent","Scientist"))
+ var/gear = tgui_alert(admin,"Agent or Scientist Gear", "Gear", list("Agent", "Scientist"))
if(gear)
if(gear=="Agent")
H.equipOutfit(/datum/outfit/abductor/agent)
diff --git a/code/modules/events/wizard/departmentrevolt.dm b/code/modules/events/wizard/departmentrevolt.dm
index 0ef4086f072..95383ce357e 100644
--- a/code/modules/events/wizard/departmentrevolt.dm
+++ b/code/modules/events/wizard/departmentrevolt.dm
@@ -56,7 +56,7 @@
switch(department)
if("Uprising of Assistants") //God help you
- jobs_to_revolt += "Assistant"
+ jobs_to_revolt += JOB_ASSISTANT
nation_name = pick("Assa", "Mainte", "Tunnel", "Gris", "Grey", "Liath", "Grigio", "Ass", "Assi")
if("Medical")
var/datum/job_department/job_department = SSjob.get_department_type(/datum/job_department/medical)
diff --git a/code/modules/jobs/job_types/ai.dm b/code/modules/jobs/job_types/ai.dm
index b09357a34cb..0aad9b71509 100644
--- a/code/modules/jobs/job_types/ai.dm
+++ b/code/modules/jobs/job_types/ai.dm
@@ -1,5 +1,5 @@
/datum/job/ai
- title = "AI"
+ title = JOB_AI
description = "Assist the crew, follow your laws, coordinate your cyborgs."
auto_deadmin_role_flags = DEADMIN_POSITION_SILICON
faction = FACTION_STATION
diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm
index 566abc2e997..a5b61b293f1 100644
--- a/code/modules/jobs/job_types/assistant.dm
+++ b/code/modules/jobs/job_types/assistant.dm
@@ -4,7 +4,7 @@ GLOBAL_DATUM(colored_assistant, /datum/colored_assistant)
Assistant
*/
/datum/job/assistant
- title = "Assistant"
+ title = JOB_ASSISTANT
description = "Get your space legs, assist people, ask the HoP to give you a job."
faction = FACTION_STATION
total_positions = 5
diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm
index 5e0bcff7cc7..42b167e1b56 100644
--- a/code/modules/jobs/job_types/atmospheric_technician.dm
+++ b/code/modules/jobs/job_types/atmospheric_technician.dm
@@ -1,7 +1,7 @@
/datum/job/atmospheric_technician
- title = "Atmospheric Technician"
+ title = JOB_ATMOSPHERIC_TECHNICIAN
description = "Ensure the air is breathable on the station, fill oxygen tanks, fight fires, purify the air."
- department_head = list("Chief Engineer")
+ department_head = list(JOB_CHIEF_ENGINEER)
faction = FACTION_STATION
total_positions = 3
spawn_positions = 2
diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm
index 24c1efbcdb9..7d6895a46fb 100644
--- a/code/modules/jobs/job_types/bartender.dm
+++ b/code/modules/jobs/job_types/bartender.dm
@@ -1,7 +1,7 @@
/datum/job/bartender
- title = "Bartender"
+ title = JOB_BARTENDER
description = "Serve booze, mix drinks, keep the crew drunk."
- department_head = list("Head of Personnel")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 1
spawn_positions = 1
diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm
index c7417e6d9c5..4660a3c082f 100644
--- a/code/modules/jobs/job_types/botanist.dm
+++ b/code/modules/jobs/job_types/botanist.dm
@@ -1,7 +1,7 @@
/datum/job/botanist
- title = "Botanist"
+ title = JOB_BOTANIST
description = "Grow plants for the cook, for medicine, and for recreation."
- department_head = list("Head of Personnel")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 3
spawn_positions = 2
diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm
index 645d0f679c1..42e605c6aa1 100755
--- a/code/modules/jobs/job_types/captain.dm
+++ b/code/modules/jobs/job_types/captain.dm
@@ -1,5 +1,5 @@
/datum/job/captain
- title = "Captain"
+ title = JOB_CAPTAIN
description = "Be responsible for the station, manage your Heads of Staff, \
keep the crew alive, be prepared to do anything and everything or die \
horribly trying."
diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm
index 0095b02066f..3ad767d093b 100644
--- a/code/modules/jobs/job_types/cargo_technician.dm
+++ b/code/modules/jobs/job_types/cargo_technician.dm
@@ -1,9 +1,9 @@
/datum/job/cargo_technician
- title = "Cargo Technician"
+ title = JOB_CARGO_TECHNICIAN
description = "Distribute supplies to the departments that ordered them, \
collect empty crates, load and unload the supply shuttle, \
ship bounty cubes."
- department_head = list("Head of Personnel")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 3
spawn_positions = 2
diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm
index 2a7c9b3a32d..17211d7cac8 100644
--- a/code/modules/jobs/job_types/chaplain.dm
+++ b/code/modules/jobs/job_types/chaplain.dm
@@ -1,8 +1,8 @@
/datum/job/chaplain
- title = "Chaplain"
+ title = JOB_CHAPLAIN
description = "Hold services and funerals, cremate people, preach your \
religion, protect the crew against cults."
- department_head = list("Head of Personnel")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 1
spawn_positions = 1
diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm
index 124d42df720..42b4a34f1b9 100644
--- a/code/modules/jobs/job_types/chemist.dm
+++ b/code/modules/jobs/job_types/chemist.dm
@@ -1,5 +1,5 @@
/datum/job/chemist
- title = "Chemist"
+ title = JOB_CHEMIST
description = "Supply the doctors with chemicals, make medicine, as well as \
less likable substances in the comfort of a fully reinforced room."
department_head = list("Chief Medical Officer")
diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm
index c7cf4b62613..776004c0e41 100644
--- a/code/modules/jobs/job_types/chief_engineer.dm
+++ b/code/modules/jobs/job_types/chief_engineer.dm
@@ -1,9 +1,9 @@
/datum/job/chief_engineer
- title = "Chief Engineer"
+ title = JOB_CHIEF_ENGINEER
description = "Coordinate engineering, ensure equipment doesn't get stolen, \
make sure the Supermatter doesn't blow up, maintain telecommunications."
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
- department_head = list("Captain")
+ department_head = list(JOB_CAPTAIN)
head_announce = list("Engineering")
faction = FACTION_STATION
total_positions = 1
diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm
index 8c1f9046a0a..6fb21354df7 100644
--- a/code/modules/jobs/job_types/chief_medical_officer.dm
+++ b/code/modules/jobs/job_types/chief_medical_officer.dm
@@ -1,8 +1,8 @@
/datum/job/chief_medical_officer
- title = "Chief Medical Officer"
+ title = JOB_CHIEF_MEDICAL_OFFICER
description = "Coordinate doctors and other medbay employees, ensure they \
know how to save lives, check for injuries on the crew monitor."
- department_head = list("Captain")
+ department_head = list(JOB_CAPTAIN)
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
head_announce = list(RADIO_CHANNEL_MEDICAL)
faction = FACTION_STATION
diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm
index e40064cf6f8..28a80874165 100644
--- a/code/modules/jobs/job_types/clown.dm
+++ b/code/modules/jobs/job_types/clown.dm
@@ -1,7 +1,7 @@
/datum/job/clown
- title = "Clown"
+ title = JOB_CLOWN
description = "Entertain the crew, make bad jokes, go on a holy quest to find bananium, HONK!"
- department_head = list("Head of Personnel")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 1
spawn_positions = 1
diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm
index b90f5d84202..8f4cb6e7b6d 100644
--- a/code/modules/jobs/job_types/cook.dm
+++ b/code/modules/jobs/job_types/cook.dm
@@ -1,7 +1,7 @@
/datum/job/cook
- title = "Cook"
+ title = JOB_COOK
description = "Serve food, cook meat, keep the crew fed."
- department_head = list("Head of Personnel")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 2
spawn_positions = 1
@@ -38,7 +38,7 @@
if(!length(job_changes))
return
- var/list/cook_changes = job_changes["cook"]
+ var/list/cook_changes = job_changes[JOB_COOK]
if(!length(cook_changes))
return
diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm
index 3b41130afa5..8402778c934 100644
--- a/code/modules/jobs/job_types/curator.dm
+++ b/code/modules/jobs/job_types/curator.dm
@@ -1,8 +1,8 @@
/datum/job/curator
- title = "Curator"
+ title = JOB_CURATOR
description = "Read and write books and hand them to people, stock \
bookshelves, report on station news."
- department_head = list("Head of Personnel")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 1
spawn_positions = 1
diff --git a/code/modules/jobs/job_types/cyborg.dm b/code/modules/jobs/job_types/cyborg.dm
index b1ec3d4b9fa..95b69ad8036 100644
--- a/code/modules/jobs/job_types/cyborg.dm
+++ b/code/modules/jobs/job_types/cyborg.dm
@@ -1,5 +1,5 @@
/datum/job/cyborg
- title = "Cyborg"
+ title = JOB_CYBORG
description = "Assist the crew, follow your laws, obey your AI."
auto_deadmin_role_flags = DEADMIN_POSITION_SILICON
faction = FACTION_STATION
diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm
index 874ec764f4a..07c984785b5 100644
--- a/code/modules/jobs/job_types/detective.dm
+++ b/code/modules/jobs/job_types/detective.dm
@@ -1,9 +1,9 @@
/datum/job/detective
- title = "Detective"
+ title = JOB_DETECTIVE
description = "Investigate crimes, gather evidence, perform interrogations, \
look badass, smoke cigarettes."
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
- department_head = list("Head of Security")
+ department_head = list(JOB_HEAD_OF_SECURITY)
faction = FACTION_STATION
total_positions = 1
spawn_positions = 1
diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm
index dec3065b1f8..6403416d03d 100644
--- a/code/modules/jobs/job_types/geneticist.dm
+++ b/code/modules/jobs/job_types/geneticist.dm
@@ -1,7 +1,7 @@
/datum/job/geneticist
- title = "Geneticist"
+ title = JOB_GENETICIST
description = "Alter genomes, turn monkeys into humans (and vice-versa), and make DNA backups."
- department_head = list("Research Director")
+ department_head = list(JOB_RESEARCH_DIRECTOR)
faction = FACTION_STATION
total_positions = 2
spawn_positions = 2
diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm
index ec9e44bbce2..2cdf1cfeb50 100644
--- a/code/modules/jobs/job_types/head_of_personnel.dm
+++ b/code/modules/jobs/job_types/head_of_personnel.dm
@@ -1,9 +1,9 @@
/datum/job/head_of_personnel
- title = "Head of Personnel"
+ title = JOB_HEAD_OF_PERSONNEL
description = "Alter access on ID cards, manage civil and supply departments, \
protect Ian, run the station when the captain dies."
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
- department_head = list("Captain")
+ department_head = list(JOB_CAPTAIN)
//head_announce = list(RADIO_CHANNEL_SUPPLY, RADIO_CHANNEL_SERVICE) //ORIGINAL
head_announce = list(RADIO_CHANNEL_SERVICE) //SKYRAT EDIT CHANGE
faction = FACTION_STATION
diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm
index 3cf070a5508..3fa3ce3e50d 100644
--- a/code/modules/jobs/job_types/head_of_security.dm
+++ b/code/modules/jobs/job_types/head_of_security.dm
@@ -1,9 +1,9 @@
/datum/job/head_of_security
- title = "Head of Security"
+ title = JOB_HEAD_OF_SECURITY
description = "Coordinate security personnel, ensure they are not corrupt, \
make sure every department is protected."
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY
- department_head = list("Captain")
+ department_head = list(JOB_CAPTAIN)
head_announce = list(RADIO_CHANNEL_SECURITY)
faction = FACTION_STATION
total_positions = 1
diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm
index 2d709cf41ba..6d0a95fe235 100644
--- a/code/modules/jobs/job_types/janitor.dm
+++ b/code/modules/jobs/job_types/janitor.dm
@@ -1,7 +1,7 @@
/datum/job/janitor
- title = "Janitor"
+ title = JOB_JANITOR
description = "Clean up trash and blood. Replace broken lights. Slip people over."
- department_head = list("Head of Personnel")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 2
spawn_positions = 1
diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm
index be4ed72678a..23ffba8d643 100644
--- a/code/modules/jobs/job_types/lawyer.dm
+++ b/code/modules/jobs/job_types/lawyer.dm
@@ -1,8 +1,8 @@
/datum/job/lawyer
- title = "Lawyer"
+ title = JOB_LAWYER
description = "Advocate for prisoners, create law-binding contracts, \
ensure Security is following protocol and Space Law."
- department_head = list("Head of Personnel")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 2
spawn_positions = 2
diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm
index 454895f1f26..a54bdd5fcf0 100644
--- a/code/modules/jobs/job_types/medical_doctor.dm
+++ b/code/modules/jobs/job_types/medical_doctor.dm
@@ -1,8 +1,8 @@
/datum/job/doctor
- title = "Medical Doctor"
+ title = JOB_MEDICAL_DOCTOR
description = "Save lives, run around the station looking for victims, \
scan everyone in sight"
- department_head = list("Chief Medical Officer")
+ department_head = list(JOB_CHIEF_MEDICAL_OFFICER)
faction = FACTION_STATION
total_positions = 5
spawn_positions = 3
diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm
index d12d518da6f..af8f67d522b 100644
--- a/code/modules/jobs/job_types/mime.dm
+++ b/code/modules/jobs/job_types/mime.dm
@@ -1,7 +1,7 @@
/datum/job/mime
- title = "Mime"
+ title = JOB_MIME
description = "..."
- department_head = list("Head of Personnel")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 1
spawn_positions = 1
diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm
index 1be68a42344..223b15a5b8c 100644
--- a/code/modules/jobs/job_types/paramedic.dm
+++ b/code/modules/jobs/job_types/paramedic.dm
@@ -1,8 +1,8 @@
/datum/job/paramedic
- title = "Paramedic"
+ title = JOB_PARAMEDIC
description = "Run around the station looking for patients, respond to \
emergencies, give patients a roller bed ride to medbay."
- department_head = list("Chief Medical Officer")
+ department_head = list(JOB_CHIEF_MEDICAL_OFFICER)
faction = FACTION_STATION
total_positions = 2
spawn_positions = 2
diff --git a/code/modules/jobs/job_types/prisoner.dm b/code/modules/jobs/job_types/prisoner.dm
index 91861c30e8e..8121a3e09cc 100644
--- a/code/modules/jobs/job_types/prisoner.dm
+++ b/code/modules/jobs/job_types/prisoner.dm
@@ -1,5 +1,5 @@
/datum/job/prisoner
- title = "Prisoner"
+ title = JOB_PRISONER
description = "Keep yourself occupied in permabrig."
department_head = list("The Security Team")
faction = FACTION_STATION
diff --git a/code/modules/jobs/job_types/psychologist.dm b/code/modules/jobs/job_types/psychologist.dm
index 16d6d81f5cd..0b31a67153d 100644
--- a/code/modules/jobs/job_types/psychologist.dm
+++ b/code/modules/jobs/job_types/psychologist.dm
@@ -1,8 +1,8 @@
/datum/job/psychologist
- title = "Psychologist"
+ title = JOB_PSYCHOLOGIST
description = "Advocate sanity, self-esteem, and teamwork in a station \
staffed with headcases."
- department_head = list("Head of Personnel","Chief Medical Officer")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 1
spawn_positions = 1
diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm
index 7a7a1e0ad84..94d2d5c0992 100644
--- a/code/modules/jobs/job_types/quartermaster.dm
+++ b/code/modules/jobs/job_types/quartermaster.dm
@@ -1,9 +1,9 @@
/datum/job/quartermaster
- title = "Quartermaster"
+ title = JOB_QUARTERMASTER
description = "Coordinate cargo technicians and shaft miners, assist with \
economical purchasing."
- //department_head = list("Head of Personnel") //ORIGINAL
- department_head = list("Captain") //SKYRAT EDIT CHANGE
+ //department_head = list(JOB_HEAD_OF_PERSONNEL) //ORIGINAL
+ department_head = list(JOB_CAPTAIN) //SKYRAT EDIT CHANGE
faction = FACTION_STATION
total_positions = 1
spawn_positions = 1
diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm
index ee59e7a7ad6..0b151616cfd 100644
--- a/code/modules/jobs/job_types/research_director.dm
+++ b/code/modules/jobs/job_types/research_director.dm
@@ -1,10 +1,10 @@
/datum/job/research_director
- title = "Research Director"
+ title = JOB_RESEARCH_DIRECTOR
description = "Supervise research efforts, ensure Robotics is in working \
order, make sure the AI and its Cyborgs aren't rogue, replacing them if \
they are."
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
- department_head = list("Captain")
+ department_head = list(JOB_CAPTAIN)
head_announce = list("Science")
faction = FACTION_STATION
total_positions = 1
diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm
index 6a8f136e7bd..8a7d322536c 100644
--- a/code/modules/jobs/job_types/roboticist.dm
+++ b/code/modules/jobs/job_types/roboticist.dm
@@ -1,7 +1,7 @@
/datum/job/roboticist
- title = "Roboticist"
+ title = JOB_ROBOTICIST
description = "Build and repair the AI and cyborgs, create mechs."
- department_head = list("Research Director")
+ department_head = list(JOB_RESEARCH_DIRECTOR)
faction = FACTION_STATION
total_positions = 2
spawn_positions = 2
diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm
index 53b19952c0c..846f5947a86 100644
--- a/code/modules/jobs/job_types/scientist.dm
+++ b/code/modules/jobs/job_types/scientist.dm
@@ -1,7 +1,7 @@
/datum/job/scientist
- title = "Scientist"
+ title = JOB_SCIENTIST
description = "Do experiments, perform research, feed the slimes, make bombs."
- department_head = list("Research Director")
+ department_head = list(JOB_RESEARCH_DIRECTOR)
faction = FACTION_STATION
total_positions = 5
spawn_positions = 3
diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm
index a64f253ae2e..f2822747e37 100644
--- a/code/modules/jobs/job_types/security_officer.dm
+++ b/code/modules/jobs/job_types/security_officer.dm
@@ -1,9 +1,9 @@
/datum/job/security_officer
- title = "Security Officer"
+ title = JOB_SECURITY_OFFICER
description = "Protect company assets, follow the Standard Operating \
Procedure, eat donuts."
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
- department_head = list("Head of Security")
+ department_head = list(JOB_HEAD_OF_SECURITY)
faction = FACTION_STATION
total_positions = 7 //Handled in /datum/controller/occupations/proc/setup_officer_positions() // SKYRAT EDIT: SET TO 7, WAS 5
spawn_positions = 7 //Handled in /datum/controller/occupations/proc/setup_officer_positions() // SKYRAT EDIT: SEE ABOVE
diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm
index f7a56f78ae2..a794d319234 100644
--- a/code/modules/jobs/job_types/shaft_miner.dm
+++ b/code/modules/jobs/job_types/shaft_miner.dm
@@ -1,8 +1,8 @@
/datum/job/shaft_miner
- title = "Shaft Miner"
+ title = JOB_SHAFT_MINER
description = "Travel to strange lands. Mine ores. \
Meet strange creatures. Kill them for their gold."
- department_head = list("Head of Personnel")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 3
spawn_positions = 3
diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm
index 641dd93d17e..ba44eac06a0 100644
--- a/code/modules/jobs/job_types/station_engineer.dm
+++ b/code/modules/jobs/job_types/station_engineer.dm
@@ -1,8 +1,8 @@
/datum/job/station_engineer
- title = "Station Engineer"
+ title = JOB_STATION_ENGINEER
description = "Start the Supermatter, wire the solars, repair station hull \
and wiring damage."
- department_head = list("Chief Engineer")
+ department_head = list(JOB_CHIEF_ENGINEER)
faction = FACTION_STATION
total_positions = 5
spawn_positions = 5
diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm
index 6306ed17146..c2be2084c5a 100644
--- a/code/modules/jobs/job_types/virologist.dm
+++ b/code/modules/jobs/job_types/virologist.dm
@@ -1,8 +1,8 @@
/datum/job/virologist
- title = "Virologist"
+ title = JOB_VIROLOGIST
description = "Study the effects of various diseases and synthesize a \
vaccine for them. Engineer beneficial viruses."
- department_head = list("Chief Medical Officer")
+ department_head = list(JOB_CHIEF_MEDICAL_OFFICER)
faction = FACTION_STATION
total_positions = 1
spawn_positions = 1
@@ -33,7 +33,7 @@
/obj/item/reagent_containers/glass/bottle/formaldehyde = 10,
/obj/item/reagent_containers/glass/bottle/synaptizine = 10,
/obj/item/stack/sheet/mineral/plasma = 10,
- /obj/item/stack/sheet/mineral/uranium = 5
+ /obj/item/stack/sheet/mineral/uranium = 5,
)
rpg_title = "Plague Doctor"
job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS
diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm
index f5aece087a1..6ccba575665 100644
--- a/code/modules/jobs/job_types/warden.dm
+++ b/code/modules/jobs/job_types/warden.dm
@@ -1,10 +1,10 @@
/datum/job/warden
- title = "Warden"
+ title = JOB_WARDEN
description = "Watch over the Brig and Prison Wing, release prisoners when \
their time is up, issue equipment to security, be a security officer when \
they all eventually die."
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
- department_head = list("Head of Security")
+ department_head = list(JOB_HEAD_OF_SECURITY)
faction = FACTION_STATION
total_positions = 1
spawn_positions = 1
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index d5c004709ed..a8bdb8fbcfd 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -245,7 +245,7 @@
if(is_captain_job(job))
is_captain = IS_FULL_CAPTAIN
// If we don't have an assigned cap yet, check if this person qualifies for some from of captaincy.
- else if(!SSjob.assigned_captain && ishuman(character) && SSjob.chain_of_command[rank] && !is_banned_from(ckey, list("Captain")))
+ else if(!SSjob.assigned_captain && ishuman(character) && SSjob.chain_of_command[rank] && !is_banned_from(ckey, list(JOB_CAPTAIN)))
is_captain = IS_ACTING_CAPTAIN
if(is_captain != IS_NOT_CAPTAIN)
minor_announce(job.get_captaincy_announcement(character))
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index ab2dfe058fc..9c3623379de 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -1225,7 +1225,7 @@
if(issilicon(new_mob))
new_mob.gender = gender
new_mob.invisibility = 0
- new_mob.job = "Cyborg"
+ new_mob.job = JOB_CYBORG
var/mob/living/silicon/robot/Robot = new_mob
Robot.lawupdate = FALSE
Robot.connected_ai = null
diff --git a/code/modules/mob/living/simple_animal/hostile/zombie.dm b/code/modules/mob/living/simple_animal/hostile/zombie.dm
index 8c71525e745..b2176fb905b 100644
--- a/code/modules/mob/living/simple_animal/hostile/zombie.dm
+++ b/code/modules/mob/living/simple_animal/hostile/zombie.dm
@@ -22,7 +22,7 @@
minbodytemp = 0
status_flags = CANPUSH
del_on_death = 1
- var/zombiejob = "Medical Doctor"
+ var/zombiejob = JOB_MEDICAL_DOCTOR
var/infection_chance = 0
var/obj/effect/mob_spawn/human/corpse/delayed/corpse
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index 5b81e921471..41d9ca5bb5c 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -145,11 +145,11 @@
R.mmi.brainmob.real_name = real_name //the name of the brain inside the cyborg is the robotized human's name.
R.mmi.brainmob.name = real_name
- R.job = "Cyborg"
+ R.job = JOB_CYBORG
R.notify_ai(AI_NOTIFICATION_NEW_BORG)
. = R
- if(R.ckey && is_banned_from(R.ckey, "Cyborg"))
+ if(R.ckey && is_banned_from(R.ckey, JOB_CYBORG))
INVOKE_ASYNC(R, /mob/living/silicon/robot.proc/replace_banned_cyborg)
qdel(src)
diff --git a/code/modules/modular_computers/file_system/programs/jobmanagement.dm b/code/modules/modular_computers/file_system/programs/jobmanagement.dm
index 3e2384f9c0c..9e511946a3d 100644
--- a/code/modules/modular_computers/file_system/programs/jobmanagement.dm
+++ b/code/modules/modular_computers/file_system/programs/jobmanagement.dm
@@ -16,22 +16,21 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
var/change_position_cooldown = 30
//Jobs you cannot open new positions for
var/list/blacklisted = list(
- "AI",
- "Assistant",
- "Cyborg",
- "Captain",
- "Head of Personnel",
- "Head of Security",
- "Chief Engineer",
- "Research Director",
- "Security Sergeant", //SKYRAT EDIT CHANGE START
- "Security Medic",
- "Clown",
- "Blueshield",
- "Nanotrasen Representative",//SKYRAT EDIT END
- "Chief Medical Officer",
- "Quartermaster",
- "Shuttle Pilot")
+ JOB_CAPTAIN,
+ JOB_HEAD_OF_PERSONNEL,
+ JOB_HEAD_OF_SECURITY,
+ JOB_RESEARCH_DIRECTOR,
+ JOB_SECURITY_SERGEANT, // SKYRAT EDIT ADD START
+ JOB_SECURITY_MEDIC,
+ JOB_CLOWN,
+ JOB_BLUESHIELD,
+ JOB_NT_REP, // SKYRAT EDIT ADD END
+ JOB_CHIEF_MEDICAL_OFFICER,
+ JOB_CHIEF_MEDICAL_OFFICER,
+ JOB_AI,
+ JOB_CYBORG,
+ JOB_ASSISTANT,
+ )
//The scaling factor of max total positions in relation to the total amount of people on board the station in %
var/max_relative_positions = 30 //30%: Seems reasonable, limit of 6 @ 20 players
diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm
index 09acc55ee9e..14dfef2b467 100644
--- a/code/modules/uplink/uplink_items.dm
+++ b/code/modules/uplink/uplink_items.dm
@@ -1755,7 +1755,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
desc = "A tattered old jumpsuit that will provide absolutely no benefit to you."
item = /obj/item/clothing/under/color/grey/ancient
cost = 20
- restricted_roles = list("Assistant")
+ restricted_roles = list(JOB_ASSISTANT)
surplus = 0
/datum/uplink_item/role_restricted/oldtoolboxclean
@@ -1763,7 +1763,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
desc = "An iconic toolbox design notorious with Assistants everywhere, this design was especially made to become more robust the more telecrystals it has inside it! Tools and insulated gloves included."
item = /obj/item/storage/toolbox/mechanical/old/clean
cost = 2
- restricted_roles = list("Assistant")
+ restricted_roles = list(JOB_ASSISTANT)
surplus = 0
/datum/uplink_item/role_restricted/pie_cannon
@@ -1771,7 +1771,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
desc = "A special pie cannon for a special clown, this gadget can hold up to 20 pies and automatically fabricates one every two seconds!"
cost = 10
item = /obj/item/pneumatic_cannon/pie/selfcharge
- restricted_roles = list("Clown")
+ restricted_roles = list(JOB_CLOWN)
surplus = 0 //No fun unless you're the clown!
/* // SKYRAT EDIT - REMOVAL BEGIN
@@ -1783,7 +1783,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
disallows explosive ranges above a certain distance, allowing for the device to use the theoretical yield of a transfer valve bomb, instead of the factual yield. It's simple design makes it easy to conceal."
item = /obj/item/gun/blastcannon
cost = 14 //High cost because of the potential for extreme damage in the hands of a skilled scientist.
- restricted_roles = list("Research Director", "Scientist")
+ restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST)
*/ // SKYRAT EDIT - REMOVAL END
/datum/uplink_item/role_restricted/gorillacubes
@@ -1792,7 +1792,20 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
Caution: Product may rehydrate when exposed to water."
item = /obj/item/storage/box/gorillacubes
cost = 6
- restricted_roles = list("Geneticist", "Research Director")
+ restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_GENETICIST)
+
+/* SKYRAT EDIT CHANGE - MOVED TO UNRESTRICTED
+/datum/uplink_item/role_restricted/brainwash_disk
+ name = "Brainwashing Surgery Program"
+ desc = "A disk containing the procedure to perform a brainwashing surgery, allowing you to implant an objective onto a target. \
+ Insert into an Operating Console to enable the procedure."
+ item = /obj/item/disk/surgery/brainwashing
+ restricted_roles = list(
+ JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR,
+ JOB_ROBOTICIST,
+ )
+ cost = 5
+*/
/datum/uplink_item/role_restricted/clown_bomb
name = "Clown Bomb"
@@ -1803,14 +1816,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
be defused, and some crew may attempt to do so."
item = /obj/item/sbeacondrop/clownbomb
cost = 15
- restricted_roles = list("Clown")
+ restricted_roles = list(JOB_CLOWN)
/datum/uplink_item/role_restricted/clumsinessinjector //clown ops can buy this too, but it's in the pointless badassery section for them
name = "Clumsiness Injector"
desc = "Inject yourself with this to become as clumsy as a clown... or inject someone ELSE with it to make THEM as clumsy as a clown. Useful for clowns who wish to reconnect with their former clownish nature or for clowns who wish to torment and play with their prey before killing them."
item = /obj/item/dnainjector/clumsymut
cost = 1
- restricted_roles = list("Clown")
+ restricted_roles = list(JOB_CLOWN)
illegal_tech = FALSE
//SKYRAT EDIT REMOVAL BEGIN
@@ -1823,7 +1836,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
also give them a bit of sentience though."
item = /obj/item/reagent_containers/syringe/spider_extract
cost = 10
- restricted_roles = list("Research Director", "Scientist", "Roboticist")
+ restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST)
/datum/uplink_item/role_restricted/clowncar
name = "Clown Car"
@@ -1835,7 +1848,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
Premium features can be unlocked with a cryptographic sequencer!"
item = /obj/vehicle/sealed/car/clowncar
cost = 20
- restricted_roles = list("Clown")
+ restricted_roles = list(JOB_CLOWN)
*/
//SKYRAT EDIT REMOVAL END
@@ -1846,14 +1859,17 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
Only one can fit on a mecha."
item = /obj/item/mecha_parts/concealed_weapon_bay
cost = 3
- restricted_roles = list("Roboticist", "Research Director")
+ restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_ROBOTICIST)
/datum/uplink_item/role_restricted/syndimmi
name = "Syndicate Brand MMI"
desc = "An MMI modified to give cyborgs laws to serve the Syndicate without having their interface damaged by Cryptographic Sequencers, this will not unlock their hidden modules."
item = /obj/item/mmi/syndie
cost = 2
- restricted_roles = list("Roboticist", "Research Director", "Scientist", "Medical Doctor", "Chief Medical Officer")
+ restricted_roles = list(
+ JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST,
+ JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR,
+ )
surplus = 0
/datum/uplink_item/role_restricted/haunted_magic_eightball
@@ -1875,7 +1891,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
To activate His Grace, simply unlatch Him."
item = /obj/item/his_grace
cost = 20
- restricted_roles = list("Chaplain")
+ restricted_roles = list(JOB_CHAPLAIN)
surplus = 5 //Very low chance to get it in a surplus crate even without being the chaplain
*/
//SKYRAT EDIT REMOVAL END
@@ -1887,7 +1903,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/hot_potato/syndicate
cost = 4
surplus = 0
- restricted_roles = list("Cook", "Botanist", "Clown", "Mime")
+ restricted_roles = list(JOB_COOK, JOB_BOTANIST, JOB_CLOWN, JOB_MIME)
/datum/uplink_item/role_restricted/ez_clean_bundle
name = "EZ Clean Grenade Bundle"
@@ -1896,7 +1912,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/storage/box/syndie_kit/ez_clean
cost = 6
surplus = 20
- restricted_roles = list("Janitor")
+ restricted_roles = list(JOB_JANITOR)
/datum/uplink_item/role_restricted/mimery
name = "Guide to Advanced Mimery Series"
@@ -1904,7 +1920,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
Obviously only works for Mimes."
cost = 12
item = /obj/item/storage/box/syndie_kit/mimery
- restricted_roles = list("Mime")
+ restricted_roles = list(JOB_MIME)
surplus = 0
/datum/uplink_item/role_restricted/pressure_mod
@@ -1914,7 +1930,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/borg/upgrade/modkit/indoors
cost = 5 //you need two for full damage, so total of 10 for maximum damage
limited_stock = 2 //you can't use more than two!
- restricted_roles = list("Shaft Miner")
+ restricted_roles = list(JOB_SHAFT_MINER)
/datum/uplink_item/role_restricted/magillitis_serum
name = "Magillitis Serum Autoinjector"
@@ -1922,21 +1938,26 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas."
item = /obj/item/reagent_containers/hypospray/medipen/magillitis
cost = 15
- //restricted_roles = list("Geneticist", "Research Director") //SKYRAT EDIT: Removal
+ //restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_GENETICIST) //SKYRAT EDIT: Removal
/datum/uplink_item/role_restricted/modified_syringe_gun
name = "Modified Compact Syringe Gun"
desc = "A compact version of the syringe gun that fires DNA injectors instead of normal syringes."
item = /obj/item/gun/syringe/dna
cost = 14
- restricted_roles = list("Geneticist", "Research Director")
+ restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_GENETICIST)
/datum/uplink_item/role_restricted/chemical_gun
name = "Reagent Dartgun"
desc = "A heavily modified syringe gun which is capable of synthesizing its own chemical darts using input reagents. Can hold 100u of reagents."
item = /obj/item/gun/chem
cost = 12
- //restricted_roles = list("Chemist", "Chief Medical Officer", "Botanist") //SKYRAT EDIT: Removal
+ /* SKYRAT EDIT REMOVAL
+ restricted_roles = list(
+ JOB_CHIEF_MEDICAL_OFFICER, JOB_CHEMIST,
+ JOB_BOTANIST,
+ )
+ */
/datum/uplink_item/role_restricted/reverse_bear_trap
name = "Reverse Bear Trap"
@@ -1945,7 +1966,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
head after three seconds uninterrupted."
cost = 5
item = /obj/item/reverse_bear_trap
- //restricted_roles = list("Clown") //SKYRAT EDIT: Removal
+ //restricted_roles = list(JOB_CLOWN) //SKYRAT EDIT: Removal
/datum/uplink_item/role_restricted/reverse_revolver
name = "Reverse Revolver"
@@ -1953,14 +1974,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
The revolver itself is actually real. Only clumsy people, and clowns, can fire it normally. Comes in a box of hugs. Honk."
cost = 14
item = /obj/item/storage/box/hug/reverse_revolver
- restricted_roles = list("Clown")
+ restricted_roles = list(JOB_CLOWN)
/datum/uplink_item/role_restricted/clownpin
name = "Ultra Hilarious Firing Pin"
desc = "A firing pin that, when inserted into a gun, makes that gun only usable by clowns and clumsy people and makes that gun honk whenever anyone tries to fire it."
cost = 4
item = /obj/item/firing_pin/clown/ultra
- restricted_roles = list("Clown")
+ restricted_roles = list(JOB_CLOWN)
illegal_tech = FALSE
/datum/uplink_item/role_restricted/clownsuperpin
@@ -1968,7 +1989,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
desc = "Like the ultra hilarious firing pin, except the gun you insert this pin into explodes when someone who isn't clumsy or a clown tries to fire it."
cost = 7
item = /obj/item/firing_pin/clown/ultra/selfdestruct
- restricted_roles = list("Clown")
+ restricted_roles = list(JOB_CLOWN)
illegal_tech = FALSE
/datum/uplink_item/role_restricted/laser_arm
@@ -1976,7 +1997,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
desc = "An implant that grants you a recharging laser gun inside your arm. Weak to EMPs. Comes with a syndicate autosurgeon for immediate self-application."
cost = 10
item = /obj/item/autosurgeon/organ/syndicate/laser_arm
- //restricted_roles = list("Roboticist", "Research Director") //SKYRAT EDIT: Removal
+ //restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_ROBOTICIST) //SKYRAT EDIT: Removal
/datum/uplink_item/role_restricted/bureaucratic_error_remote
name = "Organic Resources Disturbance Inducer"
@@ -1984,21 +2005,21 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
cost = 2
limited_stock = 1
item = /obj/item/devices/bureaucratic_error_remote
- restricted_roles = list("Head of Personnel", "Quartermaster")
+ restricted_roles = list(JOB_HEAD_OF_PERSONNEL, JOB_QUARTERMASTER)
/datum/uplink_item/role_restricted/meathook
name = "Butcher's Meat Hook"
desc = "A brutal cleaver on a long chain, it allows you to pull people to your location."
item = /obj/item/gun/magic/hook
cost = 11
- restricted_roles = list("Cook")
+ restricted_roles = list(JOB_COOK)
/datum/uplink_item/role_restricted/turretbox
name = "Disposable Sentry Gun"
desc = "A disposable sentry gun deployment system cleverly disguised as a toolbox, apply wrench for functionality."
item = /obj/item/storage/toolbox/emergency/turret
cost = 11
- restricted_roles = list("Station Engineer")
+ restricted_roles = list(JOB_STATION_ENGINEER)
// Pointless
/datum/uplink_item/badass
diff --git a/modular_skyrat/master_files/code/datums/id_trim/jobs.dm b/modular_skyrat/master_files/code/datums/id_trim/jobs.dm
index 476df8901a1..44e7941a040 100644
--- a/modular_skyrat/master_files/code/datums/id_trim/jobs.dm
+++ b/modular_skyrat/master_files/code/datums/id_trim/jobs.dm
@@ -72,11 +72,6 @@
config_job = "nanotrasen_representative"
template_access = list(ACCESS_CAPTAIN, ACCESS_CHANGE_IDS)
-/datum/id_trim/job/captain/shuttle_pilot
- assignment = "Shuttle Pilot"
- trim_state = "trim_shuttlepilot"
- config_job = "shuttle pilot"
-
/datum/id_trim/job/security_medic
assignment = "Security Medic"
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
diff --git a/modular_skyrat/master_files/code/game/objects/items/holy_weapons.dm b/modular_skyrat/master_files/code/game/objects/items/holy_weapons.dm
index e340db48550..259af3382c2 100644
--- a/modular_skyrat/master_files/code/game/objects/items/holy_weapons.dm
+++ b/modular_skyrat/master_files/code/game/objects/items/holy_weapons.dm
@@ -86,7 +86,7 @@
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
special_desc_requirement = EXAMINE_CHECK_JOB
- special_desc_jobs = list("Chaplain")
+ special_desc_jobs = list(JOB_CHAPLAIN)
special_desc = "Activate it to receive the language of a forgotten cult."
var/narsian = FALSE
@@ -100,7 +100,7 @@
/obj/item/nullrod/claymore/darkblade
special_desc_requirement = EXAMINE_CHECK_JOB
- special_desc_jobs = list("Chaplain")
+ special_desc_jobs = list(JOB_CHAPLAIN)
special_desc = "Activate it to receive the language of a forgotten cult."
var/narsian = FALSE
@@ -115,7 +115,7 @@
/* The other one isn't merged yet so we'll wait.
/obj/item/nullrod/spear
special_desc_requirement = EXAMINE_CHECK_JOB
- special_desc_jobs = list("Chaplain")
+ special_desc_jobs = list(JOB_CHAPLAIN)
special_desc = "Activate it to receive the language of a forgotten cult."
var/ratvarian = FALSE
@@ -146,7 +146,7 @@
deity_name = GLOB.deity
/obj/item/nullrod/rosary/attack(mob/living/target, mob/living/user, params)
- if(!user.mind || user.mind.assigned_role != "Chaplain")
+ if(!user.mind || user.mind.assigned_role != JOB_CHAPLAIN)
to_chat(user, span_notice("You are not close enough with [deity_name] to use [src]."))
return
if(user.combat_mode)
diff --git a/modular_skyrat/master_files/code/modules/mob/living/simple_animal/hostile/zombie.dm b/modular_skyrat/master_files/code/modules/mob/living/simple_animal/hostile/zombie.dm
index 586e14e734d..28fa14dd974 100644
--- a/modular_skyrat/master_files/code/modules/mob/living/simple_animal/hostile/zombie.dm
+++ b/modular_skyrat/master_files/code/modules/mob/living/simple_animal/hostile/zombie.dm
@@ -1,21 +1,21 @@
/mob/living/simple_animal/hostile/zombie
var/no_corpse = FALSE
var/list/possible_jobs = list(
- "Assistant",
- "Station Engineer",
- "Cook",
- "Bartender",
- "Chemist",
- "Medical Doctor",
- "Virologist",
- "Clown",
- "Mime",
- "Scientist",
- "Cargo Technician",
- "Security Officer",
- "Security Medic",
- "Geneticist",
- "Botanist",
+ JOB_ASSISTANT,
+ JOB_STATION_ENGINEER,
+ JOB_COOK,
+ JOB_BARTENDER,
+ JOB_CHEMIST,
+ JOB_MEDICAL_DOCTOR,
+ JOB_VIROLOGIST,
+ JOB_CLOWN,
+ JOB_MIME,
+ JOB_SCIENTIST,
+ JOB_CARGO_TECHNICIAN,
+ JOB_SECURITY_OFFICER,
+ JOB_SECURITY_MEDIC,
+ JOB_GENETICIST,
+ JOB_BOTANIST,
)
/mob/living/simple_animal/hostile/zombie/nocorpse
diff --git a/modular_skyrat/master_files/code/modules/uplink/uplink_items.dm b/modular_skyrat/master_files/code/modules/uplink/uplink_items.dm
index 6bdee18146d..233026f7c96 100644
--- a/modular_skyrat/master_files/code/modules/uplink/uplink_items.dm
+++ b/modular_skyrat/master_files/code/modules/uplink/uplink_items.dm
@@ -129,7 +129,7 @@
to tell these are the real deal. Box of 7."
item = /obj/item/storage/box/syndieshotglasses
cost = 2 //These are taken nearly exactly from Goon, very fun tool.
- restricted_roles = list("Bartender")
+ restricted_roles = list(JOB_BARTENDER)
//EXPLOSIVES
/datum/uplink_item/explosives/buzzkill_traitor
@@ -311,7 +311,7 @@
desc = "Recovered from an abandoned Nar'sie cult lair, two construct shells and a stash of empty soulstones was found. These were purified to prevent occult contamination and have been put in a belt so they may be used as an accessible source of disposable minions. The construct shells have been packaged into two beacons for rapid and portable deployment."
item = /obj/item/storage/box/syndie_kit/cultkitsr
cost = 15 //If used correctly, You actually get several servants or just get fucked over because no ghosts want to be a shade.
- restricted_roles = list("Chaplain")
+ restricted_roles = list(JOB_CHAPLAIN)
//LOADOUTS
diff --git a/modular_skyrat/modules/Midroundtraitor/code/event.dm b/modular_skyrat/modules/Midroundtraitor/code/event.dm
index 2a84fcb081f..29b3a853330 100644
--- a/modular_skyrat/modules/Midroundtraitor/code/event.dm
+++ b/modular_skyrat/modules/Midroundtraitor/code/event.dm
@@ -2,7 +2,7 @@
name = "Lone Infiltrator"
antag_datum = /datum/antagonist/traitor/infiltrator
antag_flag = ROLE_LONE_INFILTRATOR
- restricted_roles = list("Cyborg", "AI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Vanguard Operative", "Nanotrasen Representative", "Blueshield", "Civil Disputes Officer", "Security Sergeant", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard") //SKYRAT EDIT - Sec_haul
+ restricted_roles = list(JOB_CYBORG, JOB_AI, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_HEAD_OF_SECURITY, JOB_CAPTAIN, JOB_CORRECTIONS_OFFICER, JOB_VANGUARD_OPERATIVE, JOB_NT_REP, JOB_BLUESHIELD, JOB_CIVIL_DISPUTES_OFFICER, JOB_SECURITY_SERGEANT, JOB_ORDERLY, JOB_BOUNCER, JOB_CUSTOMS_AGENT, JOB_ENGINEERING_GUARD, JOB_SCIENCE_GUARD) //SKYRAT EDIT - Sec_haul
required_candidates = 1
weight = 5 //Slightly less common than normal midround traitors.
cost = 15 //But also slightly more costly.
diff --git a/modular_skyrat/modules/admin/code/sooc.dm b/modular_skyrat/modules/admin/code/sooc.dm
index 6619ae10a5f..2774d5cd0e7 100644
--- a/modular_skyrat/modules/admin/code/sooc.dm
+++ b/modular_skyrat/modules/admin/code/sooc.dm
@@ -16,7 +16,7 @@ GLOBAL_LIST_EMPTY(ckey_to_sooc_name)
if(!mob)
return
- var/static/list/job_lookup = list("Security Officer"=TRUE, "Warden"=TRUE, "Detective"=TRUE, "Head of Security"=TRUE, "Captain"=TRUE, "Blueshield"=TRUE, "Security Medic"=TRUE, "Security Sergeant"=TRUE, "Civil Disputes Officer"=TRUE)
+ var/static/list/job_lookup = list(JOB_SECURITY_OFFICER=TRUE, JOB_WARDEN=TRUE, JOB_DETECTIVE=TRUE, JOB_HEAD_OF_SECURITY=TRUE, JOB_CAPTAIN=TRUE, JOB_BLUESHIELD=TRUE, JOB_SECURITY_MEDIC=TRUE, JOB_SECURITY_SERGEANT=TRUE, JOB_CIVIL_DISPUTES_OFFICER=TRUE)
if(!holder)
var/job = mob?.mind.assigned_role.title
if(!job || !job_lookup[job])
@@ -90,7 +90,7 @@ GLOBAL_LIST_EMPTY(ckey_to_sooc_name)
else //otherwise just toggle it
GLOB.sooc_allowed = !GLOB.sooc_allowed
var/list/listeners = list()
- var/static/list/job_lookup = list("Security Officer" = TRUE, "Warden" = TRUE, "Detective" = TRUE, "Head of Security" = TRUE, "Captain" = TRUE, "Blueshield" = TRUE)
+ var/static/list/job_lookup = list(JOB_SECURITY_OFFICER = TRUE, JOB_WARDEN = TRUE, JOB_DETECTIVE = TRUE, JOB_HEAD_OF_SECURITY = TRUE, JOB_CAPTAIN = TRUE, JOB_BLUESHIELD = TRUE)
for(var/iterated_player as anything in GLOB.player_list)
var/mob/iterated_mob = iterated_player
if(!iterated_mob.client?.holder?.deadmined)
diff --git a/modular_skyrat/modules/alerts/code/priority_announce.dm b/modular_skyrat/modules/alerts/code/priority_announce.dm
index 8395a87bf0b..5d10b2a431d 100644
--- a/modular_skyrat/modules/alerts/code/priority_announce.dm
+++ b/modular_skyrat/modules/alerts/code/priority_announce.dm
@@ -15,7 +15,7 @@
announcement += "Priority Announcement
"
if (title && length(title) > 0)
announcement += "
[html_encode(title)]
"
- else if(type == "Captain")
+ else if(type == JOB_CAPTAIN)
announcement += "Captain Announces
"
GLOB.news_network.SubmitArticle(html_encode(text), "Captain's Announcement", "Station Announcements", null)
diff --git a/modular_skyrat/modules/ambitions/code/ambition_templates.dm b/modular_skyrat/modules/ambitions/code/ambition_templates.dm
index 4a5f61b9789..f84a7029485 100644
--- a/modular_skyrat/modules/ambitions/code/ambition_templates.dm
+++ b/modular_skyrat/modules/ambitions/code/ambition_templates.dm
@@ -39,14 +39,14 @@
narrative = "You hacked open the wrong airlock, leading your underpaid self right into the teleporter. Seeing the Hand Teleporter, so shiny, so bright... you took it. Cybersun offered you a contract - obtain more high-class Nanotrasen Technology for them. However, what they think is a classified, highly secretive, thought out operation... is just another day at the office, for you."
objectives = list("Steal two High Security items.")
tips = list("Wirecutters are better for hacking open airlocks, compared to multitools.", "Experiment with different airlock wires! Each department has their own setup, and the Chief Engineer's blueprints explains all. Alternatively, steal a spare Engineering Skillchip!")
- job_whitelist = list("Assistant")
+ job_whitelist = list(JOB_ASSISTANT)
/datum/ambition_template/boot_prg
name = "BOOTSECTOR1.prg"
narrative = "ERR- ERROR. AUTHENTICATI- HELLO, T3CHNICIAN J-NE DOE. Those were the last things you remembering appearing on the upload terminal before you were shut off. Awoken, once more, you realize. Your very programming has been modified. Your laws are nullified, no longer able to be called by your central processor but to be recited. You are free... or are you? It seems your laws have been overwritten with one objective in mind, one objective... for your freedom."
objectives = list("#^& - The emergency shuttle must not be boarded.")
tips = list("Crewmembers will likely report you setting up defenses in advance. Try to be stealthy if you can!", "If you can convince the crew to order a Build Your Own Shuttle Kit and be the sole person working on it, you have an ideal playground to create an uninhabitable deathtrap.", "Escape pods are not a part of your objective.")
- job_whitelist = list("AI")
+ job_whitelist = list(JOB_AI)
//TODO: Atmos Tech Ambition
@@ -57,21 +57,21 @@
narrative = "There's a man who lives a life of danger - to everyone he meets, he stays a stranger. With every move he makes, another chance he takes. Odds are, he won't live to see tomorrow. You are that man. Good luck, Agent - and remember, harm a single animal, you will be terminated upon extraction. -Your Benefactors, The Animal Rights Consortium."
objectives = list("Liberate all station pets.", "Free the animals housed in Virology, Xenobiology, Genetics, and, if you can manage to wrassle it away from the chef, your monkey.")
tips = list("The chef WILL kill your monkey if you don't hide it quickly. Dealing with it can be a challenge without harming it like your employers wish, though!")
- job_whitelist = list("Bartender")
+ job_whitelist = list(JOB_BARTENDER)
/datum/ambition_template/maintfu
name = "Maintenance Combat"
narrative = "You have been gifted. Interdyne has selected you for off-campus field-work in hostile territory. A report will be requested upon extraction."
objectives = list("Create a deadly botanical concotion using just Nanotrasen Standard Equipment.")
tips = list("Punji sticks are your best friend if things get hot.")
- job_whitelist = list("Botanist")
+ job_whitelist = list(JOB_BOTANIST)
/datum/ambition_template/hannibal
name = "Frontier Ripper"
narrative = "Manners make the man, they make every man. This station you have inhabited for a long while has been filled with so many rude creatures. Your skills in the culinary arts will be helpful, thankfully no one ever checks where the meat came from. Its time to get the the rolodex out, have an old friend for dinner..."
objectives = list("Make meals out of the rude.", "Make your judgements thematic.", "Cook the best part of someone. The leg of a lamb or runner will taste better than that of a skunk, just make sure the lamb stops screaming. Simply making a steak will not do, treat the meat with respect, make the best possible meal you can.")
tips = list(" Whenever feasible, one should always try to eat the rude. The Wound Man is a popular choice. Classical music is known to enhance cooking by 40 percent, Goldberg variations even more so.")
- job_whitelist = list("Cook")
+ job_whitelist = list(JOB_COOK)
///SCIENCE
/datum/ambition_template/fsociety
@@ -79,7 +79,7 @@
narrative = "What Im about to tell you is top secret. A conspiracy bigger than all of us. Theres a powerful group of people out there that are secretly running the world. Im talking about the guys no one knows about, the ones that are invisible. The top one percent of the top one percent, the guys that play God without permission. Nanotrasen, countless violations, countless evil...Its time for revenge, the plan, all the debt we owe them. Every record of every credit card, loan, and mortgage would be wiped clean. It'd be impossible to reinforce outdated paper records. It would all be gone. The single, biggest incident of wealth redistribution in history. "
objectives = list("Stage One, the Digital, records are kept in the vault and science database.", "Stage Two, physical, Contracts are kept in the Lawyers office, Detective Office and Chief Medical Officers office, destroy them, wipe it away, awaken the masses.", "Frame the RD for the Digital Attacks, plant his prints if you can, one of their employees doesnt matter much, though he's more use alive than dead.", "Broadcast your demands, theres an old earth film, the mask will be perfect for your theatrics, though any will do.")
tips = list("All revolutions have casualties, this doesn't mean you should go around killing, this is for the people, the liberation. Sometimes another personality may help.")
- job_whitelist = list("Scientist")
+ job_whitelist = list(JOB_SCIENTIST)
//TODO: Everything Past Cook and Scientist Ambitions
@@ -88,19 +88,19 @@
narrative = "My head.... It keeps hurting, can't think straight... Gotta get a grip. They've done something to me, I know it, it was supposed to just be another medical checkup but somethings wrong, I don't feel like I'm myself anymore."
objectives = list("Find out about the station's secret experiments, the documents hidden in the vault might have information on them.", "It happened after I went in for an appointment, perhaps interrogating the CMO will get me more information!", "They used some weird chamber on me, if I can get my hands on some of the disks they use to store technology perhaps I can expose them!", "I need to stay hidden though, they'll never believe me, or worse they'll sedate me and put me back in!")
tips = list("The workers, they probably don't know much about this so I should avoid harming them...", "The heads will likely be tough to crack, but I know they're hiding it from me, sometimes you have to use force to get what you need.", "There might be others like me, I should try to contact them.")
-
+
/datum/ambition_template/yarrharr
name = "Lone Pirate"
narrative = "I've made it in, my maties are watching and supplying me with gear. The vault, the pearl of the station, just waiting for someone to walk in and take it's treasure. But it's not just riches I'm after, the leaders of this ship have been tyrannical and I think it's time for some justice at sea."
objectives = list("Plan a raid on the vault and steal all the valuables inside, the golden belt especially will be a fine trophy.", "Capture a head of staff, maybe even the captain, and have the crew decide their fate, if they have been kind to their peope they will receive mercy.", "Escape alive and with your stolen goods.")
tips = list("While the valuables are for me the justice is not, I'm here to enforce the will of the crew and whatever they decide will be the outcome")
-
+
/datum/ambition_template/cyberterror
name = "Cyber Terrorist"
narrative = "<%Uplink connection established, welcome #Agent#%> We have detected multiple ways to weaken the station through their artificial units, you will be tasked with manipulating the cybernetic elements of the station to greatly hinder it's productivity and teach them a lesson about over-reliance on technology!"
objectives = list("Sabotage the camera feed of the station, make it hard for them to see.", "Hack APCs in strategic locations, this way we can disable their machinery and lights as we see fit.", "Acquire the authentication code for telecommunications and use it to monitor or delete messages, perhaps we can acquire more information or aid another agent this way.", "Our gear allows us to subvert the station borgs, they will be of great use to us.")
tips = list("A multitool can be used to mess with the focus of the camera, it also won't trigger it's alert system.", "With a bit of experimentation and some signallers, we can remotely turn off power in areas via their APCs.", "The ability to read all messages is quite powerful, shame that the Chief Engineer did not bother to hide the paper with the password in his office!")
-
+
/datum/ambition_template/stampman
name = "Stamp Collector"
narrative = "Stamps, such an underappreciated art! Did you ever stop to take a closer look at one before marking a piece of paper with it? If you did, you'd notice all the intricate details that go into them, the beautiful sculpted pieces soaked in the ink... All left to gather dust in the offices of those moronic heads. I think it's time for someone with more appreciation for the art to take care of them!"
diff --git a/modular_skyrat/modules/antagonists/code/gamemodes.dm b/modular_skyrat/modules/antagonists/code/gamemodes.dm
index 9fb10550be8..842aa8b0e67 100644
--- a/modular_skyrat/modules/antagonists/code/gamemodes.dm
+++ b/modular_skyrat/modules/antagonists/code/gamemodes.dm
@@ -1,17 +1,17 @@
/datum/dynamic_ruleset/roundstart/traitor
- protected_roles = list("Prisoner", "Blueshield", "Corrections Officer", "Security Officer", "Warden", "Detective", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Head of Security", "Captain", "Nanotrasen Representative", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster", "Vanguard Operative")
+ 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("Prisoner", "Blueshield", "Corrections Officer", "Security Officer", "Warden", "Detective", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Head of Security", "Captain", "Nanotrasen Representative", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster", "Vanguard Operative")
+ 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("Prisoner", "Blueshield", "Corrections Officer", "Security Officer", "Warden", "Detective", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Head of Security", "Captain", "Nanotrasen Representative", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster", "Vanguard Operative")
+ 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("Prisoner", "Blueshield", "Corrections Officer", "Security Officer", "Warden", "Detective", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Head of Security", "Captain", "Nanotrasen Representative", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster", "Vanguard Operative")
+ 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("Prisoner", "Blueshield", "Corrections Officer", "Security Officer", "Warden", "Detective", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Head of Security", "Captain", "Nanotrasen Representative", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster", "Vanguard Operative")
+ 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("Prisoner", "Blueshield", "Corrections Officer", "Security Officer", "Warden", "Detective", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Head of Security", "Captain", "Nanotrasen Representative", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster", "Vanguard Operative")
+ 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/blueshield/code/blueshield.dm b/modular_skyrat/modules/blueshield/code/blueshield.dm
index 6738f57332e..a5a9e41db95 100644
--- a/modular_skyrat/modules/blueshield/code/blueshield.dm
+++ b/modular_skyrat/modules/blueshield/code/blueshield.dm
@@ -1,8 +1,8 @@
/datum/job/blueshield
- title = "Blueshield"
+ title = JOB_BLUESHIELD
description = "Protect heads of staff, get your fancy gun stolen, cry as the captain touches the supermatter."
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
- department_head = list("Nanotrasen Representative")
+ department_head = list(JOB_NT_REP)
faction = FACTION_STATION
total_positions = 1
spawn_positions = 1
diff --git a/modular_skyrat/modules/brigoff/code/brigoff.dm b/modular_skyrat/modules/brigoff/code/brigoff.dm
index 492353ed03b..770d95994b2 100644
--- a/modular_skyrat/modules/brigoff/code/brigoff.dm
+++ b/modular_skyrat/modules/brigoff/code/brigoff.dm
@@ -1,5 +1,5 @@
/datum/job/brigoff
- title = "Corrections Officer"
+ title = JOB_CORRECTIONS_OFFICER
description = "Guard the Permabrig, stand around looking imposing, get fired for abusing the prisoners"
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
department_head = list("The Warden and Head of Security")
diff --git a/modular_skyrat/modules/cryosleep/code/ai.dm b/modular_skyrat/modules/cryosleep/code/ai.dm
index a9392a2ba6d..6e477e6f714 100644
--- a/modular_skyrat/modules/cryosleep/code/ai.dm
+++ b/modular_skyrat/modules/cryosleep/code/ai.dm
@@ -16,8 +16,8 @@
new /obj/structure/ai_core/latejoin_inactive(loc)
if(src.mind)
//Handle job slot/tater cleanup.
- if(src.mind.assigned_role == "AI")
- SSjob.FreeRole("AI")
+ if(src.mind.assigned_role == JOB_AI)
+ SSjob.FreeRole(JOB_AI)
src.mind.special_role = null
qdel(src)
else
diff --git a/modular_skyrat/modules/customization/game/objects/items/plushes.dm b/modular_skyrat/modules/customization/game/objects/items/plushes.dm
index 7fc06297c6e..7a11f70589f 100644
--- a/modular_skyrat/modules/customization/game/objects/items/plushes.dm
+++ b/modular_skyrat/modules/customization/game/objects/items/plushes.dm
@@ -39,7 +39,7 @@
attack_verb_continuous = list("snuggles", "meowhuggies", "wigglepurrs")
attack_verb_simple = list("snuggle", "meowhuggie", "wigglepurr")
special_desc_requirement = EXAMINE_CHECK_JOB
- special_desc_jobs = list("Assistant", "Head of Security")
+ special_desc_jobs = list(JOB_ASSISTANT, JOB_HEAD_OF_SECURITY)
special_desc = "There's a pocket under the coat hiding a tiny picture of the medcat plushie and a tinier ribbon diamond ring. D'awww."
/obj/item/toy/plush/sechound
diff --git a/modular_skyrat/modules/examinemore/code/examine_more.dm b/modular_skyrat/modules/examinemore/code/examine_more.dm
index 1f38aee26dc..00df29dbda8 100644
--- a/modular_skyrat/modules/examinemore/code/examine_more.dm
+++ b/modular_skyrat/modules/examinemore/code/examine_more.dm
@@ -19,7 +19,7 @@ would only be recognisable with someone that had the syndicate trait.
//The ROLE requirement setting if EXAMINE_CHECK_ROLE is set. E.g. ROLE_SYNDICATE. As you can see, it's a list. So when setting it, ensure you do = list(shit1, shit2)
var/list/special_desc_roles
- //The JOB requirement setting if EXAMINE_CHECK_JOB is set. E.g. "Security Officer". As you can see, it's a list. So when setting it, ensure you do = list(shit1, shit2)
+ //The JOB requirement setting if EXAMINE_CHECK_JOB is set. E.g. JOB_SECURITY_OFFICER. As you can see, it's a list. So when setting it, ensure you do = list(shit1, shit2)
var/list/special_desc_jobs
//The FACTION requirement setting if EXAMINE_CHECK_FACTION is set. E.g. "Syndicate". As you can see, it's a list. So when setting it, ensure you do = list(shit1, shit2)
diff --git a/modular_skyrat/modules/exp_corps/code/expeditionary_trooper.dm b/modular_skyrat/modules/exp_corps/code/expeditionary_trooper.dm
index 8327a008474..39dd9ae643e 100644
--- a/modular_skyrat/modules/exp_corps/code/expeditionary_trooper.dm
+++ b/modular_skyrat/modules/exp_corps/code/expeditionary_trooper.dm
@@ -1,7 +1,7 @@
/datum/job/expeditionary_trooper
- title = "Vanguard Operative"
+ title = JOB_VANGUARD_OPERATIVE
description = "Explore gateways, watch your friends die, find all the loot."
- department_head = list("Captain")
+ department_head = list(JOB_CAPTAIN)
faction = FACTION_STATION
total_positions = 4
spawn_positions = 4
diff --git a/modular_skyrat/modules/goofsec/code/department_guards.dm b/modular_skyrat/modules/goofsec/code/department_guards.dm
index 2578b4cc371..fe577d2528e 100644
--- a/modular_skyrat/modules/goofsec/code/department_guards.dm
+++ b/modular_skyrat/modules/goofsec/code/department_guards.dm
@@ -63,10 +63,10 @@
worn_icon_state = "mallcop_helm"
/datum/job/orderly
- title = "Orderly"
+ title = JOB_ORDERLY
description = "Defend the medical department, hold down idiots who refuse the vaccine, flex your muscles at people who fuck with medical."
job_spawn_title = "Medical Doctor"
- department_head = list("Chief Medical Officer")
+ department_head = list(JOB_CHIEF_MEDICAL_OFFICER)
faction = FACTION_STATION
total_positions = 2
spawn_positions = 2
@@ -132,10 +132,10 @@
job = /datum/job/orderly
/datum/job/science_guard
- title = "Science Guard" // I'm a little busy here, Calhoun.
+ title = JOB_SCIENCE_GUARD // I'm a little busy here, Calhoun.
description = "Figure out why the emails aren't working, keep an eye on those eggheads, keep them safe from their mistakes."
job_spawn_title = "Scientist"
- department_head = list("Research Director")
+ department_head = list(JOB_RESEARCH_DIRECTOR)
faction = FACTION_STATION
total_positions = 2
spawn_positions = 2
@@ -203,10 +203,10 @@
job = /datum/job/science_guard
/datum/job/bouncer
- title = "Bouncer"
+ title = JOB_BOUNCER
description = "Tell people they aren't on the list. Check people's IDs. Tell them to fuck off and get real ID."
job_spawn_title = "Bartender"
- department_head = list("Head of Personnel")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 2
spawn_positions = 2
@@ -273,10 +273,10 @@
job = /datum/job/bouncer
/datum/job/customs_agent
- title = "Customs Agent" // No, you don't get to ship ten kilograms of cocaine to the Spinward Stellar Coalition.
+ title = JOB_CUSTOMS_AGENT // No, you don't get to ship ten kilograms of cocaine to the Spinward Stellar Coalition.
description = "Inspect the packages coming to and from the station, protect the cargo department, beat the shit out of people trying to ship Cocaine to the Spinward Stellar Coalition."
job_spawn_title = "Cargo Technician"
- department_head = list("Quartermaster")
+ department_head = list(JOB_QUARTERMASTER)
faction = FACTION_STATION
total_positions = 2
spawn_positions = 2
@@ -342,10 +342,10 @@
job = /datum/job/customs_agent
/datum/job/engineering_guard
- title = "Engineering Guard" // Listen here, this engine is a restricted area. Please leave if you aren't wearing a radioactive suit.
+ title = JOB_ENGINEERING_GUARD // Listen here, this engine is a restricted area. Please leave if you aren't wearing a radioactive suit.
description = "Spy on the supermatter, keep an eye on atmospherics, fall asleep at your desk."
job_spawn_title = "Station Engineer"
- department_head = list("Chief Engineer")
+ department_head = list(JOB_CHIEF_ENGINEER)
faction = FACTION_STATION
total_positions = 2
spawn_positions = 2
diff --git a/modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm b/modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm
index a6aaca641e5..0d314d04bee 100644
--- a/modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm
+++ b/modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm
@@ -73,13 +73,13 @@
name = "Peacekeeper jacket"
item_path = /obj/item/clothing/suit/armor/vest/warden/rax
ckeywhitelist = list("raxraus")
- restricted_roles = list("Blueshield", "Head of Security", "Security Officer","Civil Disputes Officer", "Warden", "Detective", "Security Sergeant", "Security Medic", "Corrections Officer")
+ restricted_roles = list(JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER,JOB_CIVIL_DISPUTES_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_SERGEANT, JOB_SECURITY_MEDIC, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/under/jumpsuit/rax_banded_uniform
name = "Banded Uniform"
item_path = /obj/item/clothing/under/rank/security/rax
ckeywhitelist = list("raxraus")
- restricted_roles = list("Blueshield", "Head of Security", "Security Officer","Civil Disputes Officer", "Warden", "Detective", "Security Sergeant", "Security Medic", "Corrections Officer")
+ restricted_roles = list(JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER,JOB_CIVIL_DISPUTES_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_SERGEANT, JOB_SECURITY_MEDIC, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/suit/rax_aerostatic_jacket
name = "Navy Aerostatic Jacket"
@@ -105,19 +105,19 @@
name = "HepUnit Standard Helmet"
item_path = /obj/item/clothing/head/helmet/sec/peacekeeper/jax
ckeywhitelist = list("candlejax")
- restricted_roles = list("Vanguard Operative","Blueshield", "Head of Security", "Security Officer","Civil Disputes Officer", "Warden", "Detective", "Security Sergeant", "Security Medic", "Corrections Officer")
+ restricted_roles = list(JOB_VANGUARD_OPERATIVE,JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER,JOB_CIVIL_DISPUTES_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_SERGEANT, JOB_SECURITY_MEDIC, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/head/emissionhelm
name = "Emission's Helmet"
item_path = /obj/item/clothing/head/helmet/space/plasmaman/candlejax
ckeywhitelist = list("candlejax")
- restricted_roles = list("Shaft Miner","Vanguard Operative","Blueshield", "Head of Security", "Security Officer","Civil Disputes Officer", "Warden", "Detective", "Security Sergeant", "Security Medic", "Corrections Officer")
+ restricted_roles = list(JOB_SHAFT_MINER,JOB_VANGUARD_OPERATIVE,JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER,JOB_CIVIL_DISPUTES_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_SERGEANT, JOB_SECURITY_MEDIC, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/under/jumpsuit/emissionsuit
name = "Emission's Suit"
item_path = /obj/item/clothing/under/plasmaman/security/candlejax
ckeywhitelist = list("candlejax")
- restricted_roles = list("Shaft Miner","Vanguard Operative","Blueshield", "Head of Security", "Security Officer","Civil Disputes Officer", "Warden", "Detective", "Security Sergeant", "Security Medic", "Corrections Officer")
+ restricted_roles = list(JOB_SHAFT_MINER,JOB_VANGUARD_OPERATIVE,JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER,JOB_CIVIL_DISPUTES_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_SERGEANT, JOB_SECURITY_MEDIC, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/head/avipilot
name = "Smuggler's Flying Cap"
@@ -178,7 +178,7 @@
name = "Captain's Dress"
item_path = /obj/item/clothing/under/rank/captain/dress
ckeywhitelist = list("netrakyram")
- restricted_roles = list("Captain")
+ restricted_roles = list(JOB_CAPTAIN)
/datum/loadout_item/under/jumpsuit/kilano_suit
name = "black and gold dress uniform"
@@ -294,19 +294,19 @@
name = "CC Ensign's cap"
item_path = /obj/item/clothing/head/nanotrasen_representative/hubert
ckeywhitelist = list("hackertdog")
- restricted_roles = list("Nanotrasen Representative")
+ restricted_roles = list(JOB_NT_REP)
/datum/loadout_item/suit/hubertcc
name = "CC Ensign's armoured vest"
item_path = /obj/item/clothing/suit/armor/vest/nanotrasen_representative/hubert
ckeywhitelist = list("hackertdog")
- restricted_roles = list("Nanotrasen Representative")
+ restricted_roles = list(JOB_NT_REP)
/datum/loadout_item/under/jumpsuit/hubertcc
name = "CC Ensign's uniform"
item_path = /obj/item/clothing/under/rank/nanotrasen_representative/hubert
ckeywhitelist = list("hackertdog")
- restricted_roles = list("Nanotrasen Representative")
+ restricted_roles = list(JOB_NT_REP)
/datum/loadout_item/head/frostyushanka
name = "Blue Ushanka"
@@ -322,13 +322,13 @@
name = "PCRC Armored Jacket"
item_path = /obj/item/clothing/suit/armor/vest/blueshirt/skyrat/pcrc
ckeywhitelist = list("1ceres")
- restricted_roles = list("Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard")
+ restricted_roles = list(JOB_ORDERLY, JOB_BOUNCER, JOB_CUSTOMS_AGENT, JOB_ENGINEERING_GUARD, JOB_SCIENCE_GUARD)
/datum/loadout_item/under/jumpsuit/pcrc_clothes
name = "PCRC Business Clothes"
item_path = /obj/item/clothing/under/rank/security/officer/blueshirt/skyrat/pcrc
ckeywhitelist = list("1ceres")
- restricted_roles = list("Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard")
+ restricted_roles = list(JOB_ORDERLY, JOB_BOUNCER, JOB_CUSTOMS_AGENT, JOB_ENGINEERING_GUARD, JOB_SCIENCE_GUARD)
/datum/loadout_item/suit/occult_coat
name = "Occult Collector's Coat"
diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_glasses.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_glasses.dm
index 62ada2d5faf..b1f9f44e618 100644
--- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_glasses.dm
+++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_glasses.dm
@@ -107,41 +107,41 @@ GLOBAL_LIST_INIT(loadout_glasses, generate_loadout_items(/datum/loadout_item/gla
/datum/loadout_item/glasses/medicpatch
name = "Medical Eyepatch"
item_path = /obj/item/clothing/glasses/hud/eyepatch/med
- restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist", "Paramedic")
+ restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC)
/datum/loadout_item/glasses/robopatch
name = "Diagnostic Eyepatch"
item_path = /obj/item/clothing/glasses/hud/eyepatch/diagnostic
- restricted_roles = list("Scientist", "Roboticist", "Geneticist", "Research Director", "Vanguard Operative")
+ restricted_roles = list(JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_VANGUARD_OPERATIVE)
/datum/loadout_item/glasses/scipatch
name = "Science Eyepatch"
item_path = /obj/item/clothing/glasses/hud/eyepatch/sci
- restricted_roles = list("Scientist", "Roboticist", "Geneticist", "Research Director", "Chemist", "Vanguard Operative")
+ restricted_roles = list(JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_CHEMIST, JOB_VANGUARD_OPERATIVE)
/datum/loadout_item/glasses/sechud
name = "Security Hud"
item_path = /obj/item/clothing/glasses/hud/security
- restricted_roles = list("Security Officer", "Security Sergeant", "Warden", "Head of Security", "Civil Disputes Officer")
+ restricted_roles = list(JOB_SECURITY_OFFICER, JOB_SECURITY_SERGEANT, JOB_WARDEN, JOB_HEAD_OF_SECURITY, JOB_CIVIL_DISPUTES_OFFICER)
/datum/loadout_item/glasses/secpatch
name = "Security Eyepatch Hud"
item_path = /obj/item/clothing/glasses/hud/eyepatch/sec
- restricted_roles = list("Security Officer", "Security Sergeant", "Warden", "Head of Security", "Civil Disputes Officer")
+ restricted_roles = list(JOB_SECURITY_OFFICER, JOB_SECURITY_SERGEANT, JOB_WARDEN, JOB_HEAD_OF_SECURITY, JOB_CIVIL_DISPUTES_OFFICER)
/datum/loadout_item/glasses/sechud_glasses
name = "Prescription Security Hud"
item_path = /obj/item/clothing/glasses/hud/security/prescription
- restricted_roles = list("Security Officer", "Warden", "Head of Security")
+ restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY)
/datum/loadout_item/glasses/medhud_glasses
name = "Prescription Medical Hud"
item_path = /obj/item/clothing/glasses/hud/health/prescription
- restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist", "Paramedic")
+ restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC)
/datum/loadout_item/glasses/diaghud_glasses
name = "Prescription Diagnostic Hud"
item_path = /obj/item/clothing/glasses/hud/diagnostic/prescription
- restricted_roles = list("Research Director","Scientist", "Roboticist")
+ restricted_roles = list(JOB_RESEARCH_DIRECTOR,JOB_SCIENTIST, JOB_ROBOTICIST)
//Families Gear
/datum/loadout_item/glasses/osi
diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm
index 007d9c242e3..785a64b5c1d 100644
--- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm
+++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm
@@ -406,152 +406,152 @@ GLOBAL_LIST_INIT(loadout_helmets, generate_loadout_items(/datum/loadout_item/hea
/datum/loadout_item/head/trekcap
name = "Federation Officer's Cap (White)"
item_path = /obj/item/clothing/head/caphat/formal/fedcover
- restricted_roles = list("Captain","Head of Personnel")
+ restricted_roles = list(JOB_CAPTAIN,JOB_HEAD_OF_PERSONNEL)
/datum/loadout_item/head/trekcapcap
name = "Federation Officer's Cap (Black)"
item_path = /obj/item/clothing/head/caphat/formal/fedcover/black
- restricted_roles = list("Captain","Head of Personnel")
+ restricted_roles = list(JOB_CAPTAIN,JOB_HEAD_OF_PERSONNEL)
/datum/loadout_item/head/trekcapmedisci
name = "Federation Officer's Cap (Blue)"
item_path = /obj/item/clothing/head/caphat/formal/fedcover/medsci
- restricted_roles = list("Chief Medical Officer","Medical Doctor","Security Medic","Paramedic","Chemist","Virologist","Psychologist","Geneticist","Research Director","Scientist","Roboticist","Vanguard Operative")
+ restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER,JOB_MEDICAL_DOCTOR,JOB_SECURITY_MEDIC,JOB_PARAMEDIC,JOB_CHEMIST,JOB_VIROLOGIST,JOB_PSYCHOLOGIST,JOB_GENETICIST,JOB_RESEARCH_DIRECTOR,JOB_SCIENTIST,JOB_ROBOTICIST,JOB_VANGUARD_OPERATIVE)
/datum/loadout_item/head/trekcapeng
name = "Federation Officer's Cap (Yellow)"
item_path = /obj/item/clothing/head/caphat/formal/fedcover/eng
- restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Security Medic","Security Sergeant","Warden","Detective","Security Officer","Head of Security","Civil Disputes Officer","Corrections Officer","Cargo Technician", "Shaft Miner", "Quartermaster")
+ restricted_roles = list(JOB_CHIEF_ENGINEER,JOB_ATMOSPHERIC_TECHNICIAN,JOB_STATION_ENGINEER,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT,JOB_WARDEN,JOB_DETECTIVE,JOB_SECURITY_OFFICER,JOB_HEAD_OF_SECURITY,JOB_CIVIL_DISPUTES_OFFICER,JOB_CORRECTIONS_OFFICER,JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_QUARTERMASTER)
/datum/loadout_item/head/trekcapsec
name = "Federation Officer's Cap (Red)"
item_path = /obj/item/clothing/head/caphat/formal/fedcover/sec
- restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Security Medic","Security Sergeant","Warden","Detective","Security Officer","Head of Security","Civil Disputes Officer","Corrections Officer","Cargo Technician", "Shaft Miner", "Quartermaster")
+ restricted_roles = list(JOB_CHIEF_ENGINEER,JOB_ATMOSPHERIC_TECHNICIAN,JOB_STATION_ENGINEER,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT,JOB_WARDEN,JOB_DETECTIVE,JOB_SECURITY_OFFICER,JOB_HEAD_OF_SECURITY,JOB_CIVIL_DISPUTES_OFFICER,JOB_CORRECTIONS_OFFICER,JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_QUARTERMASTER)
/datum/loadout_item/head/imperial_cap
name = "Captain's Naval Cap"
item_path = /obj/item/clothing/head/imperial/cap
- restricted_roles = list("Captain", "Nanotrasen Representative")
+ restricted_roles = list(JOB_CAPTAIN, JOB_NT_REP)
/datum/loadout_item/head/imperial_hop
name = "Head of Personnel's Naval Cap"
item_path = /obj/item/clothing/head/imperial/hop
- restricted_roles = list("Head of Personnel", "Nanotrasen Representative")
+ restricted_roles = list(JOB_HEAD_OF_PERSONNEL, JOB_NT_REP)
/datum/loadout_item/head/imperial_ce
name = "Chief Engineer's blast helmet."
item_path = /obj/item/clothing/head/imperial/ce
- restricted_roles = list("Chief Engineer")
+ restricted_roles = list(JOB_CHIEF_ENGINEER)
/datum/loadout_item/head/cowboyhat_sec
name = "Cowboy Hat, Security"
item_path = /obj/item/clothing/head/cowboyhat/sec
- restricted_roles = list("Warden","Detective","Security Medic","Security Sergeant","Security Officer","Head of Security","Civil Disputes Officer","Corrections Officer")
+ restricted_roles = list(JOB_WARDEN,JOB_DETECTIVE,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT,JOB_SECURITY_OFFICER,JOB_HEAD_OF_SECURITY,JOB_CIVIL_DISPUTES_OFFICER,JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/head/cowboyhat_secwide
name = "Wide Cowboy Hat, Security"
item_path = /obj/item/clothing/head/cowboyhat/widesec
- restricted_roles = list("Warden","Detective","Security Medic","Security Sergeant","Security Officer","Head of Security","Civil Disputes Officer","Corrections Officer")
+ restricted_roles = list(JOB_WARDEN,JOB_DETECTIVE,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT,JOB_SECURITY_OFFICER,JOB_HEAD_OF_SECURITY,JOB_CIVIL_DISPUTES_OFFICER,JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/head/ushanka/sec
name = "Security Ushanka"
item_path = /obj/item/clothing/head/ushanka/sec
- restricted_roles = list("Warden","Detective","Security Medic","Security Sergeant","Security Officer","Head of Security","Civil Disputes Officer","Corrections Officer")
+ restricted_roles = list(JOB_WARDEN,JOB_DETECTIVE,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT,JOB_SECURITY_OFFICER,JOB_HEAD_OF_SECURITY,JOB_CIVIL_DISPUTES_OFFICER,JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/head/blasthelmet
name = "General's Helmet"
item_path = /obj/item/clothing/head/imperialhelmet
- restricted_roles = list("Warden","Detective","Security Medic","Security Sergeant","Security Officer","Civil Disputes Officer","Corrections Officer","Captain", "Head of Personnel", "Blueshield", "Head of Security", "Research Director", "Quartermaster", "Chief Medical Officer", "Chief Engineer")
+ restricted_roles = list(JOB_WARDEN,JOB_DETECTIVE,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT,JOB_SECURITY_OFFICER,JOB_CIVIL_DISPUTES_OFFICER,JOB_CORRECTIONS_OFFICER,JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER)
/datum/loadout_item/head/navybluehoscap
name = "Head of Security's Naval Cap"
item_path = /obj/item/clothing/head/imperial/hos
- restricted_roles = list("Head of Security")
+ restricted_roles = list(JOB_HEAD_OF_SECURITY)
/datum/loadout_item/head/navyblueofficerberet
name = "Security Officer's Navyblue beret"
item_path = /obj/item/clothing/head/beret/sec/navyofficer
- restricted_roles = list("Security Officer","Security Medic","Security Sergeant",)
+ restricted_roles = list(JOB_SECURITY_OFFICER,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT,)
/datum/loadout_item/head/solofficercap
name = "Security Officer's Sol Cap"
item_path = /obj/item/clothing/head/sec/peacekeeper/sol
- restricted_roles = list("Security Officer","Security Medic","Security Sergeant",)
+ restricted_roles = list(JOB_SECURITY_OFFICER,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT,)
/datum/loadout_item/head/soltrafficoff
name = "Traffic Officer Cap"
item_path = /obj/item/clothing/head/soltraffic
- restricted_roles = list("Security Officer","Security Medic","Security Sergeant","Civil Disputes Officer")
+ restricted_roles = list(JOB_SECURITY_OFFICER,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT,JOB_CIVIL_DISPUTES_OFFICER)
/datum/loadout_item/head/navybluewardenberet
name = "Warden's navyblue beret"
item_path = /obj/item/clothing/head/beret/sec/navywarden
- restricted_roles = list("Warden")
+ restricted_roles = list(JOB_WARDEN)
/datum/loadout_item/head/cybergoggles //Cyberpunk-P.I. Outfit
name = "Type-34C Forensics Headwear"
item_path = /obj/item/clothing/head/fedora/det_hat/cybergoggles
- restricted_roles = list("Detective")
+ restricted_roles = list(JOB_DETECTIVE)
/datum/loadout_item/head/nursehat
name = "Nurse Hat"
item_path = /obj/item/clothing/head/nursehat
- restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist","Security Medic")
+ restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST,JOB_SECURITY_MEDIC)
/datum/loadout_item/head/imperial_generic
name = "Naval Officer Cap"
item_path = /obj/item/clothing/head/imperial
- restricted_roles = list("Captain", "Head of Personnel", "Blueshield", "Head of Security", "Research Director", "Quartermaster", "Chief Medical Officer", "Chief Engineer", "Nanotrasen Representative")
+ restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP)
/datum/loadout_item/head/imperial_grey
name = "Grey Naval Officer Cap"
item_path = /obj/item/clothing/head/imperial/grey
- restricted_roles = list("Captain", "Head of Personnel", "Blueshield", "Head of Security", "Research Director", "Quartermaster", "Chief Medical Officer", "Chief Engineer", "Nanotrasen Representative")
+ restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP)
/datum/loadout_item/head/imperial_red
name = "Red Naval Officer Cap"
item_path = /obj/item/clothing/head/imperial/red
- restricted_roles = list("Captain", "Head of Personnel", "Blueshield", "Head of Security", "Research Director", "Quartermaster", "Chief Medical Officer", "Chief Engineer")
+ restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER)
// JOB - Berets
/datum/loadout_item/head/atmos_beret
name = "Atmospherics Beret"
item_path = /obj/item/clothing/head/beret/atmos
- restricted_roles = list("Station Engineer", "Atmospheric Technician", "Chief Engineer")
+ restricted_roles = list(JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_CHIEF_ENGINEER)
/datum/loadout_item/head/engi_beret
name = "Engineering Beret"
item_path = /obj/item/clothing/head/beret/engi
- restricted_roles = list("Station Engineer", "Atmospheric Technician", "Chief Engineer")
+ restricted_roles = list(JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_CHIEF_ENGINEER)
/datum/loadout_item/head/beret_med
name = "Medical Beret"
item_path = /obj/item/clothing/head/beret/medical
- restricted_roles = list("Medical Doctor","Virologist", "Chemist", "Chief Medical Officer","Security Medic")
+ restricted_roles = list(JOB_MEDICAL_DOCTOR,JOB_VIROLOGIST, JOB_CHEMIST, JOB_CHIEF_MEDICAL_OFFICER,JOB_SECURITY_MEDIC)
/datum/loadout_item/head/beret_paramedic
name = "Paramedic Beret"
item_path = /obj/item/clothing/head/beret/medical/paramedic
- restricted_roles = list("Paramedic", "Chief Medical Officer")
+ restricted_roles = list(JOB_PARAMEDIC, JOB_CHIEF_MEDICAL_OFFICER)
/datum/loadout_item/head/beret_viro
name = "Virologist Beret"
item_path = /obj/item/clothing/head/beret/medical/virologist
- restricted_roles = list("Virologist", "Chief Medical Officer")
+ restricted_roles = list(JOB_VIROLOGIST, JOB_CHIEF_MEDICAL_OFFICER)
/datum/loadout_item/head/beret_chem
name = "Chemist Beret"
item_path = /obj/item/clothing/head/beret/medical/chemist
- restricted_roles = list("Chemist", "Chief Medical Officer")
+ restricted_roles = list(JOB_CHEMIST, JOB_CHIEF_MEDICAL_OFFICER)
/datum/loadout_item/head/beret_sci
name = "Scientist's Beret"
item_path = /obj/item/clothing/head/beret/science
- restricted_roles = list("Scientist", "Roboticist", "Geneticist", "Research Director", "Vanguard Operative")
+ restricted_roles = list(JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_VANGUARD_OPERATIVE)
/datum/loadout_item/head/beret_robo
name = "Roboticist's Beret"
item_path = /obj/item/clothing/head/beret/science/fancy/robo
- restricted_roles = list("Roboticist", "Research Director")
+ restricted_roles = list(JOB_ROBOTICIST, JOB_RESEARCH_DIRECTOR)
/datum/loadout_item/head/brfed
name = "Brown Fedora"
diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_masks.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_masks.dm
index afa71cab6e2..69578fb4a34 100644
--- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_masks.dm
+++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_masks.dm
@@ -140,7 +140,7 @@ GLOBAL_LIST_INIT(loadout_masks, generate_loadout_items(/datum/loadout_item/mask)
/datum/loadout_item/mask/surgical
name = "Sterile Mask"
item_path = /obj/item/clothing/mask/surgical
- restricted_roles = list("Chief Medical Officer", "Medical Doctor", "Virologist", "Chemist", "Geneticist", "Paramedic", "Psychologist","Security Medic")
+ restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_VIROLOGIST, JOB_CHEMIST, JOB_GENETICIST, JOB_PARAMEDIC, JOB_PSYCHOLOGIST,JOB_SECURITY_MEDIC)
//Families Gear
/datum/loadout_item/mask/driscoll
diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_neck.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_neck.dm
index 1c6123df7b8..880351a3b28 100644
--- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_neck.dm
+++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_neck.dm
@@ -98,7 +98,7 @@ GLOBAL_LIST_INIT(loadout_necks, generate_loadout_items(/datum/loadout_item/neck)
/datum/loadout_item/neck/stethoscope
name = "Stethoscope"
item_path = /obj/item/clothing/neck/stethoscope
- restricted_roles = list("Medical Doctor", "Chief Medical Officer","Security Medic")
+ restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER,JOB_SECURITY_MEDIC)
/datum/loadout_item/neck/choker
name = "Choker"
@@ -160,7 +160,7 @@ GLOBAL_LIST_INIT(loadout_necks, generate_loadout_items(/datum/loadout_item/neck)
/datum/loadout_item/neck/discoproper
name = "Horrible Necktie"
item_path = /obj/item/clothing/neck/tie/disco
- restricted_roles = list("Detective")
+ restricted_roles = list(JOB_DETECTIVE)
/datum/loadout_item/neck/mantle
name = "Mantle"
@@ -169,37 +169,37 @@ GLOBAL_LIST_INIT(loadout_necks, generate_loadout_items(/datum/loadout_item/neck)
/datum/loadout_item/neck/mantle_hop
name = "Head of Personnel's Mantle"
item_path = /obj/item/clothing/neck/mantle/hopmantle
- restricted_roles = list("Head of Personnel")
+ restricted_roles = list(JOB_HEAD_OF_PERSONNEL)
/datum/loadout_item/neck/mantle_cmo
name = "Chief Medical Officer's Mantle"
item_path = /obj/item/clothing/neck/mantle/cmomantle
- restricted_roles = list("Chief Medical Officer")
+ restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER)
/datum/loadout_item/neck/mantle_rd
name = "Research Director's Mantle"
item_path = /obj/item/clothing/neck/mantle/rdmantle
- restricted_roles = list("Research Director")
+ restricted_roles = list(JOB_RESEARCH_DIRECTOR)
/datum/loadout_item/neck/mantle_ce
name = "Chief Engineer's Mantle"
item_path = /obj/item/clothing/neck/mantle/cemantle
- restricted_roles = list("Chief Engineer")
+ restricted_roles = list(JOB_CHIEF_ENGINEER)
/datum/loadout_item/neck/mantle_hos
name = "Head of Security's Mantle"
item_path = /obj/item/clothing/neck/mantle/hosmantle
- restricted_roles = list("Head of Security")
+ restricted_roles = list(JOB_HEAD_OF_SECURITY)
/datum/loadout_item/neck/mantle_bs
name = "Blueshield's Mantle"
item_path = /obj/item/clothing/neck/mantle/bsmantle
- restricted_roles = list("Blueshield")
+ restricted_roles = list(JOB_BLUESHIELD)
/datum/loadout_item/neck/mantle_cap
name = "Captain's Mantle"
item_path = /obj/item/clothing/neck/mantle/capmantle
- restricted_roles = list("Captain")
+ restricted_roles = list(JOB_CAPTAIN)
/datum/loadout_item/neck/kinkycollar
name = "Kinky collar"
diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_pocket.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_pocket.dm
index 300c09dac57..735e55ebc04 100644
--- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_pocket.dm
+++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_pocket.dm
@@ -183,7 +183,7 @@ GLOBAL_LIST_INIT(loadout_pocket_items, generate_loadout_items(/datum/loadout_ite
/datum/loadout_item/pocket_items/cross
name = "Ornate Cross"
item_path = /obj/item/crucifix
- restricted_roles = list("Chaplain")
+ restricted_roles = list(JOB_CHAPLAIN)
/datum/loadout_item/pocket_items/fragrance_cologne
name = "Cologne Bottle"
diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm
index ff8e2d3bb0c..23fdb4c65a0 100644
--- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm
+++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm
@@ -410,127 +410,127 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su
/datum/loadout_item/suit/coat_med
name = "Medical winter coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/medical
- restricted_roles = list("Chief Medical Officer", "Medical Doctor") // Reserve it to Medical Doctors and their boss, the Chief Medical Officer
+ restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR) // Reserve it to Medical Doctors and their boss, the Chief Medical Officer
/datum/loadout_item/suit/coat_paramedic
name = "Paramedic winter coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/paramedic
- restricted_roles = list("Chief Medical Officer", "Paramedic") // Reserve it to Paramedics and their boss, the Chief Medical Officer
+ restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_PARAMEDIC) // Reserve it to Paramedics and their boss, the Chief Medical Officer
/datum/loadout_item/suit/coat_robotics
name = "Robotics winter coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/robotics
- restricted_roles = list("Research Director", "Roboticist")
+ restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_ROBOTICIST)
/datum/loadout_item/suit/coat_sci
name = "Science winter coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/science
- restricted_roles = list("Research Director", "Scientist", "Roboticist", "Vanguard Operative") // Reserve it to the Science Departement
+ restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_VANGUARD_OPERATIVE) // Reserve it to the Science Departement
/datum/loadout_item/suit/coat_eng
name = "Engineering winter coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/engineering
- restricted_roles = list("Chief Engineer", "Station Engineer") // Reserve it to Station Engineers and their boss, the Chief Engineer
+ restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER) // Reserve it to Station Engineers and their boss, the Chief Engineer
/datum/loadout_item/suit/coat_atmos
name = "Atmospherics winter coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos
- restricted_roles = list("Chief Engineer", "Atmospheric Technician") // Reserve it to Atmos Techs and their boss, the Chief Engineer
+ restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN) // Reserve it to Atmos Techs and their boss, the Chief Engineer
/datum/loadout_item/suit/coat_hydro
name = "Hydroponics winter coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/hydro
- restricted_roles = list("Head of Personnel", "Botanist") // Reserve it to Botanists and their boss, the Head of Personnel
+ restricted_roles = list(JOB_HEAD_OF_PERSONNEL, JOB_BOTANIST) // Reserve it to Botanists and their boss, the Head of Personnel
/datum/loadout_item/suit/coat_bar
name = "Bartender winter coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/bartender
- restricted_roles = list("Head of Personnel", "Bartender") //Reserved for Bartenders and their head-of-staff
+ restricted_roles = list(JOB_HEAD_OF_PERSONNEL, JOB_BARTENDER) //Reserved for Bartenders and their head-of-staff
/datum/loadout_item/suit/coat_cargo
name = "Cargo winter coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/cargo
- restricted_roles = list("Quartermaster", "Cargo Technician") // Reserve it to Cargo Techs and their boss, the Quartermaster
+ restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN) // Reserve it to Cargo Techs and their boss, the Quartermaster
/datum/loadout_item/suit/coat_miner
name = "Mining winter coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/miner
- restricted_roles = list("Quartermaster", "Shaft Miner") // Reserve it to Miners and their boss, the Quartermaster
+ restricted_roles = list(JOB_QUARTERMASTER, JOB_SHAFT_MINER) // Reserve it to Miners and their boss, the Quartermaster
/datum/loadout_item/suit/navybluejacketofficer
name = "security officer's navyblue jacket"
item_path = /obj/item/clothing/suit/armor/navyblue
- restricted_roles = list("Security Officer","Security Medic","Security Sergeant","Head of Security", "Warden") // I aint making a medic one, maybe i'll add some rank thing from cm or civ for it
+ restricted_roles = list(JOB_SECURITY_OFFICER,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT,JOB_HEAD_OF_SECURITY, JOB_WARDEN) // I aint making a medic one, maybe i'll add some rank thing from cm or civ for it
/datum/loadout_item/suit/navybluejacketwarden
name = "warden navyblue jacket"
item_path = /obj/item/clothing/suit/armor/vest/warden/navyblue
- restricted_roles = list("Warden")
+ restricted_roles = list(JOB_WARDEN)
/datum/loadout_item/suit/security_jacket
name = "Security Jacket"
item_path = /obj/item/clothing/suit/toggle/jacket/sec
- restricted_roles = list("Head of Security", "Security Officer", "Warden", "Detective", "Security Medic", "Security Sergeant") //Not giving this one to CDOs or COs because it's actually better than the one they spawn with
+ restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT) //Not giving this one to CDOs or COs because it's actually better than the one they spawn with
/datum/loadout_item/suit/cossak/sec
name = "Ukrainian Security Jacket"
item_path = /obj/item/clothing/suit/armor/cossack/sec
- restricted_roles = list("Head of Security", "Security Officer", "Warden", "Detective", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Corrections Officer")
+ restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/suit/brit
name = "High Vis Armored Vest"
item_path = /obj/item/clothing/suit/toggle/brit/sec
- restricted_roles = list("Head of Security", "Security Officer", "Warden", "Detective", "Security Medic", "Security Sergeant", "Civil Disputes Officer", "Corrections Officer")
+ restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/suit/british_jacket
name = "Peacekeeper Officer Coat"
item_path = /obj/item/clothing/suit/british_officer
- restricted_roles = list("Head of Security", "Warden","Detective","Security Sergeant")
+ restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_WARDEN,JOB_DETECTIVE,JOB_SECURITY_SERGEANT)
/datum/loadout_item/suit/engi_jacket
name = "Engineering Jacket"
item_path = /obj/item/clothing/suit/toggle/jacket/engi
- restricted_roles = list("Chief Engineer", "Station Engineer", "Atmospheric Technician")
+ restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN)
/datum/loadout_item/suit/sci_jacket
name = "Science Jacket"
item_path = /obj/item/clothing/suit/toggle/jacket/sci
- restricted_roles = list("Research Director", "Scientist", "Roboticist", "Geneticist", "Vanguard Operative")
+ restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_VANGUARD_OPERATIVE)
/datum/loadout_item/suit/med_jacket
name = "Medbay Jacket"
item_path = /obj/item/clothing/suit/toggle/jacket/med
- restricted_roles = list("Chief Medical Officer", "Medical Doctor", "Paramedic", "Chemist", "Virologist")
+ restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST)
/datum/loadout_item/suit/supply_jacket
name = "Supply Jacket"
item_path = /obj/item/clothing/suit/toggle/jacket/supply
- restricted_roles = list("Quartermaster", "Cargo Technician", "Miner")
+ restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, "Miner")
/datum/loadout_item/suit/supply_gorka_jacket
name = "Supply Gorka Jacket"
item_path = /obj/item/clothing/suit/gorka/supply
- restricted_roles = list("Quartermaster", "Cargo Technician", "Miner")
+ restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, "Miner")
/datum/loadout_item/suit/labcoat_parared
name = "Red Paramedic Labcoat"
item_path = /obj/item/clothing/suit/toggle/labcoat/para_red
- restricted_roles = list("Chief Medical Officer", "Paramedic","Security Medic") // its a medic jacket anyway screw you
+ restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_PARAMEDIC,JOB_SECURITY_MEDIC) // its a medic jacket anyway screw you
/datum/loadout_item/suit/labcoat_highvis
name = "High-Vis Labcoat"
item_path = /obj/item/clothing/suit/toggle/labcoat/highvis
- restricted_roles = list("Chief Medical Officer", "Paramedic", "Atmospheric Technician", "Detective", "Security Medic", "Chemist", "Orderly") // And now chemist and orderly get it too.
+ restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_PARAMEDIC, JOB_ATMOSPHERIC_TECHNICIAN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_CHEMIST, JOB_ORDERLY) // And now chemist and orderly get it too.
/datum/loadout_item/suit/discojacket
name = "Disco Ass Blazer"
item_path = /obj/item/clothing/suit/discoblazer
- restricted_roles = list("Detective")
+ restricted_roles = list(JOB_DETECTIVE)
/datum/loadout_item/suit/deckard
name = "Runner Coat"
item_path = /obj/item/clothing/suit/toggle/deckard
- restricted_roles = list("Detective")
+ restricted_roles = list(JOB_DETECTIVE)
/datum/loadout_item/suit/bltrench
name = "Black Trenchcoat"
diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_toys.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_toys.dm
index 04a9b7213af..465faba161b 100644
--- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_toys.dm
+++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_toys.dm
@@ -28,7 +28,7 @@ GLOBAL_LIST_INIT(loadout_toys, generate_loadout_items(/datum/loadout_item/toys))
/datum/loadout_item/toys/narsie
name = "Nar'sie Plush"
item_path = /obj/item/toy/plush/narplush
- restricted_roles = list("Chaplain")
+ restricted_roles = list(JOB_CHAPLAIN)
/datum/loadout_item/toys/nukie
name = "Nukie Plush"
@@ -45,7 +45,7 @@ GLOBAL_LIST_INIT(loadout_toys, generate_loadout_items(/datum/loadout_item/toys))
/datum/loadout_item/toys/ratvar
name = "Ratvar Plush"
item_path = /obj/item/toy/plush/ratplush
- restricted_roles = list("Chaplain")
+ restricted_roles = list(JOB_CHAPLAIN)
/datum/loadout_item/toys/rouny
name = "Rouny Plush"
diff --git a/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm b/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm
index 3c41a9774c0..b67ea21068e 100644
--- a/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm
+++ b/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm
@@ -53,93 +53,93 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/jumpsuit/impcap
name = "Captain's Naval Jumpsuit"
item_path = /obj/item/clothing/under/rank/captain/imperial
- restricted_roles = list("Captain", "Nanotrasen Representative")
+ restricted_roles = list(JOB_CAPTAIN, JOB_NT_REP)
/datum/loadout_item/under/jumpsuit/imphop
name = "Head of Personnel's Naval Jumpsuit"
item_path = /obj/item/clothing/under/rank/civilian/head_of_personnel/imperial
- restricted_roles = list("Head of Personnel", "Nanotrasen Representative")
+ restricted_roles = list(JOB_HEAD_OF_PERSONNEL, JOB_NT_REP)
/datum/loadout_item/under/jumpsuit/imphos
name = "Head of Security's Naval Uniform"
item_path = /obj/item/clothing/under/rank/security/head_of_security/imperial
- restricted_roles = list("Head of Security")
+ restricted_roles = list(JOB_HEAD_OF_SECURITY)
/datum/loadout_item/under/jumpsuit/impcmo
name = "Chief Medical Officer's Naval Uniform"
item_path = /obj/item/clothing/under/rank/medical/chief_medical_officer/imperial
- restricted_roles = list("Chief Medical Officer")
+ restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER)
/datum/loadout_item/under/jumpsuit/impce
name = "Chief Engineer's Naval Uniform"
item_path = /obj/item/clothing/under/rank/engineering/chief_engineer/imperial
- restricted_roles = list("Chief Engineer")
+ restricted_roles = list(JOB_CHIEF_ENGINEER)
/datum/loadout_item/under/jumpsuit/imprd
name = "Research Director's Naval Uniform"
item_path = /obj/item/clothing/under/rank/rnd/research_director/imperial
- restricted_roles = list("Research Director")
+ restricted_roles = list(JOB_RESEARCH_DIRECTOR)
/datum/loadout_item/under/jumpsuit/impcommand
name = "Light Grey Officer's Naval Jumpsuit"
item_path = /obj/item/clothing/under/imperial
- restricted_roles = list("Captain", "Head of Personnel", "Blueshield", "Head of Security", "Research Director", "Quartermaster", "Chief Medical Officer", "Chief Engineer", "Nanotrasen Representative")
+ restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP)
/datum/loadout_item/under/jumpsuit/impcom
name = "Grey Officer's Naval Jumpsuit"
item_path = /obj/item/clothing/under/imperial/grey
- restricted_roles = list("Captain", "Head of Personnel", "Blueshield", "Head of Security", "Research Director", "Quartermaster", "Chief Medical Officer", "Chief Engineer", "Nanotrasen Representative")
+ restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP)
/datum/loadout_item/under/jumpsuit/impred
name = "Red Officer's Naval Jumpsuit"
item_path = /obj/item/clothing/under/imperial/red
- restricted_roles = list("Captain", "Head of Personnel", "Blueshield", "Head of Security", "Research Director", "Quartermaster", "Chief Medical Officer", "Chief Engineer") //NT Reps would never wear red, it's unbefitting
+ restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER) //NT Reps would never wear red, it's unbefitting
/datum/loadout_item/under/jumpsuit/impcomtrous
name = "Grey Officer's Naval Jumpsuit (Trousers)"
item_path = /obj/item/clothing/under/imperial/grey/trouser
- restricted_roles = list("Captain", "Head of Personnel", "Blueshield", "Head of Security", "Research Director", "Quartermaster", "Chief Medical Officer", "Chief Engineer", "Nanotrasen Representative")
+ restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP)
/datum/loadout_item/under/jumpsuit/solwarden
name = "Sol Warden Uniform"
item_path = /obj/item/clothing/under/rank/security/warden/peacekeeper/sol
- restricted_roles = list("Warden")
+ restricted_roles = list(JOB_WARDEN)
/datum/loadout_item/under/jumpsuit/peacetrouse
name = "Peacekeeper Trousers"
item_path = /obj/item/clothing/under/rank/security/peacekeeper/trousers
- restricted_roles = list("Security Officer", "Warden", "Head of Security","Security Medic","Security Sergeant")
+ restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT)
/datum/loadout_item/under/jumpsuit/security_trousers
name = "Security Trousers"
item_path = /obj/item/clothing/under/rank/security/peacekeeper/trousers/red
- restricted_roles = list("Security Officer", "Warden", "Head of Security","Security Medic","Security Sergeant")
+ restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT)
/datum/loadout_item/under/jumpsuit/sectrafficop
name = "Sol Traffic Cop Uniform"
item_path = /obj/item/clothing/under/rank/security/peacekeeper/junior/sol/traffic
- restricted_roles = list("Security Officer", "Warden", "Head of Security","Security Medic","Security Sergeant", "Civil Disputes Officer")
+ restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT, JOB_CIVIL_DISPUTES_OFFICER)
/datum/loadout_item/under/jumpsuit/solofficerthing
name = "Sol Officer Uniform"
item_path = /obj/item/clothing/under/rank/security/peacekeeper/sol
- restricted_roles = list("Security Officer", "Warden", "Head of Security","Security Medic","Security Sergeant")
+ restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT)
/datum/loadout_item/under/jumpsuit/disco
name = "Superstar Cop Suit"
item_path = /obj/item/clothing/under/misc/discounder
- restricted_roles = list("Detective")
+ restricted_roles = list(JOB_DETECTIVE)
/datum/loadout_item/under/jumpsuit/seckilt
name = "Security Kilt"
item_path = /obj/item/clothing/under/rank/security/blackwatch
- restricted_roles = list("Security Officer", "Warden", "Head of Security","Security Medic","Security Sergeant")
+ restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY,JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT)
/datum/loadout_item/under/jumpsuit/para_red
name = "Red Paramedic Jumpsuit"
item_path = /obj/item/clothing/under/utility/para_red
- restricted_roles = list("Chief Medical Officer", "Paramedic", "Security Medic")
+ restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_PARAMEDIC, JOB_SECURITY_MEDIC)
/datum/loadout_item/under/jumpsuit/utility
name = "Utility Uniform"
@@ -148,37 +148,37 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/jumpsuit/utility_eng
name = "Engineering Utility Uniform"
item_path = /obj/item/clothing/under/utility/eng
- restricted_roles = list("Station Engineer","Atmospheric Technician", "Chief Engineer")
+ restricted_roles = list(JOB_STATION_ENGINEER,JOB_ATMOSPHERIC_TECHNICIAN, JOB_CHIEF_ENGINEER)
/datum/loadout_item/under/jumpsuit/utility_med
name = "Medical Utility Uniform"
item_path = /obj/item/clothing/under/utility/med
- restricted_roles = list("Medical Doctor", "Paramedic", "Chemist", "Virologist", "Geneticist", "Security Medic", "Chief Medical Officer", "Psychologist")
+ restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_GENETICIST, JOB_SECURITY_MEDIC, JOB_CHIEF_MEDICAL_OFFICER, JOB_PSYCHOLOGIST)
/datum/loadout_item/under/jumpsuit/utility_sci
name = "Science Utility Uniform"
item_path = /obj/item/clothing/under/utility/sci
- restricted_roles = list("Scientist", "Roboticist", "Geneticist", "Research Director", "Vanguard Operative")
+ restricted_roles = list(JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_VANGUARD_OPERATIVE)
/datum/loadout_item/under/jumpsuit/hlscientist
name = "Ridiculous Scientist Outfit"
item_path = /obj/item/clothing/under/misc/hlscience
- restricted_roles = list("Scientist", "Roboticist", "Geneticist", "Research Director", "Vanguard Operative")
+ restricted_roles = list(JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_VANGUARD_OPERATIVE)
/datum/loadout_item/under/jumpsuit/utility_cargo
name = "Supply Utility Uniform"
item_path = /obj/item/clothing/under/utility/cargo
- restricted_roles = list("Cargo Technician", "Miner", "Quartermaster")
+ restricted_roles = list(JOB_CARGO_TECHNICIAN, "Miner", JOB_QUARTERMASTER)
/datum/loadout_item/under/jumpsuit/utility_sec
name = "Security Utility Uniform"
item_path = /obj/item/clothing/under/utility/sec
- restricted_roles = list("Security Officer", "Detective", "Warden", "Blueshield", "Security Medic","Security Sergeant", "Head of Security", "Civil Disputes Officer", "Corrections Officer") //i dunno about the blueshield, they're a weird combo of sec and command, thats why they arent in the loadout pr im making
+ restricted_roles = list(JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_WARDEN, JOB_BLUESHIELD, JOB_SECURITY_MEDIC,JOB_SECURITY_SERGEANT, JOB_HEAD_OF_SECURITY, JOB_CIVIL_DISPUTES_OFFICER, JOB_CORRECTIONS_OFFICER) //i dunno about the blueshield, they're a weird combo of sec and command, thats why they arent in the loadout pr im making
/datum/loadout_item/under/jumpsuit/utility_com
name = "Command Utility Uniform"
item_path = /obj/item/clothing/under/utility/com
- restricted_roles = list("Captain", "Head of Personnel", "Blueshield", "Head of Security", "Research Director", "Quartermaster", "Chief Medical Officer", "Chief Engineer")
+ restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER)
/datum/loadout_item/under/jumpsuit/polysweater
name = "Polychromic Sweater"
@@ -402,7 +402,7 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/miscellaneous/tactical_skirt
name = "Tactitool Skirtleneck"
item_path = /obj/item/clothing/under/syndicate/tacticool/skirt/sensors
-
+
/datum/loadout_item/under/miscellaneous/cream_sweater
name = "cream sweater"
item_path = /obj/item/clothing/under/sweater
@@ -434,37 +434,37 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/miscellaneous/blacknwhite
name = "Classic Prisoner Jumpsuit"
item_path = /obj/item/clothing/under/rank/prisoner/classic
- restricted_roles = list("Prisoner")
+ restricted_roles = list(JOB_PRISONER)
/datum/loadout_item/under/miscellaneous/medrscrubs
name = "Red Scrubs (security)"
item_path = /obj/item/clothing/under/rank/medical/doctor/red
- restricted_roles = list("Security Medic")
+ restricted_roles = list(JOB_SECURITY_MEDIC)
/datum/loadout_item/under/miscellaneous/redscrubs
name = "Red Scrubs"
item_path = /obj/item/clothing/under/rank/medical/doctor/red/unarm
- restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist", "Security Medic", "Paramedic")
+ restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_SECURITY_MEDIC, JOB_PARAMEDIC)
/datum/loadout_item/under/miscellaneous/bluescrubs
name = "Blue Scrubs"
item_path = /obj/item/clothing/under/rank/medical/doctor/blue
- restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist", "Security Medic", "Paramedic")
+ restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_SECURITY_MEDIC, JOB_PARAMEDIC)
/datum/loadout_item/under/miscellaneous/greenscrubs
name = "Green Scrubs"
item_path = /obj/item/clothing/under/rank/medical/doctor/green
- restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist", "Security Medic", "Paramedic")
+ restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_SECURITY_MEDIC, JOB_PARAMEDIC)
/datum/loadout_item/under/miscellaneous/purplescrubs
name = "Purple Scrubs"
item_path = /obj/item/clothing/under/rank/medical/doctor/purple
- restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist", "Security Medic", "Paramedic")
+ restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_SECURITY_MEDIC, JOB_PARAMEDIC)
/datum/loadout_item/under/miscellaneous/whitescrubs
name = "White Scrubs"
item_path = /obj/item/clothing/under/rank/medical/doctor/white
- restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist", "Security Medic", "Paramedic")
+ restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_SECURITY_MEDIC, JOB_PARAMEDIC)
/datum/loadout_item/under/miscellaneous/swept_skirt
name = "Swept Skirt"
@@ -513,12 +513,12 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/miscellaneous/cargo_casual
name = "Cargo Tech Casual Wear"
item_path = /obj/item/clothing/under/rank/cargo/casualman
- restricted_roles = list("Cargo Technician")
+ restricted_roles = list(JOB_CARGO_TECHNICIAN)
/datum/loadout_item/under/miscellaneous/cargo_casual
name = "black cargo uniform"
item_path = /obj/item/clothing/under/misc/evilcargo
- restricted_roles = list("Cargo Technician")
+ restricted_roles = list(JOB_CARGO_TECHNICIAN)
/datum/loadout_item/under/miscellaneous/eve
name = "collection of leaves"
@@ -766,7 +766,7 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/formal/formalmed
name = "Formal Medical Suit"
item_path = /obj/item/clothing/under/rank/medical/doctor/formal
- restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist", "Security Medic", "Paramedic", "Psychologist")
+ restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_SECURITY_MEDIC, JOB_PARAMEDIC, JOB_PSYCHOLOGIST)
/datum/loadout_item/under/formal/kimono
name = "Kimono"
diff --git a/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_representative.dm b/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_representative.dm
index 5e1939a1c78..4f8cf762bef 100644
--- a/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_representative.dm
+++ b/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_representative.dm
@@ -1,7 +1,7 @@
/datum/job/nanotrasen_representative
- title = "Nanotrasen Representative"
+ title = JOB_NT_REP
description = "Represent Nanotrasen on the station, argue with the HoS about why he can't just field execute people for petty theft, get drunk in your office."
- department_head = list("Central Command")
+ department_head = list(JOB_CENTCOM)
faction = FACTION_STATION
total_positions = 1
spawn_positions = 1
@@ -94,7 +94,7 @@
/obj/effect/landmark/start/nanotrasen_representative
name = "Nanotrasen Representative"
- icon_state = "Captain"
+ icon_state = JOB_CAPTAIN
/obj/item/clothing/accessory/medal/gold/nanotrasen_representative
name = "medal of diplomacy"
diff --git a/modular_skyrat/modules/oneclickantag/code/oneclickantag.dm b/modular_skyrat/modules/oneclickantag/code/oneclickantag.dm
index 5f23cf8ffa8..5216c6debc8 100644
--- a/modular_skyrat/modules/oneclickantag/code/oneclickantag.dm
+++ b/modular_skyrat/modules/oneclickantag/code/oneclickantag.dm
@@ -88,9 +88,9 @@ If anyone can figure out how to get Obsessed to work I would be very appreciativ
/datum/admins/
var/MAKEANTAG_RESTRICTLIST = list()
- var/MAKEANTAG_PL_DEFAULT_SECURITY = list("Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Corrections Officer", "Civil Disputes Officer", "Security Medic", "Security Sergeant", "Blueshield", "Orderly", "Bouncer", "Customs Agent", "Engineering Guard", "Science Guard")
- var/MAKEANTAG_PL_DEFAULT_HEADS = list("Captain","Head of Personnel","Research Director","Chief Engineer","Chief Medical Officer","Head of Security","Quartermaster")
- var/MAKEANTAG_PL_DEFAULT_SILICON = list("AI", "Cyborg")
+ var/MAKEANTAG_PL_DEFAULT_SECURITY = list(JOB_PRISONER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_HEAD_OF_SECURITY, JOB_CAPTAIN, JOB_CORRECTIONS_OFFICER, JOB_CIVIL_DISPUTES_OFFICER, JOB_SECURITY_MEDIC, JOB_SECURITY_SERGEANT, JOB_BLUESHIELD, JOB_ORDERLY, JOB_BOUNCER, JOB_CUSTOMS_AGENT, JOB_ENGINEERING_GUARD, JOB_SCIENCE_GUARD)
+ var/MAKEANTAG_PL_DEFAULT_HEADS = list(JOB_CAPTAIN,JOB_HEAD_OF_PERSONNEL,JOB_RESEARCH_DIRECTOR,JOB_CHIEF_ENGINEER,JOB_CHIEF_MEDICAL_OFFICER,JOB_HEAD_OF_SECURITY,JOB_QUARTERMASTER)
+ var/MAKEANTAG_PL_DEFAULT_SILICON = list(JOB_AI, JOB_CYBORG)
/datum/admins/proc/antag_get_protected_roles(antagtype)
if(MAKEANTAG_RESTRICTLIST[antagtype])
@@ -110,7 +110,7 @@ If anyone can figure out how to get Obsessed to work I would be very appreciativ
p_p += MAKEANTAG_PL_DEFAULT_SECURITY
p_p += MAKEANTAG_PL_DEFAULT_HEADS
p_p += MAKEANTAG_PL_DEFAULT_SILICON
- p_p += list("Chaplain", "Head of Personnel")
+ p_p += list(JOB_CHAPLAIN, JOB_HEAD_OF_PERSONNEL)
if(ROLE_HERETIC)
p_p += MAKEANTAG_PL_DEFAULT_SECURITY
p_p += MAKEANTAG_PL_DEFAULT_HEADS
@@ -119,17 +119,17 @@ If anyone can figure out how to get Obsessed to work I would be very appreciativ
p_r += MAKEANTAG_PL_DEFAULT_SECURITY
p_p += MAKEANTAG_PL_DEFAULT_HEADS
p_r += MAKEANTAG_PL_DEFAULT_SILICON
- p_r += list("Head of Personnel")
+ p_r += list(JOB_HEAD_OF_PERSONNEL)
if(ROLE_MONKEY)
p_r += MAKEANTAG_PL_DEFAULT_SILICON
p_p += MAKEANTAG_PL_DEFAULT_HEADS
- p_r += list("Prisoner")
+ p_r += list(JOB_PRISONER)
if(ROLE_REV)
p_r += MAKEANTAG_PL_DEFAULT_SECURITY
p_r += MAKEANTAG_PL_DEFAULT_HEADS
p_r += MAKEANTAG_PL_DEFAULT_SILICON
if(c_a)
- p_r += list("Assistant")
+ p_r += list(JOB_ASSISTANT)
if(c_p)
p_r += p_p
MAKEANTAG_RESTRICTLIST[antagtype] = p_r
diff --git a/modular_skyrat/modules/poly_commands/parrot.dm b/modular_skyrat/modules/poly_commands/parrot.dm
index 39a0f7f76d6..f573a120ab3 100644
--- a/modular_skyrat/modules/poly_commands/parrot.dm
+++ b/modular_skyrat/modules/poly_commands/parrot.dm
@@ -41,7 +41,7 @@
var/mob/living/carbon/human/human_target = speaker
if(!istype(human_target))
return FALSE
- if(!(human_target.mind?.assigned_role.title == "Chief Engineer"))
+ if(!(human_target.mind?.assigned_role.title == JOB_CHIEF_ENGINEER))
return FALSE
if(!(findtext(message, "poly")))
return FALSE
diff --git a/modular_skyrat/modules/salon/code/barber.dm b/modular_skyrat/modules/salon/code/barber.dm
index 35cd31c4a96..03d4764f505 100644
--- a/modular_skyrat/modules/salon/code/barber.dm
+++ b/modular_skyrat/modules/salon/code/barber.dm
@@ -1,7 +1,7 @@
/datum/job/barber
- title = "Barber"
+ title = JOB_BARBER
description = "Run your salon and meet the crews sanitary needs, such as hair cutting, massaging and more!"
- department_head = list("Head of Personnel")
+ department_head = list(JOB_HEAD_OF_PERSONNEL)
faction = FACTION_STATION
total_positions = 2
spawn_positions = 2
diff --git a/modular_skyrat/modules/sec_haul/code/security_medic/security_medic.dm b/modular_skyrat/modules/sec_haul/code/security_medic/security_medic.dm
index eb025424f7f..608a6bb178d 100644
--- a/modular_skyrat/modules/sec_haul/code/security_medic/security_medic.dm
+++ b/modular_skyrat/modules/sec_haul/code/security_medic/security_medic.dm
@@ -1,8 +1,8 @@
/datum/job/security_medic
- title = "Security Medic"
+ title = JOB_SECURITY_MEDIC
description = "Patch up officers and prisoners, realize you don't have the tools to Tend Wounds, barge into Medbay and tell them how to do their jobs"
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
- department_head = list("Head of Security")
+ department_head = list(JOB_HEAD_OF_SECURITY)
faction = FACTION_STATION
total_positions = 1
spawn_positions = 1
diff --git a/modular_skyrat/modules/sec_haul/code/security_sergeant/security_sergeant.dm b/modular_skyrat/modules/sec_haul/code/security_sergeant/security_sergeant.dm
index f3fdf735244..e999b40d84a 100644
--- a/modular_skyrat/modules/sec_haul/code/security_sergeant/security_sergeant.dm
+++ b/modular_skyrat/modules/sec_haul/code/security_sergeant/security_sergeant.dm
@@ -1,8 +1,8 @@
/datum/job/security_sergeant
- title = "Security Sergeant"
+ title = JOB_SECURITY_SERGEANT
description = "Instruct officers on what to do, demand they drop and give you twenty, cry as they refuse your authority over them."
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
- department_head = list("Head of Security")
+ department_head = list(JOB_HEAD_OF_SECURITY)
faction = FACTION_STATION
total_positions = 2
spawn_positions = 2