diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm
index 2b2a20df8e9fc..21eb9b40e0669 100644
--- a/code/__DEFINES/jobs.dm
+++ b/code/__DEFINES/jobs.dm
@@ -8,40 +8,50 @@
#define DEFAULT_RELIGION "Christianity"
#define DEFAULT_DEITY "Space Jesus"
-#define JOB_DISPLAY_ORDER_DEFAULT 0
-
-#define JOB_DISPLAY_ORDER_ASSISTANT 1
-#define JOB_DISPLAY_ORDER_CAPTAIN 2
-#define JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL 3
-#define JOB_DISPLAY_ORDER_QUARTERMASTER 4
-#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 5
-#define JOB_DISPLAY_ORDER_SHAFT_MINER 6
-#define JOB_DISPLAY_ORDER_BARTENDER 7
-#define JOB_DISPLAY_ORDER_COOK 8
-#define JOB_DISPLAY_ORDER_BOTANIST 9
-#define JOB_DISPLAY_ORDER_JANITOR 10
-#define JOB_DISPLAY_ORDER_CLOWN 11
-#define JOB_DISPLAY_ORDER_MIME 12
-#define JOB_DISPLAY_ORDER_CURATOR 13
-#define JOB_DISPLAY_ORDER_LAWYER 14
-#define JOB_DISPLAY_ORDER_CHAPLAIN 15
-#define JOB_DISPLAY_ORDER_AI 16
-#define JOB_DISPLAY_ORDER_CYBORG 17
-#define JOB_DISPLAY_ORDER_CHIEF_ENGINEER 18
-#define JOB_DISPLAY_ORDER_STATION_ENGINEER 19
-#define JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN 20
-#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 21
-#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 22
+#define JOB_DISPLAY_ORDER_CAPTAIN 0
+#define JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL 1
+#define JOB_DISPLAY_ORDER_SOLGOV 2
+
+#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 10
+#define JOB_DISPLAY_ORDER_WARDEN 11
+#define JOB_DISPLAY_ORDER_DETECTIVE 12
+#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 13
+#define JOB_DISPLAY_ORDER_BRIG_PHYS 14
+
+#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 20
+#define JOB_DISPLAY_ORDER_CHEMIST 21
+#define JOB_DISPLAY_ORDER_VIROLOGIST 22
#define JOB_DISPLAY_ORDER_PARAMEDIC 23
-#define JOB_DISPLAY_ORDER_CHEMIST 24
-#define JOB_DISPLAY_ORDER_VIROLOGIST 25
-#define JOB_DISPLAY_ORDER_PSYCHOLOGIST 26
-#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 27
-#define JOB_DISPLAY_ORDER_SCIENTIST 28
-#define JOB_DISPLAY_ORDER_ROBOTICIST 29
-#define JOB_DISPLAY_ORDER_GENETICIST 30
-#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 31
-#define JOB_DISPLAY_ORDER_WARDEN 32
-#define JOB_DISPLAY_ORDER_DETECTIVE 33
-#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 34
-#define JOB_DISPLAY_ORDER_PRISONER 35
+#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 24
+#define JOB_DISPLAY_ORDER_PSYCHOLOGIST 25
+
+#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 30
+#define JOB_DISPLAY_ORDER_SCIENTIST 31
+#define JOB_DISPLAY_ORDER_ROBOTICIST 32
+#define JOB_DISPLAY_ORDER_GENETICIST 33
+
+#define JOB_DISPLAY_ORDER_CHIEF_ENGINEER 40
+#define JOB_DISPLAY_ORDER_STATION_ENGINEER 41
+#define JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN 42
+
+#define JOB_DISPLAY_ORDER_QUARTERMASTER 50
+#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 51
+#define JOB_DISPLAY_ORDER_SHAFT_MINER 52
+
+#define JOB_DISPLAY_ORDER_BARTENDER 60
+#define JOB_DISPLAY_ORDER_COOK 61
+#define JOB_DISPLAY_ORDER_BOTANIST 62
+#define JOB_DISPLAY_ORDER_JANITOR 63
+#define JOB_DISPLAY_ORDER_CLOWN 64
+#define JOB_DISPLAY_ORDER_MIME 65
+#define JOB_DISPLAY_ORDER_CURATOR 66
+#define JOB_DISPLAY_ORDER_LAWYER 67
+#define JOB_DISPLAY_ORDER_CHAPLAIN 68
+#define JOB_DISPLAY_ORDER_AI 69
+#define JOB_DISPLAY_ORDER_CYBORG 70
+
+#define JOB_DISPLAY_ORDER_PRISONER 75
+
+#define JOB_DISPLAY_ORDER_DEFAULT 80
+
+#define JOB_DISPLAY_ORDER_ASSISTANT 999
diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm
index e31076b6bc23c..4f9e234b0d27b 100644
--- a/code/__HELPERS/global_lists.dm
+++ b/code/__HELPERS/global_lists.dm
@@ -81,6 +81,11 @@
GLOB.materials_list[D.id] = D
sortList(GLOB.materials_list, /proc/cmp_typepaths_asc)
+ //Default Jobs
+ for(var/path in subtypesof(/datum/job))
+ var/datum/job/new_job = new path()
+ new_job.register()
+
// Keybindings
init_keybindings()
diff --git a/code/_globalvars/lists/jobs.dm b/code/_globalvars/lists/jobs.dm
new file mode 100644
index 0000000000000..181a397271012
--- /dev/null
+++ b/code/_globalvars/lists/jobs.dm
@@ -0,0 +1,3 @@
+GLOBAL_LIST_EMPTY(occupations)
+GLOBAL_LIST_EMPTY(name_occupations)
+GLOBAL_LIST_EMPTY(type_occupations)
diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm
deleted file mode 100644
index 03cf06e7776b4..0000000000000
--- a/code/controllers/subsystem/job.dm
+++ /dev/null
@@ -1,100 +0,0 @@
-SUBSYSTEM_DEF(job)
- name = "Jobs"
- init_order = INIT_ORDER_JOBS
- flags = SS_NO_FIRE
-
- var/list/occupations = list() //List of all jobs
- var/list/datum/job/name_occupations = list() //Dict of all jobs, keys are titles
- var/list/type_occupations = list() //Dict of all jobs, keys are types
-
-/datum/controller/subsystem/job/Initialize(timeofday)
- if(!occupations.len)
- SetupOccupations()
- return ..()
-
-/datum/controller/subsystem/job/proc/SetupOccupations()
- occupations = list()
- var/list/all_jobs = subtypesof(/datum/job)
- if(!all_jobs.len)
- to_chat(world, "Error setting up jobs, no job datums found")
- return 0
-
- for(var/J in all_jobs)
- var/datum/job/job = new J()
- if(!job)
- continue
- occupations += job
- name_occupations[job.name] = job
- type_occupations[J] = job
-
- return 1
-
-/datum/controller/subsystem/job/proc/GetJob(rank)
- if(!occupations.len)
- SetupOccupations()
- if(istype(rank, /datum/job))
- return rank
- return name_occupations[rank]
-
-/datum/controller/subsystem/job/proc/GetJobType(jobtype)
- if(!occupations.len)
- SetupOccupations()
- return type_occupations[jobtype]
-
-/datum/controller/subsystem/job/Recover()
- set waitfor = FALSE
- var/oldjobs = SSjob.occupations
-
-/atom/proc/join_player_here(mob/M)
- // By default, just place the mob on the same turf as the marker or whatever.
- M.forceMove(get_turf(src))
-
-/obj/structure/chair/join_player_here(mob/M)
- // Placing a mob in a chair will attempt to buckle it, or else fall back to default.
- if (isliving(M) && buckle_mob(M, FALSE, FALSE))
- return
- ..()
-
-/datum/controller/subsystem/job/proc/get_manifest()
- var/list/manifest_out = list()
- for(var/datum/overmap/ship/controlled/ship as anything in SSovermap.controlled_ships)
- if(!length(ship.manifest))
- continue
- manifest_out["[ship.name] ([ship.source_template.short_name])"] = list()
- for(var/crewmember in ship.manifest)
- var/datum/job/crewmember_job = ship.manifest[crewmember]
- manifest_out["[ship.name] ([ship.source_template.short_name])"] += list(list(
- "name" = crewmember,
- "rank" = crewmember_job.name,
- "officer" = crewmember_job.officer
- ))
-
- return manifest_out
-
-/datum/controller/subsystem/job/proc/get_manifest_html(monochrome = FALSE)
- var/list/manifest = get_manifest()
- var/dat = {"
-
-
- Name | Rank |
- "}
- for(var/department in manifest)
- var/list/entries = manifest[department]
- dat += "[department] |
"
- //JUST
- var/even = FALSE
- for(var/entry in entries)
- var/list/entry_list = entry
- dat += "[entry_list["name"]] | [entry_list["rank"]] |
"
- even = !even
-
- dat += "
"
- dat = replacetext(dat, "\n", "")
- dat = replacetext(dat, "\t", "")
- return dat
diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm
index 89f5fa727f67d..456ec9a37dfda 100644
--- a/code/controllers/subsystem/mapping.dm
+++ b/code/controllers/subsystem/mapping.dm
@@ -199,7 +199,7 @@ SUBSYSTEM_DEF(mapping)
var/value = job_slot_list[job]
var/slots
if(isnum(value))
- job_slot = SSjob.GetJob(job)
+ job_slot = GLOB.name_occupations[job]
slots = value
else if(islist(value))
var/datum/outfit/job_outfit = text2path(value["outfit"])
@@ -207,6 +207,7 @@ SUBSYSTEM_DEF(mapping)
stack_trace("Invalid job outfit! [value["outfit"]] on [S.name]'s config! Defaulting to assistant clothing.")
job_outfit = /datum/outfit/job/assistant
job_slot = new /datum/job(job, job_outfit)
+ job_slot.display_order = length(S.job_slots)
job_slot.wiki_page = value["wiki_page"]
job_slot.officer = value["officer"]
slots = value["slots"]
diff --git a/code/controllers/subsystem/overmap.dm b/code/controllers/subsystem/overmap.dm
index 61c0b5df0255c..d59dc0a2971ef 100644
--- a/code/controllers/subsystem/overmap.dm
+++ b/code/controllers/subsystem/overmap.dm
@@ -400,6 +400,49 @@ SUBSYSTEM_DEF(overmap)
ship_count++
return ship_count
+/datum/controller/subsystem/overmap/proc/get_manifest()
+ var/list/manifest_out = list()
+ for(var/datum/overmap/ship/controlled/ship as anything in controlled_ships)
+ if(!length(ship.manifest))
+ continue
+ manifest_out["[ship.name] ([ship.source_template.short_name])"] = list()
+ for(var/crewmember in ship.manifest)
+ var/datum/job/crewmember_job = ship.manifest[crewmember]
+ manifest_out["[ship.name] ([ship.source_template.short_name])"] += list(list(
+ "name" = crewmember,
+ "rank" = crewmember_job.name,
+ "officer" = crewmember_job.officer
+ ))
+
+ return manifest_out
+
+/datum/controller/subsystem/overmap/proc/get_manifest_html(monochrome = FALSE)
+ var/list/manifest = get_manifest()
+ var/dat = {"
+
+
+ Name | Rank |
+ "}
+ for(var/department in manifest)
+ var/list/entries = manifest[department]
+ dat += "[department] |
"
+ var/even = FALSE
+ for(var/entry in entries)
+ var/list/entry_list = entry
+ dat += "[entry_list["name"]] | [entry_list["rank"]] |
"
+ even = !even
+
+ dat += "
"
+ dat = replacetext(dat, "\n", "")
+ dat = replacetext(dat, "\t", "")
+ return dat
+
/datum/controller/subsystem/overmap/Recover()
if(istype(SSovermap.overmap_objects))
overmap_objects = SSovermap.overmap_objects
diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm
index c4e77d9e2bc17..07f93bc431fb3 100644
--- a/code/datums/world_topic.dm
+++ b/code/datums/world_topic.dm
@@ -269,7 +269,7 @@
/datum/world_topic/manifest/Run(list/input)
. = list()
- var/list/manifest = SSjob.get_manifest()
+ var/list/manifest = SSovermap.get_manifest()
for(var/department in manifest)
var/list/entries = manifest[department]
var/list/dept_entries = list()
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index e0f711640db3e..da031bb27818b 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -1635,3 +1635,8 @@
else
//We inline a MAPTEXT() here, because there's no good way to statically add to a string like this
active_hud.screentip_text.maptext = "[name]"
+
+///Called whenever a player is spawned on the same turf as this atom.
+/atom/proc/join_player_here(mob/M)
+ // By default, just place the mob on the same turf as the marker or whatever.
+ M.forceMove(get_turf(src))
diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm
index 7c97e4fa6d8ee..c47333a80a0d0 100644
--- a/code/game/machinery/computer/crew.dm
+++ b/code/game/machinery/computer/crew.dm
@@ -32,60 +32,9 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
/datum/crewmonitor
var/list/ui_sources = list() //List of user -> ui source
- var/list/jobs
var/list/data_by_z = list()
var/list/last_update = list()
-/datum/crewmonitor/New()
- . = ..()
-
- var/list/jobs = new/list()
- jobs["Captain"] = 00
- jobs["Head of Personnel"] = 02
- jobs["SolGov Representative"] = 05 //WS Edit - SolGov Rep
- jobs["Head of Security"] = 10
- jobs["Warden"] = 11
- jobs["Security Officer"] = 12
- jobs["Detective"] = 13
- jobs["Brig Physician"] = 14
- jobs["Chief Medical Officer"] = 20
- jobs["Chemist"] = 21
- jobs["Virologist"] = 22
- jobs["Medical Doctor"] = 23
- jobs["Paramedic"] = 24
- jobs["Research Director"] = 30
- jobs["Scientist"] = 31
- jobs["Roboticist"] = 32
- jobs["Geneticist"] = 33
- jobs["Chief Engineer"] = 40
- jobs["Station Engineer"] = 41
- jobs["Atmospheric Technician"] = 42
- jobs["Quartermaster"] = 51
- jobs["Shaft Miner"] = 52
- jobs["Cargo Technician"] = 53
- jobs["Bartender"] = 61
- jobs["Cook"] = 62
- jobs["Botanist"] = 63
- jobs["Curator"] = 64
- jobs["Chaplain"] = 65
- jobs["Clown"] = 66
- jobs["Mime"] = 67
- jobs["Janitor"] = 68
- jobs["Lawyer"] = 69
- jobs["Psychologist"] = 70
- jobs["Admiral"] = 200
- jobs["CentCom Commander"] = 210
- jobs["Custodian"] = 211
- jobs["Medical Officer"] = 212
- jobs["Research Officer"] = 213
- jobs["Emergency Response Team Commander"] = 220
- jobs["Security Response Officer"] = 221
- jobs["Engineer Response Officer"] = 222
- jobs["Medical Response Officer"] = 223
- jobs["Assistant"] = 999 //Unknowns/custom jobs should appear after civilians, and before assistants
-
- src.jobs = jobs
-
/datum/crewmonitor/Destroy()
return ..()
@@ -120,8 +69,8 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
var/obj/item/clothing/under/U
var/obj/item/card/id/I
var/turf/pos
- var/ijob
- var/name
+ var/ijob = JOB_DISPLAY_ORDER_DEFAULT
+ var/name = "Unknown"
var/assignment
var/oxydam
var/toxdam
@@ -156,30 +105,18 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
if (I)
name = I.registered_name
assignment = I.assignment
- if(I.assignment in jobs)
- ijob = jobs[I.assignment]
- else
- ijob = jobs["Unknown"]
- else
- name = "Unknown"
- assignment = ""
- ijob = 80
+ if(I.assignment in GLOB.name_occupations)
+ var/datum/job/assigned_job = GLOB.name_occupations[I.assignment]
+ ijob = assigned_job.display_order
if (nanite_sensors || U.sensor_mode >= SENSOR_LIVING)
life_status = ((H.stat < DEAD) ? TRUE : FALSE) //So anything less that dead is marked as alive. (Soft crit, concious, unconcious)
- else
- life_status = null
if (nanite_sensors || U.sensor_mode >= SENSOR_VITALS)
oxydam = round(H.getOxyLoss(),1)
toxdam = round(H.getToxLoss(),1)
burndam = round(H.getFireLoss(),1)
brutedam = round(H.getBruteLoss(),1)
- else
- oxydam = null
- toxdam = null
- burndam = null
- brutedam = null
if (nanite_sensors || U.sensor_mode >= SENSOR_COORDS)
if (!pos)
@@ -187,14 +124,10 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
area = get_area_name(H, TRUE)
pos_x = pos.x
pos_y = pos.y
- else
- area = null
- pos_x = null
- pos_y = null
results[++results.len] = list("name" = name, "assignment" = assignment, "ijob" = ijob, "life_status" = life_status, "oxydam" = oxydam, "toxdam" = toxdam, "burndam" = burndam, "brutedam" = brutedam, "area" = area, "pos_x" = pos_x, "pos_y" = pos_y, "can_track" = H.can_track(null))
- data_by_z["[z]"] = sortTim(results,/proc/sensor_compare)
+ data_by_z["[z]"] = sortTim(results, /proc/sensor_compare)
last_update["[z]"] = world.time
return results
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index dfa27f6f21f47..3c97186cba405 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -372,7 +372,7 @@ GLOBAL_LIST_EMPTY(PDAs)
if(41) //crew manifest
dat += "Crew Manifest
"
dat += ""
- dat += SSjob.get_manifest_html()
+ dat += SSovermap.get_manifest_html()
dat += ""
if(3)
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index d07a356107ff3..1e96a5b3ce01a 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -233,7 +233,7 @@ Code:
Send Signal
"}
if (41) //crew manifest
menu = "[PDAIMG(notes)] Crew Manifest
"
- menu += "[SSjob.get_manifest_html()]"
+ menu += "[SSovermap.get_manifest_html()]"
if (42) //status displays
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index a920c6f26760d..eeaaf0adc9820 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -311,9 +311,6 @@
new /obj/item/stack/rods(get_turf(loc), 2)
qdel(src)
-
-
-
/obj/item/chair/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
if(attack_type == UNARMED_ATTACK && prob(hit_reaction_chance))
owner.visible_message("[owner] fends off [attack_text] with [src]!")
@@ -332,6 +329,12 @@
C.Paralyze(20)
smash(user)
+/obj/structure/chair/join_player_here(mob/M)
+ // Placing a mob in a chair will attempt to buckle it, or else fall back to default.
+ if (isliving(M) && buckle_mob(M, FALSE, FALSE))
+ return
+ ..()
+
/obj/item/chair/greyscale
material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
origin_type = /obj/structure/chair/greyscale
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 641a070f1ddcf..254be079de1a6 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -102,7 +102,7 @@
return FALSE
var/datum/outfit/job/O = new outfit_type()
var/list/outfit_types = O.get_chameleon_disguise_info()
- var/datum/job/job_datum = SSjob.GetJobType(O.jobtype)
+ var/datum/job/job_datum = GLOB.type_occupations[O.jobtype]
for(var/V in user.chameleon_item_actions)
var/datum/action/item_action/chameleon/change/A = V
diff --git a/code/modules/jobs/job_exp.dm b/code/modules/jobs/job_exp.dm
index 9db25e4fc93a2..4813e4aa3c397 100644
--- a/code/modules/jobs/job_exp.dm
+++ b/code/modules/jobs/job_exp.dm
@@ -88,7 +88,7 @@ GLOBAL_PROTECT(exp_to_update)
play_records[exp_read.item[1]] = text2num(exp_read.item[2])
qdel(exp_read)
- for(var/rtype in SSjob.name_occupations)
+ for(var/rtype in GLOB.name_occupations)
if(!play_records[rtype])
play_records[rtype] = 0
for(var/rtype in GLOB.exp_specialmap)
@@ -139,7 +139,7 @@ GLOBAL_PROTECT(exp_to_update)
if(announce_changes)
to_chat(src,"You got: [minutes] Living EXP!")
if(mob.mind.assigned_role)
- for(var/job in SSjob.name_occupations)
+ for(var/job in GLOB.name_occupations)
if(mob.mind.assigned_role == job)
rolefound = TRUE
play_records[job] += minutes
diff --git a/code/modules/jobs/job_report.dm b/code/modules/jobs/job_report.dm
index 88c7f7ad1902c..cbc43f4110bfd 100644
--- a/code/modules/jobs/job_report.dm
+++ b/code/modules/jobs/job_report.dm
@@ -32,7 +32,7 @@
data["jobPlaytimes"] = list()
data["specialPlaytimes"] = list()
- for (var/job_name in SSjob.name_occupations)
+ for (var/job_name in GLOB.name_occupations)
var/playtime = play_records[job_name] ? text2num(play_records[job_name]) : 0
data["jobPlaytimes"][job_name] = playtime
diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm
index 93181f40ee18f..206c0746bc85c 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -33,6 +33,14 @@
if(new_name)
name = new_name
outfit = new_outfit
+ register()
+
+/datum/job/proc/register()
+ GLOB.occupations += src
+ if(name in GLOB.name_occupations)
+ return
+
+ GLOB.name_occupations[name] = src
//Only override this proc
//H is usually a human unless an /equip override transformed it
@@ -253,9 +261,9 @@
if(visualsOnly)
return
- var/datum/job/J = SSjob.GetJobType(jobtype)
+ var/datum/job/J = GLOB.type_occupations[jobtype]
if(!J)
- J = SSjob.GetJob(H.job)
+ J = GLOB.name_occupations[H.job]
var/obj/item/card/id/C = H.wear_id
if(istype(C))
diff --git a/code/modules/mob/dead/crew_manifest.dm b/code/modules/mob/dead/crew_manifest.dm
index 355af961f299a..c7ca52968f865 100644
--- a/code/modules/mob/dead/crew_manifest.dm
+++ b/code/modules/mob/dead/crew_manifest.dm
@@ -19,5 +19,5 @@
/datum/crew_manifest/ui_static_data(mob/user)
return list(
- "manifest" = SSjob.get_manifest()
+ "manifest" = SSovermap.get_manifest()
)
diff --git a/code/modules/mob/living/simple_animal/hostile/zombie.dm b/code/modules/mob/living/simple_animal/hostile/zombie.dm
index bbd925035043f..2de9fba686786 100644
--- a/code/modules/mob/living/simple_animal/hostile/zombie.dm
+++ b/code/modules/mob/living/simple_animal/hostile/zombie.dm
@@ -33,7 +33,7 @@
dummy_prefs.pref_species = new /datum/species/zombie
dummy_prefs.randomise[RANDOM_BODY] = TRUE
if(zombiejob)
- var/datum/job/J = SSjob.GetJob(zombiejob)
+ var/datum/job/J = GLOB.name_occupations[zombiejob]
var/datum/outfit/O
if(J.outfit)
O = new J.outfit
diff --git a/shiptest.dme b/shiptest.dme
index 6d120b60a3d0e..d1f9004ca3083 100644
--- a/shiptest.dme
+++ b/shiptest.dme
@@ -224,6 +224,7 @@
#include "code\_globalvars\lists\admin.dm"
#include "code\_globalvars\lists\client.dm"
#include "code\_globalvars\lists\flavor_misc.dm"
+#include "code\_globalvars\lists\jobs.dm"
#include "code\_globalvars\lists\keybindings.dm"
#include "code\_globalvars\lists\maintenance_loot.dm"
#include "code\_globalvars\lists\mapping.dm"
@@ -320,7 +321,6 @@
#include "code\controllers\subsystem\idlenpcpool.dm"
#include "code\controllers\subsystem\input.dm"
#include "code\controllers\subsystem\ipintel.dm"
-#include "code\controllers\subsystem\job.dm"
#include "code\controllers\subsystem\jukeboxes.dm"
#include "code\controllers\subsystem\language.dm"
#include "code\controllers\subsystem\lighting.dm"