diff --git a/code/__DEFINES/dcs/signals/signals_global_object.dm b/code/__DEFINES/dcs/signals/signals_global_object.dm
index d100f47a3c9..bed06ff176c 100644
--- a/code/__DEFINES/dcs/signals/signals_global_object.dm
+++ b/code/__DEFINES/dcs/signals/signals_global_object.dm
@@ -1,9 +1,9 @@
/// signals from globally accessible objects
-///from SSJob whenever setup_occupations() is called, all occupations are set
+///from SSJob whenever SetupOccupations() is called, all occupations are set
#define COMSIG_OCCUPATIONS_SETUP "occupations_setup"
-///from SSJob when divide_occupations() is called
+///from SSJob when DivideOccupations is called
#define COMSIG_OCCUPATIONS_DIVIDED "occupations_divided"
///from SSsun when the sun changes position : (azimuth)
diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm
index bcd02cbcfe4..2a936bbbbd9 100644
--- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm
+++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm
@@ -118,7 +118,7 @@
///Applied preferences to a human
#define COMSIG_HUMAN_PREFS_APPLIED "human_prefs_applied"
-///Whenever equip_rank is called, called after job is set
+///Whenever EquipRanked is called, called after job is set
#define COMSIG_JOB_RECEIVED "job_received"
///from /mob/living/carbon/human/proc/set_coretemperature(): (oldvalue, newvalue)
#define COMSIG_HUMAN_CORETEMP_CHANGE "human_coretemp_change"
diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm
index c6e8d2d6929..2c3b151855c 100644
--- a/code/__DEFINES/jobs.dm
+++ b/code/__DEFINES/jobs.dm
@@ -203,7 +203,7 @@ DEFINE_BITFIELD(departments_bitflags, list(
#define JOB_ANNOUNCE_ARRIVAL (1<<0)
/// Whether the mob is added to the crew manifest.
#define JOB_CREW_MANIFEST (1<<1)
-/// Whether the mob is equipped through SSjob.equip_rank() on spawn.
+/// Whether the mob is equipped through SSjob.EquipRank() on spawn.
#define JOB_EQUIP_RANK (1<<2)
/// Whether the job is considered a regular crew member of the station. Equipment such as AI and cyborgs not included.
#define JOB_CREW_MEMBER (1<<3)
diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm
index 5fb9d9447bb..d6b62da97d4 100644
--- a/code/__DEFINES/preferences.dm
+++ b/code/__DEFINES/preferences.dm
@@ -80,7 +80,6 @@
//Job preferences levels
-#define JP_ANY 0
#define JP_LOW 1
#define JP_MEDIUM 2
#define JP_HIGH 3
diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm
index c68b450c2c2..ce48e593980 100644
--- a/code/__HELPERS/game.dm
+++ b/code/__HELPERS/game.dm
@@ -181,7 +181,7 @@
//First we spawn a dude.
var/mob/living/carbon/human/new_character = new//The mob being spawned.
- SSjob.send_to_late_join(new_character)
+ SSjob.SendToLateJoin(new_character)
ghost_player.client.prefs.safe_transfer_prefs_to(new_character)
new_character.dna.update_dna_identity()
diff --git a/code/controllers/subsystem/dynamic/dynamic.dm b/code/controllers/subsystem/dynamic/dynamic.dm
index 0a56abc3d21..66a06c230c6 100644
--- a/code/controllers/subsystem/dynamic/dynamic.dm
+++ b/code/controllers/subsystem/dynamic/dynamic.dm
@@ -526,7 +526,7 @@ SUBSYSTEM_DEF(dynamic)
//To new_player and such, and we want the datums to just free when the roundstart work is done
var/list/roundstart_rules = init_rulesets(/datum/dynamic_ruleset/roundstart)
- SSjob.divide_occupations(pure = TRUE, allow_all = TRUE)
+ SSjob.DivideOccupations(pure = TRUE, allow_all = TRUE)
for(var/i in GLOB.new_player_list)
var/mob/dead/new_player/player = i
if(player.ready == PLAYER_READY_TO_PLAY && player.mind && player.check_preferences())
@@ -541,7 +541,7 @@ SUBSYSTEM_DEF(dynamic)
else
roundstart_pop_ready++
candidates.Add(player)
- SSjob.reset_occupations()
+ SSjob.ResetOccupations()
log_dynamic("Listing [roundstart_rules.len] round start rulesets, and [candidates.len] players ready.")
if (candidates.len <= 0)
log_dynamic("[candidates.len] candidates.")
@@ -1018,7 +1018,7 @@ SUBSYSTEM_DEF(dynamic)
var/list/reopened_jobs = list()
for(var/mob/living/quitter in GLOB.suicided_mob_list)
- var/datum/job/job = SSjob.get_job(quitter.job)
+ var/datum/job/job = SSjob.GetJob(quitter.job)
if(!job || !(job.job_flags & JOB_REOPEN_ON_ROUNDSTART_LOSS))
continue
if(!include_command && job.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND)
diff --git a/code/controllers/subsystem/dynamic/dynamic_rulesets.dm b/code/controllers/subsystem/dynamic/dynamic_rulesets.dm
index 0d3242a4d17..c77cce50d01 100644
--- a/code/controllers/subsystem/dynamic/dynamic_rulesets.dm
+++ b/code/controllers/subsystem/dynamic/dynamic_rulesets.dm
@@ -283,7 +283,7 @@
if(length(exclusive_roles))
var/exclusive_candidate = FALSE
for(var/role in exclusive_roles)
- var/datum/job/job = SSjob.get_job(role)
+ var/datum/job/job = SSjob.GetJob(role)
if((role in candidate_client.prefs.job_preferences) && SSjob.check_job_eligibility(candidate_player, job, "Dynamic Roundstart TC", add_job_to_log = TRUE) == JOB_AVAILABLE)
exclusive_candidate = TRUE
diff --git a/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm b/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm
index efe857b936d..3476702e741 100644
--- a/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm
+++ b/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm
@@ -413,7 +413,7 @@
return ..()
/datum/dynamic_ruleset/midround/from_ghosts/nuclear/finish_setup(mob/new_character, index)
- new_character.mind.set_assigned_role(SSjob.get_job_type(/datum/job/nuclear_operative))
+ new_character.mind.set_assigned_role(SSjob.GetJobType(/datum/job/nuclear_operative))
new_character.mind.special_role = ROLE_NUCLEAR_OPERATIVE
if(index == 1)
var/datum/antagonist/nukeop/leader/leader_antag_datum = new()
@@ -572,7 +572,7 @@
var/mob/living/carbon/human/new_nightmare = new (find_maintenance_spawn(atmos_sensitive = TRUE, require_darkness = TRUE))
player_mind.transfer_to(new_nightmare)
- player_mind.set_assigned_role(SSjob.get_job_type(/datum/job/nightmare))
+ player_mind.set_assigned_role(SSjob.GetJobType(/datum/job/nightmare))
player_mind.special_role = ROLE_NIGHTMARE
player_mind.add_antag_datum(/datum/antagonist/nightmare)
new_nightmare.set_species(/datum/species/shadow/nightmare)
@@ -991,7 +991,7 @@
var/mob/living/carbon/human/voidwalker = new (space_turf)
player_mind.transfer_to(voidwalker)
- player_mind.set_assigned_role(SSjob.get_job_type(/datum/job/voidwalker))
+ player_mind.set_assigned_role(SSjob.GetJobType(/datum/job/voidwalker))
player_mind.special_role = antag_flag
player_mind.add_antag_datum(antag_datum)
diff --git a/code/controllers/subsystem/dynamic/dynamic_rulesets_roundstart.dm b/code/controllers/subsystem/dynamic/dynamic_rulesets_roundstart.dm
index 79eedc0adb8..999cd156b18 100644
--- a/code/controllers/subsystem/dynamic/dynamic_rulesets_roundstart.dm
+++ b/code/controllers/subsystem/dynamic/dynamic_rulesets_roundstart.dm
@@ -63,7 +63,7 @@ GLOBAL_VAR_INIT(revolutionary_win, FALSE)
flags = HIGH_IMPACT_RULESET
/datum/dynamic_ruleset/roundstart/malf_ai/ready(forced)
- var/datum/job/ai_job = SSjob.get_job_type(/datum/job/ai)
+ var/datum/job/ai_job = SSjob.GetJobType(/datum/job/ai)
// If we're not forced, we're going to make sure we can actually have an AI in this shift,
if(!forced && min(ai_job.total_positions - ai_job.current_positions, ai_job.spawn_positions) <= 0)
@@ -75,7 +75,7 @@ GLOBAL_VAR_INIT(revolutionary_win, FALSE)
/datum/dynamic_ruleset/roundstart/malf_ai/pre_execute(population)
. = ..()
- var/datum/job/ai_job = SSjob.get_job_type(/datum/job/ai)
+ var/datum/job/ai_job = SSjob.GetJobType(/datum/job/ai)
// Maybe a bit too pedantic, but there should never be more malf AIs than there are available positions, spawn positions or antag cap allocations.
var/num_malf = min(get_antag_cap(population), min(ai_job.total_positions - ai_job.current_positions, ai_job.spawn_positions))
for (var/i in 1 to num_malf)
@@ -296,7 +296,7 @@ GLOBAL_VAR_INIT(revolutionary_win, FALSE)
var/mob/M = pick_n_take(candidates)
if (M)
assigned += M.mind
- M.mind.set_assigned_role(SSjob.get_job_type(/datum/job/space_wizard))
+ M.mind.set_assigned_role(SSjob.GetJobType(/datum/job/space_wizard))
M.mind.special_role = ROLE_WIZARD
return TRUE
@@ -429,7 +429,7 @@ GLOBAL_VAR_INIT(revolutionary_win, FALSE)
break
var/mob/M = pick_n_take(candidates)
assigned += M.mind
- M.mind.set_assigned_role(SSjob.get_job_type(job_type))
+ M.mind.set_assigned_role(SSjob.GetJobType(job_type))
M.mind.special_role = required_role
return TRUE
diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm
index 47d51f3ccf7..b1629237dc6 100644
--- a/code/controllers/subsystem/job.dm
+++ b/code/controllers/subsystem/job.dm
@@ -22,7 +22,7 @@ SUBSYSTEM_DEF(job)
var/list/unassigned = list() //Players who need jobs
var/initial_players_to_assign = 0 //used for checking against population caps
- // Whether to run divide_occupations pure so that there are no side-effects from calling it other than
+ // Whether to run DivideOccupations pure so that there are no side-effects from calling it other than
// a player's assigned_role being set to some value.
var/run_divide_occupation_pure = FALSE
@@ -31,7 +31,7 @@ SUBSYSTEM_DEF(job)
var/overflow_role = /datum/job/assistant
- var/list/level_order = list(JP_HIGH, JP_MEDIUM, JP_LOW)
+ var/list/level_order = list(JP_HIGH,JP_MEDIUM,JP_LOW)
/// Lazylist of mob:occupation_string pairs.
var/list/dynamic_forced_occupations
@@ -88,7 +88,7 @@ SUBSYSTEM_DEF(job)
setup_job_lists()
job_config_datum_singletons = generate_config_singletons() // we set this up here regardless in case someone wants to use the verb to generate the config file.
if(!length(all_occupations))
- setup_occupations()
+ SetupOccupations()
if(CONFIG_GET(flag/load_jobs_from_txt))
load_jobs_from_config()
set_overflow_role(CONFIG_GET(string/overflow_job)) // this must always go after load_jobs_from_config() due to how the legacy systems operate, this always takes precedent.
@@ -108,9 +108,9 @@ SUBSYSTEM_DEF(job)
return overflow_jobs
/datum/controller/subsystem/job/proc/set_overflow_role(new_overflow_role)
- var/datum/job/new_overflow = ispath(new_overflow_role) ? get_job_type(new_overflow_role) : get_job(new_overflow_role)
+ var/datum/job/new_overflow = ispath(new_overflow_role) ? GetJobType(new_overflow_role) : GetJob(new_overflow_role)
if(!new_overflow)
- job_debug("SET_OVRFLW: Failed to set new overflow role: [new_overflow_role]")
+ JobDebug("Failed to set new overflow role: [new_overflow_role]")
CRASH("set_overflow_role failed | new_overflow_role: [isnull(new_overflow_role) ? "null" : new_overflow_role]")
var/cap = CONFIG_GET(number/overflow_cap)
@@ -121,16 +121,17 @@ SUBSYSTEM_DEF(job)
if(new_overflow.type == overflow_role)
return
- var/datum/job/old_overflow = get_job_type(overflow_role)
+ var/datum/job/old_overflow = GetJobType(overflow_role)
old_overflow.allow_bureaucratic_error = initial(old_overflow.allow_bureaucratic_error)
old_overflow.spawn_positions = initial(old_overflow.spawn_positions)
old_overflow.total_positions = initial(old_overflow.total_positions)
if(!(initial(old_overflow.job_flags) & JOB_CANNOT_OPEN_SLOTS))
old_overflow.job_flags &= ~JOB_CANNOT_OPEN_SLOTS
overflow_role = new_overflow.type
- job_debug("SET_OVRFLW: Overflow role set to: [new_overflow.type]")
+ JobDebug("Overflow role set to : [new_overflow.type]")
-/datum/controller/subsystem/job/proc/setup_occupations()
+
+/datum/controller/subsystem/job/proc/SetupOccupations()
name_occupations = list()
type_occupations = list()
@@ -204,20 +205,20 @@ SUBSYSTEM_DEF(job)
return TRUE
-/datum/controller/subsystem/job/proc/get_job(rank)
+/datum/controller/subsystem/job/proc/GetJob(rank)
if(!length(all_occupations))
- setup_occupations()
+ SetupOccupations()
return name_occupations[rank]
-/datum/controller/subsystem/job/proc/get_job_type(jobtype)
+/datum/controller/subsystem/job/proc/GetJobType(jobtype)
RETURN_TYPE(/datum/job)
if(!length(all_occupations))
- setup_occupations()
+ SetupOccupations()
return type_occupations[jobtype]
/datum/controller/subsystem/job/proc/get_department_type(department_type)
if(!length(all_occupations))
- setup_occupations()
+ SetupOccupations()
return joinable_departments_by_type[department_type]
/**
@@ -229,92 +230,89 @@ SUBSYSTEM_DEF(job)
* * latejoin - Set to TRUE if this is a latejoin role assignment.
* * do_eligibility_checks - Set to TRUE to conduct all job eligibility tests and reject on failure. Set to FALSE if job eligibility has been tested elsewhere and they can be safely skipped.
*/
-/datum/controller/subsystem/job/proc/assign_role(mob/dead/new_player/player, datum/job/job, latejoin = FALSE, do_eligibility_checks = TRUE)
- job_debug("AR: Running, Player: [player], Job: [isnull(job) ? "null" : job], LateJoin: [latejoin]")
+/datum/controller/subsystem/job/proc/AssignRole(mob/dead/new_player/player, datum/job/job, latejoin = FALSE, do_eligibility_checks = TRUE)
+ JobDebug("Running AR, Player: [player], Job: [isnull(job) ? "null" : job], LateJoin: [latejoin]")
if(!player?.mind || !job)
- job_debug("AR: Failed, player has no mind or job is null. Player: [player], Rank: [isnull(job) ? "null" : job.type]")
+ JobDebug("AR has failed, player has no mind or job is null, Player: [player], Rank: [isnull(job) ? "null" : job.type]")
return FALSE
if(do_eligibility_checks && (check_job_eligibility(player, job, "AR", add_job_to_log = TRUE) != JOB_AVAILABLE))
return FALSE
- job_debug("AR: Role now set and assigned - [player] is [job.title], JCP:[job.current_positions], JPL:[latejoin ? job.total_positions : job.spawn_positions]")
+ JobDebug("Player: [player] is now Rank: [job.title], JCP:[job.current_positions], JPL:[latejoin ? job.total_positions : job.spawn_positions]")
player.mind.set_assigned_role(job)
unassigned -= player
job.current_positions++
return TRUE
-/datum/controller/subsystem/job/proc/find_occupation_candidates(datum/job/job, level = 0)
- job_debug("FOC: Now running, Job: [job], Level: [job_priority_level_to_string(level)]")
+/datum/controller/subsystem/job/proc/FindOccupationCandidates(datum/job/job, level)
+ JobDebug("Running FOC, Job: [job], Level: [job_priority_level_to_string(level)]")
var/list/candidates = list()
for(var/mob/dead/new_player/player in unassigned)
if(!player)
- job_debug("FOC: Player no longer exists.")
+ JobDebug("FOC player no longer exists.")
continue
-
if(!player.client)
- job_debug("FOC: Player client no longer exists, Player: [player]")
+ JobDebug("FOC player client no longer exists, Player: [player]")
continue
-
// Initial screening check. Does the player even have the job enabled, if they do - Is it at the correct priority level?
var/player_job_level = player.client?.prefs.job_preferences[job.title]
if(isnull(player_job_level))
- job_debug("FOC: Player job not enabled, Player: [player]")
+ JobDebug("FOC player job not enabled, Player: [player]")
+ continue
+ else if(player_job_level != level)
+ JobDebug("FOC player job enabled at wrong level, Player: [player], TheirLevel: [job_priority_level_to_string(player_job_level)], ReqLevel: [job_priority_level_to_string(level)]")
continue
- if(level && (player_job_level != level))
- job_debug("FOC: Player job enabled at wrong level, Player: [player], TheirLevel: [job_priority_level_to_string(player_job_level)], ReqLevel: [job_priority_level_to_string(level)]")
- continue
-
- // This check handles its own output to job_debug.
+ // This check handles its own output to JobDebug.
if(check_job_eligibility(player, job, "FOC", add_job_to_log = FALSE) != JOB_AVAILABLE)
continue
// They have the job enabled, at this priority level, with no restrictions applying to them.
- job_debug("FOC: Player eligible, Player: [player], Level: [job_priority_level_to_string(level)]")
+ JobDebug("FOC pass, Player: [player], Level: [job_priority_level_to_string(level)]")
candidates += player
return candidates
-/datum/controller/subsystem/job/proc/give_random_job(mob/dead/new_player/player)
- job_debug("GRJ: Giving random job, Player: [player]")
+/datum/controller/subsystem/job/proc/GiveRandomJob(mob/dead/new_player/player)
+ JobDebug("GRJ Giving random job, Player: [player]")
. = FALSE
for(var/datum/job/job as anything in shuffle(joinable_occupations))
if(QDELETED(player))
- job_debug("GRJ: Player is deleted, aborting")
+ JobDebug("GRJ player is deleted, aborting")
break
if((job.current_positions >= job.spawn_positions) && job.spawn_positions != -1)
- job_debug("GRJ: Job lacks spawn positions to be eligible, Player: [player], Job: [job]")
+ JobDebug("GRJ job lacks spawn positions to be eligible, Player: [player], Job: [job]")
continue
- if(istype(job, get_job_type(overflow_role))) // We don't want to give him assistant, that's boring!
- job_debug("GRJ: Skipping overflow role, Player: [player], Job: [job]")
+ if(istype(job, GetJobType(overflow_role))) // We don't want to give him assistant, that's boring!
+ JobDebug("GRJ skipping overflow role, Player: [player], Job: [job]")
continue
if(job.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) //If you want a command position, select it!
- job_debug("GRJ: Skipping command role, Player: [player], Job: [job]")
+ JobDebug("GRJ skipping command role, Player: [player], Job: [job]")
continue
- // This check handles its own output to job_debug.
+ // This check handles its own output to JobDebug.
if(check_job_eligibility(player, job, "GRJ", add_job_to_log = TRUE) != JOB_AVAILABLE)
continue
- if(assign_role(player, job, do_eligibility_checks = FALSE))
- job_debug("GRJ: Random job given, Player: [player], Job: [job]")
+ if(AssignRole(player, job, do_eligibility_checks = FALSE))
+ JobDebug("GRJ Random job given, Player: [player], Job: [job]")
return TRUE
- job_debug("GRJ: Player eligible but assign_role failed, Player: [player], Job: [job]")
+ JobDebug("GRJ Player eligible but AssignRole failed, Player: [player], Job: [job]")
-/datum/controller/subsystem/job/proc/reset_occupations()
- job_debug("RO: Occupations reset.")
+/datum/controller/subsystem/job/proc/ResetOccupations()
+ JobDebug("Occupations reset.")
for(var/mob/dead/new_player/player as anything in GLOB.new_player_list)
if(!player?.mind)
continue
- player.mind.set_assigned_role(get_job_type(/datum/job/unassigned))
+ player.mind.set_assigned_role(GetJobType(/datum/job/unassigned))
player.mind.special_role = null
- setup_occupations()
+ SetupOccupations()
unassigned = list()
if(CONFIG_GET(flag/load_jobs_from_txt))
// Any errors with the configs has already been said, we don't need to repeat them here.
@@ -323,11 +321,12 @@ SUBSYSTEM_DEF(job)
return
-/*
- * Forces a random Head of Staff role to be assigned to a random eligible player.
- * Returns TRUE if a player was selected and assigned the role. FALSE otherwise.
+/**
+ * Will try to select a head, ignoring ALL non-head preferences for every level until.
+ *
+ * Basically tries to ensure there is at least one head in every shift if anyone has that job preference enabled at all.
*/
-/datum/controller/subsystem/job/proc/force_one_head_assignment()
+/datum/controller/subsystem/job/proc/FillHeadPosition()
var/datum/job_department/command_department = get_department_type(/datum/job_department/command)
if(!command_department)
return FALSE
@@ -335,65 +334,60 @@ SUBSYSTEM_DEF(job)
for(var/datum/job/job as anything in command_department.department_jobs)
if((job.current_positions >= job.total_positions) && job.total_positions != -1)
continue
- var/list/candidates = find_occupation_candidates(job, level)
+ var/list/candidates = FindOccupationCandidates(job, level)
if(!candidates.len)
continue
var/mob/dead/new_player/candidate = pick(candidates)
- // Eligibility checks done as part of find_occupation_candidates.
- if(assign_role(candidate, job, do_eligibility_checks = FALSE))
+ // Eligibility checks done as part of FindOccupationCandidates.
+ if(AssignRole(candidate, job, do_eligibility_checks = FALSE))
return TRUE
return FALSE
/**
* Attempts to fill out all possible head positions for players with that job at a a given job priority level.
- * Returns the number of Head positions assigned.
*
* Arguments:
- * * level - One of the JP_LOW, JP_MEDIUM, JP_HIGH or JP_ANY defines. Attempts to find candidates with head jobs at that priority only.
+ * * level - One of the JP_LOW, JP_MEDIUM or JP_HIGH defines. Attempts to find candidates with head jobs at this priority only.
*/
-/datum/controller/subsystem/job/proc/fill_all_head_positions_at_priority(level)
- . = 0
+/datum/controller/subsystem/job/proc/CheckHeadPositions(level)
var/datum/job_department/command_department = get_department_type(/datum/job_department/command)
-
if(!command_department)
- return .
-
+ return
for(var/datum/job/job as anything in command_department.department_jobs)
if((job.current_positions >= job.total_positions) && job.total_positions != -1)
continue
- var/list/candidates = find_occupation_candidates(job, level)
+ var/list/candidates = FindOccupationCandidates(job, level)
if(!candidates.len)
continue
var/mob/dead/new_player/candidate = pick(candidates)
- // Eligibility checks done as part of find_occupation_candidates
- if(assign_role(candidate, job, do_eligibility_checks = FALSE))
- .++
+ // Eligibility checks done as part of FindOccupationCandidates
+ AssignRole(candidate, job, do_eligibility_checks = FALSE)
/// Attempts to fill out all available AI positions.
/datum/controller/subsystem/job/proc/fill_ai_positions()
- var/datum/job/ai_job = get_job(JOB_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
for(var/i in ai_job.current_positions to ai_job.total_positions - 1)
for(var/level in level_order)
var/list/candidates = list()
- candidates = find_occupation_candidates(ai_job, level)
+ candidates = FindOccupationCandidates(ai_job, level)
if(candidates.len)
var/mob/dead/new_player/candidate = pick(candidates)
- // Eligibility checks done as part of find_occupation_candidates
- if(assign_role(candidate, get_job_type(/datum/job/ai), do_eligibility_checks = FALSE))
+ // Eligibility checks done as part of FindOccupationCandidates
+ if(AssignRole(candidate, GetJobType(/datum/job/ai), do_eligibility_checks = FALSE))
break
-/** Proc divide_occupations
+/** Proc DivideOccupations
* fills var "assigned_role" for all ready players.
* This proc must not have any side effect besides of modifying "assigned_role".
**/
-/datum/controller/subsystem/job/proc/divide_occupations(pure = FALSE, allow_all = FALSE)
+/datum/controller/subsystem/job/proc/DivideOccupations(pure = FALSE, allow_all = FALSE)
//Setup new player list and get the jobs list
- job_debug("DO: Running, allow_all = [allow_all], pure = [pure]")
+ JobDebug("Running DO, allow_all = [allow_all], pure = [pure]")
run_divide_occupation_pure = pure
SEND_SIGNAL(src, COMSIG_OCCUPATIONS_DIVIDED, pure, allow_all)
@@ -403,161 +397,162 @@ SUBSYSTEM_DEF(job)
if(player.ready == PLAYER_READY_TO_PLAY && player.check_preferences() && player.mind && is_unassigned_job(player.mind.assigned_role))
unassigned += player
- initial_players_to_assign = length(unassigned)
+ initial_players_to_assign = unassigned.len
- job_debug("DO: Player count to assign roles to: [initial_players_to_assign]")
+ JobDebug("DO, Len: [unassigned.len]")
//Scale number of open security officer slots to population
setup_officer_positions()
//Jobs will have fewer access permissions if the number of players exceeds the threshold defined in game_options.txt
- var/min_access_threshold = CONFIG_GET(number/minimal_access_threshold)
- if(min_access_threshold)
- if(min_access_threshold > initial_players_to_assign)
+ var/mat = CONFIG_GET(number/minimal_access_threshold)
+ if(mat)
+ if(mat > unassigned.len)
CONFIG_SET(flag/jobs_have_minimal_access, FALSE)
else
CONFIG_SET(flag/jobs_have_minimal_access, TRUE)
- //Shuffle player list.
- shuffle_inplace(unassigned)
+ //Shuffle players and jobs
+ unassigned = shuffle(unassigned)
- handle_feedback_gathering()
+ HandleFeedbackGathering()
- // Assign any priority positions before all other standard job selections.
- job_debug("DO: Assigning priority positions")
+ // Dynamic has picked a ruleset that requires enforcing some jobs before others.
+ JobDebug("DO, Assigning Priority Positions: [length(dynamic_forced_occupations)]")
assign_priority_positions()
- job_debug("DO: Priority assignment complete")
- // The overflow role has limitless slots, plus having the Overflow box ticked in prefs should (with one exception) set the priority to JP_HIGH.
- // So everyone with overflow enabled will get that job. Thus we can assign it immediately to all players that have it enabled.
- job_debug("DO: Assigning early overflow roles")
- assign_all_overflow_positions()
- job_debug("DO: Early overflow roles assigned.")
+ //People who wants to be the overflow role, sure, go on.
+ JobDebug("DO, Running Overflow Check 1")
+ var/datum/job/overflow_datum = GetJobType(overflow_role)
+ var/list/overflow_candidates = FindOccupationCandidates(overflow_datum, JP_LOW)
+ JobDebug("AC1, Candidates: [overflow_candidates.len]")
+ for(var/mob/dead/new_player/player in overflow_candidates)
+ JobDebug("AC1 pass, Player: [player]")
+ // Eligibility checks done as part of FindOccupationCandidates
+ AssignRole(player, GetJobType(overflow_role), do_eligibility_checks = FALSE)
+ overflow_candidates -= player
+ JobDebug("DO, AC1 end")
- // At this point we can assume the following:
- // From assign_priority_positions()
- // 1. If possible, any necessary job roles to allow Dynamic rulesets to execute (such as an AI for malf AI) are satisfied.
- // 2. All Head of Staff roles with any player pref set to JP_HIGH are filled out.
- // 3. If any player not selected by the above has any Head of Staff preference enabled at any JP_ level, there is at least one Head of Staff.
- //
- // From assign_all_overflow_positions()
- // 4. Anyone with the overflow role enabled has been given the overflow role.
+ //Select one head
+ JobDebug("DO, Running Head Check")
+ FillHeadPosition()
+ JobDebug("DO, Head Check end")
- // Shuffle the joinable occupation list and filter out ineligible occupations due to above job assignments.
- var/list/available_occupations = joinable_occupations.Copy()
- for(var/datum/job/job in available_occupations)
- // Make sure the job isn't filled. If it is, remove it from the list so it doesn't get checked.
- if((job.current_positions >= job.spawn_positions) && job.spawn_positions != -1)
- job_debug("DO: Job is now filled, Job: [job], Current: [job.current_positions], Limit: [job.spawn_positions]")
- available_occupations -= job
+ // Fill out any remaining AI positions.
+ JobDebug("DO, Running AI Check")
+ fill_ai_positions()
+ JobDebug("DO, AI Check end")
- job_debug("DO: Running standard job assignment")
+ //Other jobs are now checked
+ JobDebug("DO, Running standard job assignment")
+ // New job giving system by Donkie
+ // This will cause lots of more loops, but since it's only done once it shouldn't really matter much at all.
+ // Hopefully this will add more randomness and fairness to job giving.
+ // Loop through all levels from high to low
+ var/list/shuffledoccupations = shuffle(joinable_occupations)
for(var/level in level_order)
- job_debug("JOBS: Filling in head roles, Level: [job_priority_level_to_string(level)]")
- // Fill the head jobs first each level
- fill_all_head_positions_at_priority(level)
+ //Check the head jobs first each level
+ CheckHeadPositions(level)
// Loop through all unassigned players
for(var/mob/dead/new_player/player in unassigned)
if(!allow_all)
- if(popcap_reached())
- job_debug("JOBS: Popcap reached, trying to reject player: [player]")
- try_reject_player(player)
+ if(PopcapReached())
+ RejectPlayer(player)
- job_debug("JOBS: Finding a job for player: [player], at job priority pref: [job_priority_level_to_string(level)]")
+ // Loop through all jobs
+ for(var/datum/job/job in shuffledoccupations) // SHUFFLE ME BABY
+ if(!job)
+ JobDebug("FOC invalid/null job in occupations, Player: [player], Job: [job]")
+ shuffledoccupations -= job
+ continue
+
+ // Make sure the job isn't filled. If it is, remove it from the list so it doesn't get checked again.
+ if((job.current_positions >= job.spawn_positions) && job.spawn_positions != -1)
+ JobDebug("FOC job filled and not overflow, Player: [player], Job: [job], Current: [job.current_positions], Limit: [job.spawn_positions]")
+ shuffledoccupations -= job
+ continue
- // Loop through all jobs and build a list of jobs this player could be eligible for.
- var/list/possible_jobs = list()
- for(var/datum/job/job in available_occupations)
// Filter any job that doesn't fit the current level.
var/player_job_level = player.client?.prefs.job_preferences[job.title]
if(isnull(player_job_level))
- job_debug("JOBS: Job not enabled, Job: [job]")
+ JobDebug("FOC player job not enabled, Player: [player]")
continue
- if(player_job_level != level)
- job_debug("JOBS: Job enabled at different priority pref, TheirLevel: [job_priority_level_to_string(player_job_level)], ReqLevel: [job_priority_level_to_string(level)]")
+ else if(player_job_level != level)
+ JobDebug("FOC player job enabled but at different level, Player: [player], TheirLevel: [job_priority_level_to_string(player_job_level)], ReqLevel: [job_priority_level_to_string(level)]")
continue
- if(check_job_eligibility(player, job, "JOBS", add_job_to_log = TRUE) != JOB_AVAILABLE)
+ if(check_job_eligibility(player, job, "DO", add_job_to_log = TRUE) != JOB_AVAILABLE)
continue
- possible_jobs += job
+ JobDebug("DO pass, Player: [player], Level:[level], Job:[job.title]")
+ AssignRole(player, job, do_eligibility_checks = FALSE)
+ unassigned -= player
+ break
- // Pick one of those jobs at random.
- var/datum/job/picked_job = pick(possible_jobs)
+ JobDebug("DO, Ending standard job assignment")
- job_debug("JOBS: Now assigning role to player: [player], Job:[picked_job.title]")
- assign_role(player, picked_job, do_eligibility_checks = FALSE)
- if((picked_job.current_positions >= picked_job.spawn_positions) && picked_job.spawn_positions != -1)
- job_debug("JOBS: Job is now full, Job: [picked_job], Positions: [picked_job.current_positions], Limit: [picked_job.spawn_positions]")
- available_occupations -= picked_job
-
- job_debug("DO: Ending standard job assignment")
-
- job_debug("DO: Handle unassigned")
- // For any players that didn't get a job, fall back on their pref setting for what to do.
+ JobDebug("DO, Handle unassigned.")
+ // Hand out random jobs to the people who didn't get any in the last check
+ // Also makes sure that they got their preference correct
for(var/mob/dead/new_player/player in unassigned)
- handle_unassigned(player, allow_all)
- job_debug("DO: Ending handle unassigned")
+ HandleUnassigned(player, allow_all)
+ JobDebug("DO, Ending handle unassigned.")
- job_debug("DO: Handle unrejectable unassigned")
+ JobDebug("DO, Handle unrejectable unassigned")
//Mop up people who can't leave.
for(var/mob/dead/new_player/player in unassigned) //Players that wanted to back out but couldn't because they're antags (can you feel the edge case?)
- if(!give_random_job(player))
- if(!assign_role(player, get_job_type(overflow_role))) //If everything is already filled, make them an assistant
- job_debug("DO: Forced antagonist could not be assigned any random job or the overflow role. divide_occupations failed.")
- job_debug("---------------------------------------------------")
+ if(!GiveRandomJob(player))
+ if(!AssignRole(player, GetJobType(overflow_role))) //If everything is already filled, make them an assistant
+ JobDebug("DO, Forced antagonist could not be assigned any random job or the overflow role. DivideOccupations failed.")
+ JobDebug("---------------------------------------------------")
run_divide_occupation_pure = FALSE
return FALSE //Living on the edge, the forced antagonist couldn't be assigned to overflow role (bans, client age) - just reroll
- job_debug("DO: Ending handle unrejectable unassigned")
+ JobDebug("DO, Ending handle unrejectable unassigned")
- job_debug("All divide occupations tasks completed.")
- job_debug("---------------------------------------------------")
+ JobDebug("All divide occupations tasks completed.")
+ JobDebug("---------------------------------------------------")
run_divide_occupation_pure = FALSE
return TRUE
//We couldn't find a job from prefs for this guy.
-/datum/controller/subsystem/job/proc/handle_unassigned(mob/dead/new_player/player, allow_all = FALSE)
+/datum/controller/subsystem/job/proc/HandleUnassigned(mob/dead/new_player/player, allow_all = FALSE)
var/jobless_role = player.client.prefs.read_preference(/datum/preference/choiced/jobless_role)
if(!allow_all)
- if(popcap_reached())
- job_debug("HU: Popcap reached, trying to reject player: [player]")
- try_reject_player(player)
+ if(PopcapReached())
+ RejectPlayer(player)
return
switch (jobless_role)
if (BEOVERFLOW)
- var/datum/job/overflow_role_datum = get_job_type(overflow_role)
+ var/datum/job/overflow_role_datum = GetJobType(overflow_role)
if(check_job_eligibility(player, overflow_role_datum, debug_prefix = "HU", add_job_to_log = TRUE) != JOB_AVAILABLE)
- job_debug("HU: Player cannot be overflow, trying to reject: [player]")
- try_reject_player(player)
+ RejectPlayer(player)
return
- if(!assign_role(player, overflow_role_datum, do_eligibility_checks = FALSE))
- job_debug("HU: Player could not be assigned overflow role, trying to reject: [player]")
- try_reject_player(player)
+ if(!AssignRole(player, overflow_role_datum, do_eligibility_checks = FALSE))
+ RejectPlayer(player)
return
if (BERANDOMJOB)
- if(!give_random_job(player))
- job_debug("HU: Player cannot be given a random job, trying to reject: [player]")
- try_reject_player(player)
+ if(!GiveRandomJob(player))
+ RejectPlayer(player)
return
if (RETURNTOLOBBY)
- job_debug("HU: Player unable to be assigned job, return to lobby enabled: [player]")
- try_reject_player(player)
+ RejectPlayer(player)
return
else //Something gone wrong if we got here.
- job_debug("HU: [player] has an invalid jobless_role var: [jobless_role]")
- log_game("[player] has an invalid jobless_role var: [jobless_role]")
- message_admins("[player] has an invalid jobless_role, this shouldn't happen.")
- try_reject_player(player)
+ var/message = "HU: [player] fell through handling unassigned"
+ JobDebug(message)
+ log_game(message)
+ message_admins(message)
+ RejectPlayer(player)
//Gives the player the stuff he should have with his rank
-/datum/controller/subsystem/job/proc/equip_rank(mob/living/equipping, datum/job/job, client/player_client)
+/datum/controller/subsystem/job/proc/EquipRank(mob/living/equipping, datum/job/job, client/player_client)
equipping.job = job.title
SEND_SIGNAL(equipping, COMSIG_JOB_RECEIVED, job)
@@ -577,7 +572,7 @@ SUBSYSTEM_DEF(job)
/datum/controller/subsystem/job/proc/handle_auto_deadmin_roles(client/C, rank)
if(!C?.holder)
return TRUE
- var/datum/job/job = get_job(rank)
+ var/datum/job/job = GetJob(rank)
var/timegate_expired = FALSE
// allow only forcing deadminning in the first X seconds of the round if auto_deadmin_timegate is set in config
@@ -595,7 +590,7 @@ SUBSYSTEM_DEF(job)
return C.holder.auto_deadmin()
/datum/controller/subsystem/job/proc/setup_officer_positions()
- var/datum/job/J = SSjob.get_job(JOB_SECURITY_OFFICER)
+ var/datum/job/J = SSjob.GetJob(JOB_SECURITY_OFFICER)
if(!J)
CRASH("setup_officer_positions(): Security officer job is missing")
@@ -603,7 +598,7 @@ SUBSYSTEM_DEF(job)
if(ssc > 0)
if(J.spawn_positions > 0)
var/officer_positions = min(12, max(J.spawn_positions, round(unassigned.len / ssc))) //Scale between configured minimum and 12 officers
- job_debug("SOP: Setting open security officer positions to [officer_positions]")
+ JobDebug("Setting open security officer positions to [officer_positions]")
J.total_positions = officer_positions
J.spawn_positions = officer_positions
@@ -619,7 +614,7 @@ SUBSYSTEM_DEF(job)
else //We ran out of spare locker spawns!
break
-/datum/controller/subsystem/job/proc/handle_feedback_gathering()
+/datum/controller/subsystem/job/proc/HandleFeedbackGathering()
for(var/datum/job/job as anything in joinable_occupations)
var/high = 0 //high
var/medium = 0 //medium
@@ -658,7 +653,7 @@ SUBSYSTEM_DEF(job)
SSblackbox.record_feedback("nested tally", "job_preferences", young, list("[job.title]", "young"))
SSblackbox.record_feedback("nested tally", "job_preferences", newbie, list("[job.title]", "newbie"))
-/datum/controller/subsystem/job/proc/popcap_reached()
+/datum/controller/subsystem/job/proc/PopcapReached()
var/hpc = CONFIG_GET(number/hard_popcap)
var/epc = CONFIG_GET(number/extreme_popcap)
if(hpc || epc)
@@ -667,12 +662,12 @@ SUBSYSTEM_DEF(job)
return 1
return 0
-/datum/controller/subsystem/job/proc/try_reject_player(mob/dead/new_player/player)
+/datum/controller/subsystem/job/proc/RejectPlayer(mob/dead/new_player/player)
if(player.mind && player.mind.special_role)
- job_debug("RJCT: Player unable to be rejected due to special_role, Player: [player], SpecialRole: [player.mind.special_role]")
- return FALSE
-
- job_debug("RJCT: Player rejected, Player: [player]")
+ return
+ if(PopcapReached())
+ JobDebug("Popcap overflow Check observer located, Player: [player]")
+ JobDebug("Player rejected :[player]")
unassigned -= player
if(!run_divide_occupation_pure)
to_chat(player, "You have failed to qualify for any job you desired.")
@@ -684,10 +679,10 @@ SUBSYSTEM_DEF(job)
var/oldjobs = SSjob.all_occupations
sleep(2 SECONDS)
for (var/datum/job/job as anything in oldjobs)
- INVOKE_ASYNC(src, PROC_REF(recover_job), job)
+ INVOKE_ASYNC(src, PROC_REF(RecoverJob), job)
-/datum/controller/subsystem/job/proc/recover_job(datum/job/J)
- var/datum/job/newjob = get_job(J.title)
+/datum/controller/subsystem/job/proc/RecoverJob(datum/job/J)
+ var/datum/job/newjob = GetJob(J.title)
if (!istype(newjob))
return
newjob.total_positions = J.total_positions
@@ -704,7 +699,7 @@ SUBSYSTEM_DEF(job)
if(buckle && isliving(joining_mob))
buckle_mob(joining_mob, FALSE, FALSE)
-/datum/controller/subsystem/job/proc/send_to_late_join(mob/M, buckle = TRUE)
+/datum/controller/subsystem/job/proc/SendToLateJoin(mob/M, buckle = TRUE)
var/atom/destination
if(M.mind && !is_unassigned_job(M.mind.assigned_role) && length(GLOB.jobspawn_overrides[M.mind.assigned_role.title])) //We're doing something special today.
destination = pick(GLOB.jobspawn_overrides[M.mind.assigned_role.title])
@@ -739,6 +734,19 @@ SUBSYSTEM_DEF(job)
stack_trace("Unable to find last resort spawn point.")
return GET_ERROR_ROOM
+///Lands specified mob at a random spot in the hallways
+/datum/controller/subsystem/job/proc/DropLandAtRandomHallwayPoint(mob/living/living_mob)
+ var/turf/spawn_turf = get_safe_random_station_turf(typesof(/area/station/hallway))
+
+ if(!spawn_turf)
+ SendToLateJoin(living_mob)
+ else
+ podspawn(list(
+ "target" = spawn_turf,
+ "path" = /obj/structure/closet/supplypod/centcompod,
+ "spawn" = living_mob
+ ))
+
/// Returns a list of minds of all heads of staff who are alive
/datum/controller/subsystem/job/proc/get_living_heads()
. = list()
@@ -773,7 +781,7 @@ SUBSYSTEM_DEF(job)
if(sec.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_SECURITY)
. += sec
-/datum/controller/subsystem/job/proc/job_debug(message)
+/datum/controller/subsystem/job/proc/JobDebug(message)
log_job_debug(message)
/// Builds various lists of jobs based on station, centcom and additional jobs with icons associated with them.
@@ -838,47 +846,12 @@ SUBSYSTEM_DEF(job)
safe_code_timer_id = null
safe_code_request_loc = null
-/// Assigns roles that are considered high priority, either due to dynamic needing to force a specific role for a specific ruleset
-/// or making sure roles critical to round progression exist where possible every shift.
+/// Blindly assigns the required roles to every player in the dynamic_forced_occupations list.
/datum/controller/subsystem/job/proc/assign_priority_positions()
- job_debug("APP: Assigning Dynamic ruleset forced occupations: [length(dynamic_forced_occupations)]")
for(var/mob/new_player in dynamic_forced_occupations)
- // Eligibility checks already carried out as part of the dynamic ruleset trim_candidates proc.
- // However no guarantee of game state between then and now, so don't skip eligibility checks on assign_role.
- assign_role(new_player, get_job(dynamic_forced_occupations[new_player]))
-
- // Get JP_HIGH department Heads of Staff in place. Indirectly useful for the Revolution ruleset to have as many Heads as possible.
- job_debug("APP: Assigning all JP_HIGH head of staff roles.")
- var/head_count = fill_all_head_positions_at_priority(JP_HIGH)
-
- // If nobody has JP_HIGH on a Head role, try to force at least one Head of Staff so every shift has the best chance
- // of having at least one leadership role.
- if(head_count == 0)
- force_one_head_assignment()
-
- // Fill out all AI positions.
- job_debug("APP: Filling all AI positions")
- fill_ai_positions()
-
-/datum/controller/subsystem/job/proc/assign_all_overflow_positions()
- job_debug("OVRFLW: Assigning all overflow roles.")
- job_debug("OVRFLW: This shift's overflow role: [overflow_role]")
- var/datum/job/overflow_datum = get_job_type(overflow_role)
-
- // When the Overflow role changes for any reason, this allows players to set otherwise invalid job priority pref states.
- // So if Assistant is the "usual" Overflow but it gets changed to Clown for a shift, players can set the Assistant role's priorities
- // to JP_MEDIUM and JP_LOW. When the "usual" Overflow role comes back, it returns to an On option in the prefs menu but still
- // keeps its old JP_MEDIUM or JP_LOW value in the background.
-
- // Due to this prefs quirk, we actually don't want to find JP_HIGH candidates as it may exclude people with abnormal pref states that
- // appear normal from the UI. By passing in JP_ANY, it will return all players that have the overflow job pref (which should be a toggle)
- // set to any level.
- var/list/overflow_candidates = find_occupation_candidates(overflow_datum, JP_ANY)
- for(var/mob/dead/new_player/player in overflow_candidates)
- // Eligibility checks done as part of find_occupation_candidates, so skip them.
- assign_role(player, get_job_type(overflow_role), do_eligibility_checks = FALSE)
- job_debug("OVRFLW: Assigned overflow to player: [player]")
- job_debug("OVRFLW: All overflow roles assigned.")
+ // Eligibility checks already carried out as part of the dynamic ruleset trim_candidates proc.area
+ // However no guarantee of game state between then and now, so don't skip eligibility checks on AssignRole.
+ AssignRole(new_player, GetJob(dynamic_forced_occupations[new_player]))
/// Takes a job priority #define such as JP_LOW and gets its string representation for logging.
/datum/controller/subsystem/job/proc/job_priority_level_to_string(priority)
@@ -896,40 +869,40 @@ SUBSYSTEM_DEF(job)
* Arguments:
* * player - The player to check for job eligibility.
* * possible_job - The job to check for eligibility against.
- * * debug_prefix - Logging prefix for the job_debug log entries. For example, GRJ during give_random_job or DO during divide_occupations.
+ * * debug_prefix - Logging prefix for the JobDebug log entries. For example, GRJ during GiveRandomJob or DO during DivideOccupations.
* * add_job_to_log - If TRUE, appends the job type to the log entry. If FALSE, does not. Set to FALSE when check is part of iterating over players for a specific job, set to TRUE when check is part of iterating over jobs for a specific player and you don't want extra log entry spam.
*/
/datum/controller/subsystem/job/proc/check_job_eligibility(mob/dead/new_player/player, datum/job/possible_job, debug_prefix = "", add_job_to_log = FALSE)
if(!player.mind)
- job_debug("[debug_prefix]: Player has no mind, Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
+ JobDebug("[debug_prefix] player has no mind, Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
return JOB_UNAVAILABLE_GENERIC
if(possible_job.title in player.mind.restricted_roles)
- job_debug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_ANTAG_INCOMPAT, possible_job.title)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
+ JobDebug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_ANTAG_INCOMPAT, possible_job.title)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
return JOB_UNAVAILABLE_ANTAG_INCOMPAT
if(!possible_job.player_old_enough(player.client))
- job_debug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_ACCOUNTAGE, possible_job.title)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
+ JobDebug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_ACCOUNTAGE, possible_job.title)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
return JOB_UNAVAILABLE_ACCOUNTAGE
var/required_playtime_remaining = possible_job.required_playtime_remaining(player.client)
if(required_playtime_remaining)
- job_debug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_PLAYTIME, possible_job.title)], Player: [player], MissingTime: [required_playtime_remaining][add_job_to_log ? ", Job: [possible_job]" : ""]")
+ JobDebug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_PLAYTIME, possible_job.title)], Player: [player], MissingTime: [required_playtime_remaining][add_job_to_log ? ", Job: [possible_job]" : ""]")
return JOB_UNAVAILABLE_PLAYTIME
// Run the banned check last since it should be the rarest check to fail and can access the database.
if(is_banned_from(player.ckey, possible_job.title))
- job_debug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_BANNED, possible_job.title)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
+ JobDebug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_BANNED, possible_job.title)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
return JOB_UNAVAILABLE_BANNED
// Check for character age
if(possible_job.required_character_age > player.client.prefs.read_preference(/datum/preference/numeric/age) && possible_job.required_character_age != null)
- job_debug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_AGE)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
+ JobDebug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_AGE)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
return JOB_UNAVAILABLE_AGE
// Need to recheck the player exists after is_banned_from since it can query the DB which may sleep.
if(QDELETED(player))
- job_debug("[debug_prefix]: Player is qdeleted, Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
+ JobDebug("[debug_prefix] player is qdeleted, Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
return JOB_UNAVAILABLE_GENERIC
return JOB_AVAILABLE
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 976f00a6a6a..ff76464bee5 100644
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -236,14 +236,14 @@ SUBSYSTEM_DEF(ticker)
can_continue = SSdynamic.pre_setup() //Choose antagonists
CHECK_TICK
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_PRE_JOBS_ASSIGNED, src)
- can_continue = can_continue && SSjob.divide_occupations() //Distribute jobs
+ can_continue = can_continue && SSjob.DivideOccupations() //Distribute jobs
CHECK_TICK
if(!GLOB.Debug2)
if(!can_continue)
log_game("Game failed pre_setup")
to_chat(world, "Error setting up game. Reverting to pre-game lobby.")
- SSjob.reset_occupations()
+ SSjob.ResetOccupations()
return FALSE
else
message_admins(span_notice("DEBUG: Bypassing prestart checks..."))
@@ -416,7 +416,7 @@ SUBSYSTEM_DEF(ticker)
continue
var/datum/job/player_assigned_role = new_player_living.mind.assigned_role
if(player_assigned_role.job_flags & JOB_EQUIP_RANK)
- SSjob.equip_rank(new_player_living, player_assigned_role, new_player_mob.client)
+ SSjob.EquipRank(new_player_living, player_assigned_role, new_player_mob.client)
player_assigned_role.after_roundstart_spawn(new_player_living, new_player_mob.client)
if(picked_spare_id_candidate == new_player_mob)
captainless = FALSE
diff --git a/code/datums/ai_laws/ai_laws.dm b/code/datums/ai_laws/ai_laws.dm
index a0d1d629fc8..0dbc6839430 100644
--- a/code/datums/ai_laws/ai_laws.dm
+++ b/code/datums/ai_laws/ai_laws.dm
@@ -192,7 +192,7 @@ GLOBAL_VAR(round_default_lawset)
var/datum/ai_laws/default_laws = get_round_default_lawset()
default_laws = new default_laws()
inherent = default_laws.inherent
- var/datum/job/human_ai_job = SSjob.get_job(JOB_HUMAN_AI)
+ var/datum/job/human_ai_job = SSjob.GetJob(JOB_HUMAN_AI)
if(human_ai_job && human_ai_job.current_positions && !zeroth) //there is a human AI so we "slave" to that.
zeroth = "Follow the orders of Big Brother."
protected_zeroth = TRUE
diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm
index 449aae10f82..453b7ad93b6 100644
--- a/code/datums/brain_damage/imaginary_friend.dm
+++ b/code/datums/brain_damage/imaginary_friend.dm
@@ -156,11 +156,11 @@
for(var/job in appearance_from_prefs.job_preferences)
var/this_pref = appearance_from_prefs.job_preferences[job]
if(this_pref > highest_pref)
- appearance_job = SSjob.get_job(job)
+ appearance_job = SSjob.GetJob(job)
highest_pref = this_pref
if(!appearance_job)
- appearance_job = SSjob.get_job(JOB_ASSISTANT)
+ appearance_job = SSjob.GetJob(JOB_ASSISTANT)
if(istype(appearance_job, /datum/job/ai))
human_image = icon('icons/mob/silicon/ai.dmi', icon_state = resolve_ai_icon(appearance_from_prefs.read_preference(/datum/preference/choiced/ai_core_display)), dir = SOUTH)
diff --git a/code/datums/elements/art.dm b/code/datums/elements/art.dm
index d5a642c23d0..81d388aa94a 100644
--- a/code/datums/elements/art.dm
+++ b/code/datums/elements/art.dm
@@ -74,7 +74,7 @@
var/datum/job_department/hater_department = SSjob.get_department_type(hater_department_type)
for(var/datum/job/hater_job as anything in hater_department.department_jobs)
haters += hater_job.title
- var/datum/job/quartermaster/fucking_quartermaster = SSjob.get_job_type(/datum/job/quartermaster)
+ var/datum/job/quartermaster/fucking_quartermaster = SSjob.GetJobType(/datum/job/quartermaster)
haters += fucking_quartermaster.title
if(!(user.mind.assigned_role.title in haters))
diff --git a/code/datums/id_trim/jobs.dm b/code/datums/id_trim/jobs.dm
index bd326c383f7..b5893380fde 100644
--- a/code/datums/id_trim/jobs.dm
+++ b/code/datums/id_trim/jobs.dm
@@ -24,7 +24,7 @@
/datum/id_trim/job/New()
if(ispath(job))
- job = SSjob.get_job_type(job)
+ job = SSjob.GetJobType(job)
if(isnull(job_changes))
job_changes = SSmapping.config.job_changes
@@ -1056,7 +1056,7 @@
if(CONFIG_GET(number/depsec_access_level) == POPULATION_SCALED_ACCESS)
var/minimal_security_officers = 3 // We do not spawn in any more lockers if there are 5 or less security officers, so let's keep it lower than that number.
- var/datum/job/J = SSjob.get_job(JOB_SECURITY_OFFICER)
+ var/datum/job/J = SSjob.GetJob(JOB_SECURITY_OFFICER)
if((J.spawn_positions - minimal_security_officers) <= 0)
access |= elevated_access
diff --git a/code/datums/mind/_mind.dm b/code/datums/mind/_mind.dm
index 397a1c5b13a..36e9d7ba6d0 100644
--- a/code/datums/mind/_mind.dm
+++ b/code/datums/mind/_mind.dm
@@ -106,7 +106,7 @@
/datum/mind/New(_key)
key = _key
init_known_skills()
- set_assigned_role(SSjob.get_job_type(/datum/job/unassigned)) // Unassigned by default.
+ set_assigned_role(SSjob.GetJobType(/datum/job/unassigned)) // Unassigned by default.
/datum/mind/Destroy()
SSticker.minds -= src
@@ -251,7 +251,7 @@
var/new_role = input("Select new role", "Assigned role", assigned_role.title) as null|anything in sort_list(SSjob.name_occupations)
if(isnull(new_role))
return
- var/datum/job/new_job = SSjob.get_job(new_role)
+ var/datum/job/new_job = SSjob.GetJob(new_role)
if (!new_job)
to_chat(usr, span_warning("Job not found."))
return
diff --git a/code/datums/mind/antag.dm b/code/datums/mind/antag.dm
index ca10f3afe20..11340ae56a6 100644
--- a/code/datums/mind/antag.dm
+++ b/code/datums/mind/antag.dm
@@ -286,7 +286,7 @@
/datum/mind/proc/make_wizard()
if(has_antag_datum(/datum/antagonist/wizard))
return
- set_assigned_role(SSjob.get_job_type(/datum/job/space_wizard))
+ set_assigned_role(SSjob.GetJobType(/datum/job/space_wizard))
special_role = ROLE_WIZARD
add_antag_datum(/datum/antagonist/wizard)
diff --git a/code/datums/mind/initialization.dm b/code/datums/mind/initialization.dm
index e3b3e8225dc..eb622cc5af5 100644
--- a/code/datums/mind/initialization.dm
+++ b/code/datums/mind/initialization.dm
@@ -21,17 +21,17 @@
//AI
/mob/living/silicon/ai/mind_initialize()
. = ..()
- mind.set_assigned_role(SSjob.get_job_type(/datum/job/ai))
+ mind.set_assigned_role(SSjob.GetJobType(/datum/job/ai))
//BORG
/mob/living/silicon/robot/mind_initialize()
. = ..()
- mind.set_assigned_role(SSjob.get_job_type(/datum/job/cyborg))
+ mind.set_assigned_role(SSjob.GetJobType(/datum/job/cyborg))
//PAI
/mob/living/silicon/pai/mind_initialize()
. = ..()
- mind.set_assigned_role(SSjob.get_job_type(/datum/job/personal_ai))
+ mind.set_assigned_role(SSjob.GetJobType(/datum/job/personal_ai))
mind.special_role = ""
diff --git a/code/datums/records/manifest.dm b/code/datums/records/manifest.dm
index afc5cef6aa4..fc2bb30ce8d 100644
--- a/code/datums/records/manifest.dm
+++ b/code/datums/records/manifest.dm
@@ -31,7 +31,7 @@ GLOBAL_DATUM_INIT(manifest, /datum/manifest, new)
var/name = target.name
var/rank = target.rank // user-visible job
var/trim = target.trim // internal jobs by trim type
- var/datum/job/job = SSjob.get_job(trim)
+ var/datum/job/job = SSjob.GetJob(trim)
if(!job || !(job.job_flags & JOB_CREW_MANIFEST) || !LAZYLEN(job.departments_list)) // In case an unlawful custom rank is added.
var/list/misc_list = manifest_out[DEPARTMENT_UNASSIGNED]
misc_list[++misc_list.len] = list(
diff --git a/code/datums/station_traits/job_traits.dm b/code/datums/station_traits/job_traits.dm
index a38aef2be14..f2bd456aaee 100644
--- a/code/datums/station_traits/job_traits.dm
+++ b/code/datums/station_traits/job_traits.dm
@@ -61,7 +61,7 @@
if (isnull(signee) || !signee.client || !signee.mind || signee.ready != PLAYER_READY_TO_PLAY)
LAZYREMOVE(lobby_candidates, signee)
- var/datum/job/our_job = SSjob.get_job_type(job_to_add)
+ var/datum/job/our_job = SSjob.GetJobType(job_to_add)
our_job.total_positions = position_amount
our_job.spawn_positions = position_amount
while(length(lobby_candidates) && position_amount > 0)
@@ -73,7 +73,7 @@
lobby_candidates = null
/datum/station_trait/job/can_display_lobby_button(client/player)
- var/datum/job/our_job = SSjob.get_job_type(job_to_add)
+ var/datum/job/our_job = SSjob.GetJobType(job_to_add)
return our_job.player_old_enough(player) && ..()
/// Adds a gorilla to the cargo department, replacing the sloth and the mech
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 79ed245fc35..db667f9fcbe 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -576,7 +576,7 @@ DEFINE_BITFIELD(turret_flags, list(
// If we aren't shooting heads then return a threatcount of 0
if (!(turret_flags & TURRET_FLAG_SHOOT_HEADS))
- var/datum/job/apparent_job = SSjob.get_job(perp.get_assignment())
+ var/datum/job/apparent_job = SSjob.GetJob(perp.get_assignment())
if(apparent_job?.job_flags & JOB_HEAD_OF_STAFF)
return 0
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index 289a48d4f3c..41731cdf31d 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -120,7 +120,7 @@
/obj/item/card/id/Initialize(mapload)
. = ..()
- var/datum/bank_account/blank_bank_account = new("Unassigned", SSjob.get_job_type(/datum/job/unassigned), player_account = FALSE)
+ var/datum/bank_account/blank_bank_account = new("Unassigned", SSjob.GetJobType(/datum/job/unassigned), player_account = FALSE)
registered_account = blank_bank_account
registered_account.replaceable = TRUE
@@ -1261,7 +1261,7 @@
. = ..()
registered_account = new(player_account = FALSE)
registered_account.account_id = ADMIN_ACCOUNT_ID // this is so bank_card_talk() can work.
- registered_account.account_job = SSjob.get_job_type(/datum/job/admin)
+ registered_account.account_job = SSjob.GetJobType(/datum/job/admin)
registered_account.account_balance += 999999 // MONEY! We add more money to the account every time we spawn because it's a debug item and infinite money whoopie
/obj/item/card/id/advanced/debug/alt_click_can_use_id(mob/living/user)
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index cfedd9ae270..0f7d7a3f39b 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -521,7 +521,7 @@ ADMIN_VERB(spawn_debug_full_crew, R_DEBUG, "Spawn Debug Full Crew", "Creates a f
// Then, spawn a human and slap a person into it.
var/number_made = 0
for(var/rank in SSjob.name_occupations)
- var/datum/job/job = SSjob.get_job(rank)
+ var/datum/job/job = SSjob.GetJob(rank)
// JOB_CREW_MEMBER is all jobs that pretty much aren't silicon
if(!(job.job_flags & JOB_CREW_MEMBER))
@@ -533,7 +533,7 @@ ADMIN_VERB(spawn_debug_full_crew, R_DEBUG, "Spawn Debug Full Crew", "Creates a f
new_guy.mind.name = "[rank] Dummy"
// Assign the rank to the new player dummy.
- if(!SSjob.assign_role(new_guy, job, do_eligibility_checks = FALSE))
+ if(!SSjob.AssignRole(new_guy, job, do_eligibility_checks = FALSE))
qdel(new_guy)
to_chat(user, "[rank] wasn't able to be spawned.")
continue
@@ -545,7 +545,7 @@ ADMIN_VERB(spawn_debug_full_crew, R_DEBUG, "Spawn Debug Full Crew", "Creates a f
qdel(new_guy)
// Then equip up the human with job gear.
- SSjob.equip_rank(character, job)
+ SSjob.EquipRank(character, job)
job.after_latejoin_spawn(character)
// Finally, ensure the minds are tracked and in the manifest.
diff --git a/code/modules/admin/verbs/admin.dm b/code/modules/admin/verbs/admin.dm
index edd362938af..88ee5148f7a 100644
--- a/code/modules/admin/verbs/admin.dm
+++ b/code/modules/admin/verbs/admin.dm
@@ -32,7 +32,7 @@ ADMIN_VERB(unprison, R_ADMIN, "UnPrison", ADMIN_VERB_NO_DESCRIPTION, ADMIN_CATEG
tgui_alert(user, "[prisoner.name] is not prisoned.")
return
- SSjob.send_to_late_join(prisoner)
+ SSjob.SendToLateJoin(prisoner)
message_admins("[key_name_admin(user)] has unprisoned [key_name_admin(prisoner)]")
log_admin("[key_name(user)] has unprisoned [key_name(prisoner)]")
BLACKBOX_LOG_ADMIN_VERB("Unprison")
diff --git a/code/modules/admin/verbs/admingame.dm b/code/modules/admin/verbs/admingame.dm
index aef16dc7d7d..57311446961 100644
--- a/code/modules/admin/verbs/admingame.dm
+++ b/code/modules/admin/verbs/admingame.dm
@@ -190,7 +190,7 @@ ADMIN_VERB(respawn_character, R_ADMIN, "Respawn Character", "Respawn a player th
if(findtext(G_found.real_name,"monkey"))
if(tgui_alert(user,"This character appears to have been a monkey. Would you like to respawn them as such?",,list("Yes","No")) == "Yes")
var/mob/living/carbon/human/species/monkey/new_monkey = new
- SSjob.send_to_late_join(new_monkey)
+ SSjob.SendToLateJoin(new_monkey)
G_found.mind.transfer_to(new_monkey) //be careful when doing stuff like this! I've already checked the mind isn't in use
new_monkey.key = G_found.key
to_chat(new_monkey, "You have been fully respawned. Enjoy the game.", confidential = TRUE)
@@ -202,7 +202,7 @@ ADMIN_VERB(respawn_character, R_ADMIN, "Respawn Character", "Respawn a player th
//Ok, it's not a monkey. So, spawn a human.
var/mob/living/carbon/human/new_character = new//The mob being spawned.
- SSjob.send_to_late_join(new_character)
+ SSjob.SendToLateJoin(new_character)
var/datum/record/locked/record_found //Referenced to later to either randomize or not randomize the character.
if(G_found.mind && !G_found.mind.active) //mind isn't currently in use by someone/something
@@ -225,7 +225,7 @@ ADMIN_VERB(respawn_character, R_ADMIN, "Respawn Character", "Respawn a player th
else
new_character.mind_initialize()
if(is_unassigned_job(new_character.mind.assigned_role))
- new_character.mind.set_assigned_role(SSjob.get_job_type(SSjob.overflow_role))
+ new_character.mind.set_assigned_role(SSjob.GetJobType(SSjob.overflow_role))
new_character.key = G_found.key
@@ -242,7 +242,7 @@ ADMIN_VERB(respawn_character, R_ADMIN, "Respawn Character", "Respawn a player th
//Now for special roles and equipment.
var/datum/antagonist/traitor/traitordatum = new_character.mind.has_antag_datum(/datum/antagonist/traitor)
if(traitordatum)
- SSjob.equip_rank(new_character, new_character.mind.assigned_role, new_character.client)
+ SSjob.EquipRank(new_character, new_character.mind.assigned_role, new_character.client)
new_character.mind.give_uplink(silent = TRUE, antag_datum = traitordatum)
switch(new_character.mind.special_role)
@@ -271,7 +271,7 @@ ADMIN_VERB(respawn_character, R_ADMIN, "Respawn Character", "Respawn a player th
new_character = new_character.AIize()
else
if(!traitordatum) // Already equipped there.
- SSjob.equip_rank(new_character, new_character.mind.assigned_role, new_character.client)//Or we simply equip them.
+ SSjob.EquipRank(new_character, new_character.mind.assigned_role, new_character.client)//Or we simply equip them.
//Announces the character on all the systems, based on the record.
if(!record_found && (new_character.mind.assigned_role.job_flags & JOB_CREW_MEMBER))
diff --git a/code/modules/admin/verbs/ai_triumvirate.dm b/code/modules/admin/verbs/ai_triumvirate.dm
index 38c2eba712c..d63994a25c3 100644
--- a/code/modules/admin/verbs/ai_triumvirate.dm
+++ b/code/modules/admin/verbs/ai_triumvirate.dm
@@ -36,7 +36,7 @@ GLOBAL_DATUM(triple_ai_controller, /datum/triple_ai_controller)
to_chat(usr, "This option is currently only usable during pregame. This may change at a later date.", confidential = TRUE)
return
- var/datum/job/job = SSjob.get_job_type(/datum/job/ai)
+ var/datum/job/job = SSjob.GetJobType(/datum/job/ai)
if(!job)
to_chat(usr, "Unable to locate the AI job", confidential = TRUE)
CRASH("triple_ai() called, no /datum/job/ai to be found.")
diff --git a/code/modules/admin/verbs/ert.dm b/code/modules/admin/verbs/ert.dm
index a3c4a6a3762..6b721f37aaf 100644
--- a/code/modules/admin/verbs/ert.dm
+++ b/code/modules/admin/verbs/ert.dm
@@ -242,7 +242,7 @@
ert_antag.random_names = ertemplate.random_names
ert_operative.mind.add_antag_datum(ert_antag,ert_team)
- ert_operative.mind.set_assigned_role(SSjob.get_job_type(ert_antag.ert_job_path))
+ ert_operative.mind.set_assigned_role(SSjob.GetJobType(ert_antag.ert_job_path))
//Logging and cleanup
ert_operative.log_message("has been selected as \a [ert_antag.name].", LOG_GAME)
diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm
index aaa3b80972d..023f487c7e5 100644
--- a/code/modules/admin/verbs/secrets.dm
+++ b/code/modules/admin/verbs/secrets.dm
@@ -84,7 +84,7 @@ ADMIN_VERB(secrets, R_NONE, "Secrets", "Abuse harder than you ever have before w
if("infinite_sec")
if(!is_debugger)
return
- var/datum/job/sec_job = SSjob.get_job_type(/datum/job/security_officer)
+ var/datum/job/sec_job = SSjob.GetJobType(/datum/job/security_officer)
sec_job.total_positions = -1
sec_job.spawn_positions = -1
message_admins("[key_name_admin(holder)] has removed the cap on security officers.")
diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm
index 3f29925295b..bbc5c7a7b03 100644
--- a/code/modules/antagonists/_common/antag_spawner.dm
+++ b/code/modules/antagonists/_common/antag_spawner.dm
@@ -83,7 +83,7 @@
app.wiz_team = master_wizard.wiz_team
master_wizard.wiz_team.add_member(app_mind)
app_mind.add_antag_datum(app)
- app_mind.set_assigned_role(SSjob.get_job_type(/datum/job/wizard_apprentice))
+ app_mind.set_assigned_role(SSjob.GetJobType(/datum/job/wizard_apprentice))
app_mind.special_role = ROLE_WIZARD_APPRENTICE
SEND_SOUND(M, sound('sound/effects/magic.ogg'))
diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm
index cd56fcdaa5c..7fc0c565ab1 100644
--- a/code/modules/antagonists/abductor/abductor.dm
+++ b/code/modules/antagonists/abductor/abductor.dm
@@ -70,7 +70,7 @@
return team
/datum/antagonist/abductor/on_gain()
- owner.set_assigned_role(SSjob.get_job_type(role_job))
+ owner.set_assigned_role(SSjob.GetJobType(role_job))
owner.special_role = ROLE_ABDUCTOR
objectives += team.objectives
finalize_abductor()
diff --git a/code/modules/antagonists/abductor/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm
index 76f4cc1e250..a549171b661 100644
--- a/code/modules/antagonists/abductor/machinery/experiment.dm
+++ b/code/modules/antagonists/abductor/machinery/experiment.dm
@@ -190,7 +190,7 @@
H.forceMove(console.pad.teleport_target)
return
//Area not chosen / It's not safe area - teleport to arrivals
- SSjob.send_to_late_join(H, FALSE)
+ SSjob.SendToLateJoin(H, FALSE)
return
/obj/machinery/abductor/experiment/update_icon_state()
diff --git a/code/modules/antagonists/clown_ops/clownop.dm b/code/modules/antagonists/clown_ops/clownop.dm
index 9866ee30ccf..07c1cc84ad7 100644
--- a/code/modules/antagonists/clown_ops/clownop.dm
+++ b/code/modules/antagonists/clown_ops/clownop.dm
@@ -11,7 +11,7 @@
nuke_icon_state = "bananiumbomb_base"
/datum/antagonist/nukeop/clownop/admin_add(datum/mind/new_owner,mob/admin)
- new_owner.set_assigned_role(SSjob.get_job_type(/datum/job/clown_operative))
+ new_owner.set_assigned_role(SSjob.GetJobType(/datum/job/clown_operative))
new_owner.add_antag_datum(src)
message_admins("[key_name_admin(admin)] has clown op'ed [key_name_admin(new_owner)].")
log_admin("[key_name(admin)] has clown op'ed [key_name(new_owner)].")
diff --git a/code/modules/antagonists/nukeop/datums/operative.dm b/code/modules/antagonists/nukeop/datums/operative.dm
index c05295e15d3..9eca88d3385 100644
--- a/code/modules/antagonists/nukeop/datums/operative.dm
+++ b/code/modules/antagonists/nukeop/datums/operative.dm
@@ -94,7 +94,7 @@
nuke_team = new_team
/datum/antagonist/nukeop/admin_add(datum/mind/new_owner,mob/admin)
- new_owner.set_assigned_role(SSjob.get_job_type(/datum/job/nuclear_operative))
+ new_owner.set_assigned_role(SSjob.GetJobType(/datum/job/nuclear_operative))
new_owner.add_antag_datum(src)
message_admins("[key_name_admin(admin)] has nuke op'ed [key_name_admin(new_owner)].")
log_admin("[key_name(admin)] has nuke op'ed [key_name(new_owner)].")
diff --git a/code/modules/antagonists/paradox_clone/paradox_clone.dm b/code/modules/antagonists/paradox_clone/paradox_clone.dm
index bd8eb7cd7d8..e809e8cecbf 100644
--- a/code/modules/antagonists/paradox_clone/paradox_clone.dm
+++ b/code/modules/antagonists/paradox_clone/paradox_clone.dm
@@ -52,7 +52,7 @@
kill.update_explanation_text()
objectives += kill
- owner.set_assigned_role(SSjob.get_job_type(/datum/job/paradox_clone))
+ owner.set_assigned_role(SSjob.GetJobType(/datum/job/paradox_clone))
//clone doesnt show up on message lists
var/obj/item/modular_computer/pda/messenger = locate() in owner.current
diff --git a/code/modules/antagonists/space_dragon/space_dragon.dm b/code/modules/antagonists/space_dragon/space_dragon.dm
index ac999eb532c..17650faf937 100644
--- a/code/modules/antagonists/space_dragon/space_dragon.dm
+++ b/code/modules/antagonists/space_dragon/space_dragon.dm
@@ -67,12 +67,12 @@
forge_objectives()
rift_ability = new()
owner.special_role = ROLE_SPACE_DRAGON
- owner.set_assigned_role(SSjob.get_job_type(/datum/job/space_dragon))
+ owner.set_assigned_role(SSjob.GetJobType(/datum/job/space_dragon))
return ..()
/datum/antagonist/space_dragon/on_removal()
owner.special_role = null
- owner.set_assigned_role(SSjob.get_job_type(/datum/job/unassigned))
+ owner.set_assigned_role(SSjob.GetJobType(/datum/job/unassigned))
return ..()
/datum/antagonist/space_dragon/apply_innate_effects(mob/living/mob_override)
diff --git a/code/modules/antagonists/space_ninja/space_ninja.dm b/code/modules/antagonists/space_ninja/space_ninja.dm
index 37bc2299928..7f88c687c12 100644
--- a/code/modules/antagonists/space_ninja/space_ninja.dm
+++ b/code/modules/antagonists/space_ninja/space_ninja.dm
@@ -114,12 +114,12 @@
equip_space_ninja(owner.current)
owner.current.add_quirk(/datum/quirk/freerunning)
owner.current.add_quirk(/datum/quirk/light_step)
- owner.current.mind.set_assigned_role(SSjob.get_job_type(/datum/job/space_ninja))
+ owner.current.mind.set_assigned_role(SSjob.GetJobType(/datum/job/space_ninja))
owner.current.mind.special_role = ROLE_NINJA
return ..()
/datum/antagonist/ninja/admin_add(datum/mind/new_owner,mob/admin)
- new_owner.set_assigned_role(SSjob.get_job_type(/datum/job/space_ninja))
+ new_owner.set_assigned_role(SSjob.GetJobType(/datum/job/space_ninja))
new_owner.special_role = ROLE_NINJA
new_owner.add_antag_datum(src)
message_admins("[key_name_admin(admin)] has ninja'ed [key_name_admin(new_owner)].")
diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm
index fa6d9a515b6..335c934a320 100644
--- a/code/modules/antagonists/wizard/wizard.dm
+++ b/code/modules/antagonists/wizard/wizard.dm
@@ -124,7 +124,7 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key)
if(!owner.current)
return
if(!GLOB.wizardstart.len)
- SSjob.send_to_late_join(owner.current)
+ SSjob.SendToLateJoin(owner.current)
to_chat(owner, "HOT INSERTION, GO GO GO")
owner.current.forceMove(pick(GLOB.wizardstart))
diff --git a/code/modules/antagonists/xeno/xeno.dm b/code/modules/antagonists/xeno/xeno.dm
index 5ef26665bf2..59c83fd52ed 100644
--- a/code/modules/antagonists/xeno/xeno.dm
+++ b/code/modules/antagonists/xeno/xeno.dm
@@ -160,7 +160,7 @@
else
mind.add_antag_datum(/datum/antagonist/xeno)
- mind.set_assigned_role(SSjob.get_job_type(/datum/job/xenomorph))
+ mind.set_assigned_role(SSjob.GetJobType(/datum/job/xenomorph))
mind.special_role = ROLE_ALIEN
/mob/living/carbon/alien/on_wabbajacked(mob/living/new_mob)
@@ -170,7 +170,7 @@
if(isalien(new_mob))
return
mind.remove_antag_datum(/datum/antagonist/xeno)
- mind.set_assigned_role(SSjob.get_job_type(/datum/job/unassigned))
+ mind.set_assigned_role(SSjob.GetJobType(/datum/job/unassigned))
mind.special_role = null
#undef CAPTIVE_XENO_DEAD
diff --git a/code/modules/bitrunning/server/threats.dm b/code/modules/bitrunning/server/threats.dm
index ba52488f14e..28d91aa4b37 100644
--- a/code/modules/bitrunning/server/threats.dm
+++ b/code/modules/bitrunning/server/threats.dm
@@ -119,7 +119,7 @@
var/datum/mind/antag_mind = new_mob.mind
antag_mind.add_antag_datum(chosen_role)
antag_mind.special_role = ROLE_GLITCH
- antag_mind.set_assigned_role(SSjob.get_job_type(/datum/job/bitrunning_glitch))
+ antag_mind.set_assigned_role(SSjob.GetJobType(/datum/job/bitrunning_glitch))
playsound(new_mob, 'sound/magic/ethereal_exit.ogg', 50, vary = TRUE)
message_admins("[ADMIN_LOOKUPFLW(new_mob)] has been made into virtual antagonist by an event.")
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index eafda7f792e..c078a23e89c 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -181,7 +181,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
data["character_profiles"] = create_character_profiles()
data["character_preview_view"] = character_preview_view.assigned_map
- data["overflow_role"] = SSjob.get_job_type(SSjob.overflow_role).title
+ data["overflow_role"] = SSjob.GetJobType(SSjob.overflow_role).title
data["window"] = current_window
data["content_unlocked"] = unlock_content
diff --git a/code/modules/client/preferences/middleware/jobs.dm b/code/modules/client/preferences/middleware/jobs.dm
index 392822eac61..201e57668ea 100644
--- a/code/modules/client/preferences/middleware/jobs.dm
+++ b/code/modules/client/preferences/middleware/jobs.dm
@@ -10,7 +10,7 @@
if (level != null && level != JP_LOW && level != JP_MEDIUM && level != JP_HIGH)
return FALSE
- var/datum/job/job = SSjob.get_job(job_title)
+ var/datum/job/job = SSjob.GetJob(job_title)
if (isnull(job))
return FALSE
diff --git a/code/modules/client/preferences/species_features/vampire.dm b/code/modules/client/preferences/species_features/vampire.dm
index f720dca3649..5ecdae7b1bf 100644
--- a/code/modules/client/preferences/species_features/vampire.dm
+++ b/code/modules/client/preferences/species_features/vampire.dm
@@ -32,7 +32,7 @@ GLOBAL_LIST_EMPTY(vampire_houses)
//find and setup the house (department) this vampire is joining
var/datum/job_department/vampire_house
- var/datum/job/vampire_job = SSjob.get_job(target.job)
+ var/datum/job/vampire_job = SSjob.GetJob(target.job)
if(!vampire_job) //no job or no mind LOSERS
return
var/list/valid_departments = (SSjob.joinable_departments.Copy()) - list(/datum/job_department/silicon, /datum/job_department/undefined)
diff --git a/code/modules/clothing/chameleon/_chameleon_action.dm b/code/modules/clothing/chameleon/_chameleon_action.dm
index b9a1697976b..7d11355791b 100644
--- a/code/modules/clothing/chameleon/_chameleon_action.dm
+++ b/code/modules/clothing/chameleon/_chameleon_action.dm
@@ -208,7 +208,7 @@
if(istype(applying_from, /datum/outfit/job))
var/datum/outfit/job/job_outfit = applying_from
- var/datum/job/job_datum = SSjob.get_job_type(job_outfit.jobtype)
+ var/datum/job/job_datum = SSjob.GetJobType(job_outfit.jobtype)
apply_job_data(job_datum)
update_look(using_item_type)
diff --git a/code/modules/clothing/outfits/event.dm b/code/modules/clothing/outfits/event.dm
index b99ea6f5262..fa07b3297b2 100644
--- a/code/modules/clothing/outfits/event.dm
+++ b/code/modules/clothing/outfits/event.dm
@@ -18,7 +18,7 @@
if(visualsOnly)
return
user.fully_replace_character_name(user.real_name, "Santa Claus")
- user.mind.set_assigned_role(SSjob.get_job_type(/datum/job/santa))
+ user.mind.set_assigned_role(SSjob.GetJobType(/datum/job/santa))
user.mind.special_role = ROLE_SANTA
user.hairstyle = "Long Hair 3"
diff --git a/code/modules/events/ghost_role/fugitive_event.dm b/code/modules/events/ghost_role/fugitive_event.dm
index f0e1a7c893a..9eb792a6f6a 100644
--- a/code/modules/events/ghost_role/fugitive_event.dm
+++ b/code/modules/events/ghost_role/fugitive_event.dm
@@ -72,7 +72,7 @@
player_mind.active = TRUE
var/mob/living/carbon/human/S = new(landing_turf)
player_mind.transfer_to(S)
- player_mind.set_assigned_role(SSjob.get_job_type(/datum/job/fugitive))
+ player_mind.set_assigned_role(SSjob.GetJobType(/datum/job/fugitive))
player_mind.special_role = ROLE_FUGITIVE
player_mind.add_antag_datum(/datum/antagonist/fugitive)
var/datum/antagonist/fugitive/fugitiveantag = player_mind.has_antag_datum(/datum/antagonist/fugitive)
diff --git a/code/modules/events/ghost_role/morph_event.dm b/code/modules/events/ghost_role/morph_event.dm
index 1b7af6361fd..21d4b07873d 100644
--- a/code/modules/events/ghost_role/morph_event.dm
+++ b/code/modules/events/ghost_role/morph_event.dm
@@ -25,7 +25,7 @@
var/mob/living/basic/morph/corpus_accipientis = new(spawn_loc)
player_mind.transfer_to(corpus_accipientis)
- player_mind.set_assigned_role(SSjob.get_job_type(/datum/job/morph))
+ player_mind.set_assigned_role(SSjob.GetJobType(/datum/job/morph))
player_mind.special_role = ROLE_MORPH
player_mind.add_antag_datum(/datum/antagonist/morph)
SEND_SOUND(corpus_accipientis, sound('sound/magic/mutate.ogg'))
diff --git a/code/modules/events/ghost_role/nightmare.dm b/code/modules/events/ghost_role/nightmare.dm
index 1fdebff0cd8..d30108d94b9 100644
--- a/code/modules/events/ghost_role/nightmare.dm
+++ b/code/modules/events/ghost_role/nightmare.dm
@@ -27,7 +27,7 @@
var/mob/living/carbon/human/S = new (spawn_loc)
player_mind.transfer_to(S)
- player_mind.set_assigned_role(SSjob.get_job_type(/datum/job/nightmare))
+ player_mind.set_assigned_role(SSjob.GetJobType(/datum/job/nightmare))
player_mind.special_role = ROLE_NIGHTMARE
player_mind.add_antag_datum(/datum/antagonist/nightmare)
S.set_species(/datum/species/shadow/nightmare)
diff --git a/code/modules/events/ghost_role/operative.dm b/code/modules/events/ghost_role/operative.dm
index c7ad41d001d..98cfe5ecad4 100644
--- a/code/modules/events/ghost_role/operative.dm
+++ b/code/modules/events/ghost_role/operative.dm
@@ -22,7 +22,7 @@
operative.randomize_human_appearance(~RANDOMIZE_SPECIES)
operative.dna.update_dna_identity()
var/datum/mind/Mind = new /datum/mind(chosen_one.key)
- Mind.set_assigned_role(SSjob.get_job_type(/datum/job/lone_operative))
+ Mind.set_assigned_role(SSjob.GetJobType(/datum/job/lone_operative))
Mind.special_role = ROLE_LONE_OPERATIVE
Mind.active = TRUE
Mind.transfer_to(operative)
diff --git a/code/modules/events/wizard/rpgtitles.dm b/code/modules/events/wizard/rpgtitles.dm
index b78ae483ea6..9bb69a90f2c 100644
--- a/code/modules/events/wizard/rpgtitles.dm
+++ b/code/modules/events/wizard/rpgtitles.dm
@@ -38,7 +38,7 @@ GLOBAL_DATUM(rpgtitle_controller, /datum/rpgtitle_controller)
/datum/rpgtitle_controller/proc/on_crewmember_join(datum/source, mob/living/new_crewmember, rank)
SIGNAL_HANDLER
- var/datum/job/job = SSjob.get_job(rank)
+ var/datum/job/job = SSjob.GetJob(rank)
//we must prepare for the mother of all strings
new_crewmember.maptext_height = max(new_crewmember.maptext_height, 32)
diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm
index a4f4157c74f..81d42b051df 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -381,10 +381,10 @@
if(visualsOnly)
return
- var/datum/job/equipped_job = SSjob.get_job_type(jobtype)
+ var/datum/job/equipped_job = SSjob.GetJobType(jobtype)
if(!equipped_job)
- equipped_job = SSjob.get_job(equipped.job)
+ equipped_job = SSjob.GetJob(equipped.job)
var/obj/item/card/id/card = equipped.wear_id
diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm
index dc36796c4d1..26a43fa7751 100644
--- a/code/modules/jobs/job_types/cook.dm
+++ b/code/modules/jobs/job_types/cook.dm
@@ -82,7 +82,7 @@
/datum/outfit/job/cook/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
- var/datum/job/cook/other_chefs = SSjob.get_job_type(jobtype)
+ var/datum/job/cook/other_chefs = SSjob.GetJobType(jobtype)
if(other_chefs) // If there's other Chefs, you're a Cook
if(other_chefs.cooks > 0)//Cooks
id_trim = /datum/id_trim/job/cook
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index 95c2a301765..4db5ae88849 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -127,7 +127,7 @@
return GENERIC_JOB_UNAVAILABLE_ERROR
/mob/dead/new_player/proc/IsJobUnavailable(rank, latejoin = FALSE)
- var/datum/job/job = SSjob.get_job(rank)
+ var/datum/job/job = SSjob.GetJob(rank)
if(!(job.job_flags & JOB_NEW_PLAYER_JOINABLE))
return JOB_UNAVAILABLE_GENERIC
if((job.current_positions >= job.total_positions) && job.total_positions != -1)
@@ -172,9 +172,9 @@
SSticker.queued_players -= src
SSticker.queue_delay = 4
- var/datum/job/job = SSjob.get_job(rank)
+ var/datum/job/job = SSjob.GetJob(rank)
- if(!SSjob.assign_role(src, job, TRUE))
+ if(!SSjob.AssignRole(src, job, TRUE))
tgui_alert(usr, "There was an unexpected error putting you into your requested job. If you cannot join with any job, you should contact an admin.")
return FALSE
@@ -187,7 +187,7 @@
CRASH("Failed to create a character for latejoin.")
transfer_character()
- SSjob.equip_rank(character, job, character.client)
+ SSjob.EquipRank(character, job, character.client)
job.after_latejoin_spawn(character)
#define IS_NOT_CAPTAIN 0
diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm
index fb3b97066e0..49ac17d48ec 100644
--- a/code/modules/mob/dead/new_player/preferences_setup.dm
+++ b/code/modules/mob/dead/new_player/preferences_setup.dm
@@ -88,13 +88,13 @@
for(var/job in job_preferences)
if(job_preferences[job] > highest_pref)
- preview_job = SSjob.get_job(job)
+ preview_job = SSjob.GetJob(job)
highest_pref = job_preferences[job]
return preview_job
/datum/preferences/proc/render_new_preview_appearance(mob/living/carbon/human/dummy/mannequin, show_job_clothes = TRUE)
- var/datum/job/no_job = SSjob.get_job_type(/datum/job/unassigned)
+ var/datum/job/no_job = SSjob.GetJobType(/datum/job/unassigned)
var/datum/job/preview_job = get_highest_priority_job() || no_job
if(preview_job)
diff --git a/code/modules/mob/living/basic/space_fauna/demon/demon.dm b/code/modules/mob/living/basic/space_fauna/demon/demon.dm
index eb424cdce49..21eaf66a3e8 100644
--- a/code/modules/mob/living/basic/space_fauna/demon/demon.dm
+++ b/code/modules/mob/living/basic/space_fauna/demon/demon.dm
@@ -66,7 +66,7 @@
if(isnull(antag_type) || mind.has_antag_datum(antag_type))
return // we weren't built for this proc to run
- mind.set_assigned_role(SSjob.get_job_type(/datum/job/slaughter_demon))
+ mind.set_assigned_role(SSjob.GetJobType(/datum/job/slaughter_demon))
mind.special_role = ROLE_SLAUGHTER_DEMON
mind.add_antag_datum(antag_type)
diff --git a/code/modules/mob/living/basic/space_fauna/revenant/_revenant.dm b/code/modules/mob/living/basic/space_fauna/revenant/_revenant.dm
index 62b6a8da7e6..a154ba9da0c 100644
--- a/code/modules/mob/living/basic/space_fauna/revenant/_revenant.dm
+++ b/code/modules/mob/living/basic/space_fauna/revenant/_revenant.dm
@@ -125,7 +125,7 @@
return TRUE
generated_objectives_and_spells = TRUE
- mind.set_assigned_role(SSjob.get_job_type(/datum/job/revenant))
+ mind.set_assigned_role(SSjob.GetJobType(/datum/job/revenant))
mind.special_role = ROLE_REVENANT
SEND_SOUND(src, sound('sound/effects/ghost.ogg'))
mind.add_antag_datum(/datum/antagonist/revenant)
diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm
index 04967c76731..7d4255d54d5 100644
--- a/code/modules/mob/living/brain/posibrain.dm
+++ b/code/modules/mob/living/brain/posibrain.dm
@@ -137,7 +137,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
brainmob.timeofdeath = transferred_user.timeofdeath
brainmob.set_stat(CONSCIOUS)
if(brainmob.mind)
- brainmob.mind.set_assigned_role(SSjob.get_job_type(posibrain_job_path))
+ brainmob.mind.set_assigned_role(SSjob.GetJobType(posibrain_job_path))
if(transferred_user.mind)
transferred_user.mind.transfer_to(brainmob)
@@ -160,7 +160,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
var/policy = get_policy(ROLE_POSIBRAIN)
if(policy)
to_chat(brainmob, policy)
- brainmob.mind.set_assigned_role(SSjob.get_job_type(posibrain_job_path))
+ brainmob.mind.set_assigned_role(SSjob.GetJobType(posibrain_job_path))
brainmob.set_stat(CONSCIOUS)
visible_message(new_mob_message)
diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm
index 976064238b4..c561ca28999 100644
--- a/code/modules/mob/living/carbon/human/human_helpers.dm
+++ b/code/modules/mob/living/carbon/human/human_helpers.dm
@@ -344,7 +344,7 @@
clone.pitch = pitch
dna.transfer_identity(clone, transfer_SE = TRUE, transfer_species = TRUE)
- clone.dress_up_as_job(SSjob.get_job(job))
+ clone.dress_up_as_job(SSjob.GetJob(job))
for(var/datum/quirk/original_quircks as anything in quirks)
clone.add_quirk(original_quircks.type, override_client = client)
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index dbb69603007..f6d851e26eb 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -1174,7 +1174,7 @@
/mob/living/silicon/ai/get_exp_list(minutes)
. = ..()
- var/datum/job/ai/ai_job_ref = SSjob.get_job_type(/datum/job/ai)
+ var/datum/job/ai/ai_job_ref = SSjob.GetJobType(/datum/job/ai)
.[ai_job_ref.title] = minutes
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 74623744872..11f0d0552a6 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -1007,7 +1007,7 @@
/mob/living/silicon/robot/get_exp_list(minutes)
. = ..()
- var/datum/job/cyborg/cyborg_job_ref = SSjob.get_job_type(/datum/job/cyborg)
+ var/datum/job/cyborg/cyborg_job_ref = SSjob.GetJobType(/datum/job/cyborg)
.[cyborg_job_ref.title] = minutes
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 214c1d69e85..a327772996c 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -355,7 +355,7 @@
for(var/obj/item/to_strip in new_clown.get_equipped_items())
new_clown.dropItemToGround(to_strip)
- new_clown.dress_up_as_job(SSjob.get_job_type(/datum/job/clown))
+ new_clown.dress_up_as_job(SSjob.GetJobType(/datum/job/clown))
clowned_mob_refs += clown_ref
return TRUE
diff --git a/code/modules/mob_spawn/ghost_roles/unused_roles.dm b/code/modules/mob_spawn/ghost_roles/unused_roles.dm
index d533c2365c4..80f584d52c2 100644
--- a/code/modules/mob_spawn/ghost_roles/unused_roles.dm
+++ b/code/modules/mob_spawn/ghost_roles/unused_roles.dm
@@ -273,7 +273,7 @@
/obj/effect/mob_spawn/ghost_role/human/syndicatespace/special(mob/living/new_spawn)
. = ..()
new_spawn.grant_language(/datum/language/codespeak, source = LANGUAGE_MIND)
- var/datum/job/spawn_job = SSjob.get_job_type(spawner_job_path)
+ var/datum/job/spawn_job = SSjob.GetJobType(spawner_job_path)
var/policy = get_policy(spawn_job.policy_index)
if(policy)
to_chat(new_spawn, span_bold("[policy]"))
diff --git a/code/modules/mob_spawn/mob_spawn.dm b/code/modules/mob_spawn/mob_spawn.dm
index a609eabb3a0..3337a15b441 100644
--- a/code/modules/mob_spawn/mob_spawn.dm
+++ b/code/modules/mob_spawn/mob_spawn.dm
@@ -239,7 +239,7 @@
spawned_mob.key = mob_possessor.key
var/datum/mind/spawned_mind = spawned_mob.mind
if(spawned_mind)
- spawned_mob.mind.set_assigned_role_with_greeting(SSjob.get_job_type(spawner_job_path))
+ spawned_mob.mind.set_assigned_role_with_greeting(SSjob.GetJobType(spawner_job_path))
spawned_mind.name = spawned_mob.real_name
if(show_flavor)
diff --git a/code/modules/modular_computers/file_system/programs/jobmanagement.dm b/code/modules/modular_computers/file_system/programs/jobmanagement.dm
index 2d518408863..8d4db5ffb08 100644
--- a/code/modules/modular_computers/file_system/programs/jobmanagement.dm
+++ b/code/modules/modular_computers/file_system/programs/jobmanagement.dm
@@ -62,7 +62,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
switch(action)
if("PRG_open_job")
var/edit_job_target = params["target"]
- var/datum/job/j = SSjob.get_job(edit_job_target)
+ var/datum/job/j = SSjob.GetJob(edit_job_target)
if(!can_edit_job(j) || !can_open_job(j))
return TRUE
if(opened_positions[edit_job_target] >= 0)
@@ -74,7 +74,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
return TRUE
if("PRG_close_job")
var/edit_job_target = params["target"]
- var/datum/job/j = SSjob.get_job(edit_job_target)
+ var/datum/job/j = SSjob.GetJob(edit_job_target)
if(!can_edit_job(j) || !can_close_job(j))
return TRUE
//Allow instant closing without cooldown if a position has been opened before
@@ -87,7 +87,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
return TRUE
if("PRG_priority")
var/priority_target = params["target"]
- var/datum/job/j = SSjob.get_job(priority_target)
+ var/datum/job/j = SSjob.GetJob(priority_target)
if(!can_edit_job(j))
return TRUE
if(j.total_positions <= j.current_positions)
diff --git a/code/modules/spells/spell_types/self/mime_vow.dm b/code/modules/spells/spell_types/self/mime_vow.dm
index 3d1c44dabd6..d4e34880b53 100644
--- a/code/modules/spells/spell_types/self/mime_vow.dm
+++ b/code/modules/spells/spell_types/self/mime_vow.dm
@@ -32,6 +32,6 @@
cast_on.log_message("broke [cast_on.p_their()] vow of silence.", LOG_GAME)
cast_on.add_mood_event("vow", /datum/mood_event/broken_vow)
REMOVE_TRAIT(cast_on, TRAIT_MIMING, "[type]")
- var/datum/job/mime/mime_job = SSjob.get_job(JOB_MIME)
+ var/datum/job/mime/mime_job = SSjob.GetJob(JOB_MIME)
mime_job.total_positions += 1
qdel(src)
diff --git a/code/modules/unit_tests/anonymous_themes.dm b/code/modules/unit_tests/anonymous_themes.dm
index 99cd4f82802..a58f60eab3b 100644
--- a/code/modules/unit_tests/anonymous_themes.dm
+++ b/code/modules/unit_tests/anonymous_themes.dm
@@ -12,7 +12,7 @@
client.prefs.write_preference(GLOB.preference_entries[/datum/preference/name/real_name], "Prefs Biddle")
- human.apply_prefs_job(client, SSjob.get_job_type(/datum/job/assistant))
+ human.apply_prefs_job(client, SSjob.GetJobType(/datum/job/assistant))
TEST_ASSERT_NOTEQUAL(human.real_name, "Prefs Biddle", "apply_prefs_job didn't randomize human name with an anonymous theme")
TEST_ASSERT_EQUAL(client.prefs.read_preference(/datum/preference/name/real_name), "Prefs Biddle", "Anonymous theme overrode original prefs")
diff --git a/code/modules/unit_tests/dummy_spawn.dm b/code/modules/unit_tests/dummy_spawn.dm
index 6ec59eaaa50..ed359f962b7 100644
--- a/code/modules/unit_tests/dummy_spawn.dm
+++ b/code/modules/unit_tests/dummy_spawn.dm
@@ -16,7 +16,7 @@
/datum/unit_test/dummy_spawn_outfit/Run()
var/mob/living/carbon/human/dummy/lad = allocate(/mob/living/carbon/human/dummy)
for(var/datum/job/one_two_three as anything in subtypesof(/datum/job))
- var/datum/job/can_you_hear_this = SSjob.get_job_type(one_two_three)
+ var/datum/job/can_you_hear_this = SSjob.GetJobType(one_two_three)
if(!can_you_hear_this)
log_test("\tJob type [one_two_three] could not be retrieved from SSjob")
continue
diff --git a/code/modules/unit_tests/security_officer_distribution.dm b/code/modules/unit_tests/security_officer_distribution.dm
index 05d62eeab35..e268aab709f 100644
--- a/code/modules/unit_tests/security_officer_distribution.dm
+++ b/code/modules/unit_tests/security_officer_distribution.dm
@@ -68,7 +68,7 @@
var/mob/living/carbon/human/new_character = allocate(/mob/living/carbon/human/consistent)
new_character.mind_initialize()
- new_character.mind.set_assigned_role(SSjob.get_job_type(/datum/job/security_officer))
+ new_character.mind.set_assigned_role(SSjob.GetJobType(/datum/job/security_officer))
new_player.new_character = new_character
new_player.mock_client = mock_client
diff --git a/code/modules/unit_tests/traitor.dm b/code/modules/unit_tests/traitor.dm
index 974888b3a0d..012370d9356 100644
--- a/code/modules/unit_tests/traitor.dm
+++ b/code/modules/unit_tests/traitor.dm
@@ -11,7 +11,7 @@
possible_jobs += rank
for(var/job_name in possible_jobs)
- var/datum/job/job = SSjob.get_job(job_name)
+ var/datum/job/job = SSjob.GetJob(job_name)
var/mob/living/player = allocate(job.spawn_type)
player.mind_initialize()
var/datum/mind/mind = player.mind
diff --git a/code/modules/unit_tests/traitor_mail_content_check.dm b/code/modules/unit_tests/traitor_mail_content_check.dm
index b2ecfe2ef24..6d14d9d1428 100644
--- a/code/modules/unit_tests/traitor_mail_content_check.dm
+++ b/code/modules/unit_tests/traitor_mail_content_check.dm
@@ -5,6 +5,6 @@
var/mob/living/carbon/human/person = allocate(/mob/living/carbon/human/consistent)
person.mind_initialize()
var/obj/item/mail/traitor/test_mail = allocate(/obj/item/mail/traitor)
- person.mind.set_assigned_role(SSjob.get_job_type(/datum/job/captain))
+ person.mind.set_assigned_role(SSjob.GetJobType(/datum/job/captain))
test_mail.initialize_for_recipient(person.mind)
TEST_ASSERT_EQUAL(test_mail.contents.len, 0, "/obj/item/mail/traitor should not have items after initialize_for_recipient proc!")