From 0989ce2d6fdb3308c2f6fbba9e414547d8de8156 Mon Sep 17 00:00:00 2001 From: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Date: Sun, 5 Dec 2021 17:56:46 -0800 Subject: [PATCH] Remove job .tsx files from preferences menu, use compiled data instead (#63200) Removes every job .tsx file, and moves their necessary data over to the job datums themselves. This lowers the burden of both adding and removing jobs, and allows for jobs to be removed without touching any internal code (I'm specifically doing this for events) --- code/__DEFINES/jobs.dm | 4 + code/modules/client/preferences/README.md | 24 --- .../client/preferences/middleware/jobs.dm | 34 +++ code/modules/jobs/departments/departments.dm | 11 + code/modules/jobs/job_types/_job.dm | 11 + code/modules/jobs/job_types/ai.dm | 1 + code/modules/jobs/job_types/assistant.dm | 3 + .../jobs/job_types/atmospheric_technician.dm | 1 + code/modules/jobs/job_types/bartender.dm | 1 + code/modules/jobs/job_types/botanist.dm | 1 + code/modules/jobs/job_types/captain.dm | 6 +- .../jobs/job_types/cargo_technician.dm | 3 + code/modules/jobs/job_types/chaplain.dm | 2 + code/modules/jobs/job_types/chemist.dm | 2 + code/modules/jobs/job_types/chief_engineer.dm | 2 + .../jobs/job_types/chief_medical_officer.dm | 2 + code/modules/jobs/job_types/clown.dm | 1 + code/modules/jobs/job_types/cook.dm | 1 + code/modules/jobs/job_types/curator.dm | 2 + code/modules/jobs/job_types/cyborg.dm | 1 + code/modules/jobs/job_types/detective.dm | 2 + code/modules/jobs/job_types/geneticist.dm | 1 + .../jobs/job_types/head_of_personnel.dm | 2 + .../jobs/job_types/head_of_security.dm | 2 + code/modules/jobs/job_types/janitor.dm | 1 + code/modules/jobs/job_types/lawyer.dm | 2 + code/modules/jobs/job_types/medical_doctor.dm | 2 + code/modules/jobs/job_types/mime.dm | 1 + code/modules/jobs/job_types/paramedic.dm | 2 + code/modules/jobs/job_types/prisoner.dm | 2 + code/modules/jobs/job_types/psychologist.dm | 2 + code/modules/jobs/job_types/quartermaster.dm | 2 + .../jobs/job_types/research_director.dm | 3 + code/modules/jobs/job_types/roboticist.dm | 1 + code/modules/jobs/job_types/scientist.dm | 1 + .../jobs/job_types/security_officer.dm | 2 + code/modules/jobs/job_types/shaft_miner.dm | 2 + .../jobs/job_types/station_engineer.dm | 2 + code/modules/jobs/job_types/virologist.dm | 2 + code/modules/jobs/job_types/warden.dm | 3 + .../interfaces/PreferencesMenu/JobsPage.tsx | 201 ++++++++---------- .../tgui/interfaces/PreferencesMenu/data.ts | 13 ++ .../interfaces/PreferencesMenu/jobs/base.ts | 7 - .../PreferencesMenu/jobs/departments.ts | 40 ---- .../PreferencesMenu/jobs/jobs/ai.ts | 10 - .../PreferencesMenu/jobs/jobs/assistant.ts | 11 - .../jobs/jobs/atmospheric_technician.ts | 11 - .../PreferencesMenu/jobs/jobs/bartender.ts | 10 - .../PreferencesMenu/jobs/jobs/botanist.ts | 10 - .../PreferencesMenu/jobs/jobs/captain.ts | 12 -- .../jobs/jobs/cargo_technician.ts | 12 -- .../PreferencesMenu/jobs/jobs/chaplain.ts | 11 - .../PreferencesMenu/jobs/jobs/chemist.ts | 11 - .../jobs/jobs/chief_engineer.ts | 11 - .../jobs/jobs/chief_medical_officer.ts | 11 - .../PreferencesMenu/jobs/jobs/clown.ts | 11 - .../PreferencesMenu/jobs/jobs/cook.ts | 10 - .../PreferencesMenu/jobs/jobs/curator.ts | 11 - .../PreferencesMenu/jobs/jobs/cyborg.ts | 10 - .../PreferencesMenu/jobs/jobs/detective.ts | 11 - .../PreferencesMenu/jobs/jobs/geneticist.ts | 11 - .../jobs/jobs/head_of_personnel.ts | 11 - .../jobs/jobs/head_of_security.ts | 12 -- .../PreferencesMenu/jobs/jobs/janitor.ts | 11 - .../PreferencesMenu/jobs/jobs/lawyer.ts | 11 - .../jobs/jobs/medical_doctor.ts | 11 - .../PreferencesMenu/jobs/jobs/mime.ts | 10 - .../PreferencesMenu/jobs/jobs/paramedic.ts | 11 - .../PreferencesMenu/jobs/jobs/prisoner.ts | 10 - .../PreferencesMenu/jobs/jobs/psychologist.ts | 11 - .../jobs/jobs/quartermaster.ts | 11 - .../jobs/jobs/research_director.ts | 12 -- .../PreferencesMenu/jobs/jobs/roboticist.ts | 10 - .../PreferencesMenu/jobs/jobs/scientist.ts | 10 - .../jobs/jobs/security_officer.ts | 11 - .../PreferencesMenu/jobs/jobs/shaft_miner.ts | 11 - .../jobs/jobs/station_engineer.ts | 11 - .../PreferencesMenu/jobs/jobs/virologist.ts | 11 - .../PreferencesMenu/jobs/jobs/warden.ts | 12 -- .../styles/interfaces/PreferencesMenu.scss | 3 +- 80 files changed, 232 insertions(+), 563 deletions(-) delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/base.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/departments.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/ai.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/assistant.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/atmospheric_technician.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/bartender.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/botanist.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/captain.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/cargo_technician.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chaplain.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chemist.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chief_engineer.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chief_medical_officer.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/clown.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/cook.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/curator.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/cyborg.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/detective.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/geneticist.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/head_of_personnel.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/head_of_security.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/janitor.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/lawyer.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/medical_doctor.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/mime.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/paramedic.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/prisoner.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/psychologist.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/quartermaster.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/research_director.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/roboticist.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/scientist.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/security_officer.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/shaft_miner.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/station_engineer.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/virologist.ts delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/warden.ts diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 98d0fda4965..64215f3e6bf 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -67,6 +67,10 @@ #define DEPARTMENT_MEDICAL "Medical" #define DEPARTMENT_BITFLAG_SILICON (1<<7) #define DEPARTMENT_SILICON "Silicon" +#define DEPARTMENT_BITFLAG_ASSISTANT (1<<8) +#define DEPARTMENT_ASSISTANT "Assistant" +#define DEPARTMENT_BITFLAG_CAPTAIN (1<<9) +#define DEPARTMENT_CAPTAIN "Captain" /* Job datum job_flags */ /// Whether the mob is announced on arrival. diff --git a/code/modules/client/preferences/README.md b/code/modules/client/preferences/README.md index c2d238f34db..4ef49a74602 100644 --- a/code/modules/client/preferences/README.md +++ b/code/modules/client/preferences/README.md @@ -363,30 +363,6 @@ Middleware can inject its own data at several points, such as providing new UI a --- -## Jobs - -Every job must have an associated `.ts` file so that the UI knows where to place it. - -Create a file in `tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/`. - -This will specify the description and department of the job. Here is the details for the medical doctor: - -```ts -import { Job } from "../base"; -import { Service } from "../departments"; - -const Cook: Job = { - name: "Cook", - // If you need more room, use `multiline` - description: "Serve food, cook meat, keep the crew fed.", - department: Service, -}; - -export default Cook; -``` - ---- - ## Antagonists In order to make an antagonist selectable, you must do a few things: diff --git a/code/modules/client/preferences/middleware/jobs.dm b/code/modules/client/preferences/middleware/jobs.dm index 50e8b4b0d45..5812976218a 100644 --- a/code/modules/client/preferences/middleware/jobs.dm +++ b/code/modules/client/preferences/middleware/jobs.dm @@ -25,6 +25,40 @@ return TRUE +/datum/preference_middleware/jobs/get_constant_data() + var/list/data = list() + + var/list/departments = list() + var/list/jobs = list() + + for (var/datum/job/job as anything in SSjob.joinable_occupations) + var/datum/job_department/department_type = job.department_for_prefs || job.departments_list?[1] + if (isnull(department_type)) + stack_trace("[job] does not have a department set, yet is a joinable occupation!") + continue + + if (isnull(job.description)) + stack_trace("[job] does not have a description set, yet is a joinable occupation!") + continue + + var/department_name = initial(department_type.department_name) + if (isnull(departments[department_name])) + var/datum/job/department_head_type = initial(department_type.department_head) + + departments[department_name] = list( + "head" = department_head_type && initial(department_head_type.title), + ) + + jobs[job.title] = list( + "description" = job.description, + "department" = department_name, + ) + + data["departments"] = departments + data["jobs"] = jobs + + return data + /datum/preference_middleware/jobs/get_ui_data(mob/user) var/list/data = list() diff --git a/code/modules/jobs/departments/departments.dm b/code/modules/jobs/departments/departments.dm index a6c798c622a..ba7a0f8e5f5 100644 --- a/code/modules/jobs/departments/departments.dm +++ b/code/modules/jobs/departments/departments.dm @@ -23,6 +23,17 @@ department_jobs += job job.departments_bitflags |= department_bitflags +/// A special assistant only department, primarily for use by the preferences menu +/datum/job_department/assistant + department_name = DEPARTMENT_ASSISTANT + department_bitflags = DEPARTMENT_BITFLAG_ASSISTANT + // Don't add department_head! Assistants names should not be in bold. + +/// A special captain only department, for use by the preferences menu +/datum/job_department/captain + department_name = DEPARTMENT_CAPTAIN + department_bitflags = DEPARTMENT_BITFLAG_CAPTAIN + department_head = /datum/job/captain /datum/job_department/command department_name = DEPARTMENT_COMMAND diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index debc8e6bbe8..9d3a5cc628c 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -2,6 +2,10 @@ /// The name of the job , used for preferences, bans and more. Make sure you know what you're doing before changing this. var/title = "NOPE" + /// The description of the job, used for preferences menu. + /// Keep it short and useful. Avoid in-jokes, these are for new players. + var/description + /// Innate skill levels unlocked at roundstart. Based on config.jobs_have_minimal_access config setting, for example with a skeleton crew. Format is list(/datum/skill/foo = SKILL_EXP_NOVICE) with exp as an integer or as per code/_DEFINES/skills.dm var/list/skills /// Innate skill levels unlocked at roundstart. Based on config.jobs_have_minimal_access config setting, for example with a full crew. Format is list(/datum/skill/foo = SKILL_EXP_NOVICE) with exp as an integer or as per code/_DEFINES/skills.dm @@ -79,7 +83,14 @@ /// Bitfield of departments this job belongs to. These get setup when adding the job into the department, on job datum creation. var/departments_bitflags = NONE + + /// If specified, this department will be used for the preferences menu. + var/datum/job_department/department_for_prefs = null + /// Lazy list with the departments this job belongs to. + /// Required to be set for playable jobs. + /// The first department will be used in the preferences menu, + /// unless department_for_prefs is set. var/list/departments_list = null /// Should this job be allowed to be picked for the bureaucratic error event? diff --git a/code/modules/jobs/job_types/ai.dm b/code/modules/jobs/job_types/ai.dm index 11a5792c26d..b09357a34cb 100644 --- a/code/modules/jobs/job_types/ai.dm +++ b/code/modules/jobs/job_types/ai.dm @@ -1,5 +1,6 @@ /datum/job/ai title = "AI" + description = "Assist the crew, follow your laws, coordinate your cyborgs." auto_deadmin_role_flags = DEADMIN_POSITION_SILICON faction = FACTION_STATION total_positions = 1 diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index 47ee0c39771..d8274d48c12 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -5,6 +5,7 @@ Assistant */ /datum/job/assistant title = "Assistant" + description = "Get your space legs, assist people, ask the HoP to give you a job." faction = FACTION_STATION total_positions = 5 spawn_positions = 5 @@ -20,6 +21,8 @@ Assistant paycheck_department = ACCOUNT_CIV display_order = JOB_DISPLAY_ORDER_ASSISTANT + department_for_prefs = /datum/job_department/assistant + family_heirlooms = list(/obj/item/storage/toolbox/mechanical/old/heirloom, /obj/item/clothing/gloves/cut/heirloom) mail_goodies = list( diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm index 6d541fce0dd..5e0bcff7cc7 100644 --- a/code/modules/jobs/job_types/atmospheric_technician.dm +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -1,5 +1,6 @@ /datum/job/atmospheric_technician title = "Atmospheric Technician" + description = "Ensure the air is breathable on the station, fill oxygen tanks, fight fires, purify the air." department_head = list("Chief Engineer") faction = FACTION_STATION total_positions = 3 diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm index 21ef624e673..24c1efbcdb9 100644 --- a/code/modules/jobs/job_types/bartender.dm +++ b/code/modules/jobs/job_types/bartender.dm @@ -1,5 +1,6 @@ /datum/job/bartender title = "Bartender" + description = "Serve booze, mix drinks, keep the crew drunk." department_head = list("Head of Personnel") faction = FACTION_STATION total_positions = 1 diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm index 45ecb044863..c7417e6d9c5 100644 --- a/code/modules/jobs/job_types/botanist.dm +++ b/code/modules/jobs/job_types/botanist.dm @@ -1,5 +1,6 @@ /datum/job/botanist title = "Botanist" + description = "Grow plants for the cook, for medicine, and for recreation." department_head = list("Head of Personnel") faction = FACTION_STATION total_positions = 3 diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 36a082fee5f..7abe4b216e3 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -1,5 +1,8 @@ /datum/job/captain title = "Captain" + description = "Be responsible for the station, manage your Heads of Staff, \ + keep the crew alive, be prepared to do anything and everything or die \ + horribly trying." auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY department_head = list("CentCom") faction = FACTION_STATION @@ -23,9 +26,10 @@ liver_traits = list(TRAIT_ROYAL_METABOLISM) display_order = JOB_DISPLAY_ORDER_CAPTAIN + department_for_prefs = /datum/job_department/captain departments_list = list( /datum/job_department/command, - ) + ) family_heirlooms = list(/obj/item/reagent_containers/food/drinks/flask/gold) diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index 0b902db0745..befb99b5a62 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -1,5 +1,8 @@ /datum/job/cargo_technician title = "Cargo Technician" + description = "Distribute supplies to the departments that ordered them, \ + collect empty crates, load and unload the supply shuttle, \ + ship bounty cubes." department_head = list("Head of Personnel") faction = FACTION_STATION total_positions = 3 diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index d1f290d81d9..2a7c9b3a32d 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -1,5 +1,7 @@ /datum/job/chaplain title = "Chaplain" + description = "Hold services and funerals, cremate people, preach your \ + religion, protect the crew against cults." department_head = list("Head of Personnel") faction = FACTION_STATION total_positions = 1 diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index a2fec6f059e..124d42df720 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -1,5 +1,7 @@ /datum/job/chemist title = "Chemist" + description = "Supply the doctors with chemicals, make medicine, as well as \ + less likable substances in the comfort of a fully reinforced room." department_head = list("Chief Medical Officer") faction = FACTION_STATION total_positions = 2 diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index ccfcd865598..c7cf4b62613 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -1,5 +1,7 @@ /datum/job/chief_engineer title = "Chief Engineer" + description = "Coordinate engineering, ensure equipment doesn't get stolen, \ + make sure the Supermatter doesn't blow up, maintain telecommunications." auto_deadmin_role_flags = DEADMIN_POSITION_HEAD department_head = list("Captain") head_announce = list("Engineering") diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index 5bdd7138a05..8c1f9046a0a 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -1,5 +1,7 @@ /datum/job/chief_medical_officer title = "Chief Medical Officer" + description = "Coordinate doctors and other medbay employees, ensure they \ + know how to save lives, check for injuries on the crew monitor." department_head = list("Captain") auto_deadmin_role_flags = DEADMIN_POSITION_HEAD head_announce = list(RADIO_CHANNEL_MEDICAL) diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index 21d2e00bd3b..a87c906380e 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -1,5 +1,6 @@ /datum/job/clown title = "Clown" + description = "Entertain the crew, make bad jokes, go on a holy quest to find bananium, HONK!" department_head = list("Head of Personnel") faction = FACTION_STATION total_positions = 1 diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm index 90356bb4fdd..37ddab85974 100644 --- a/code/modules/jobs/job_types/cook.dm +++ b/code/modules/jobs/job_types/cook.dm @@ -1,5 +1,6 @@ /datum/job/cook title = "Cook" + description = "Serve food, cook meat, keep the crew fed." department_head = list("Head of Personnel") faction = FACTION_STATION total_positions = 2 diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm index f9a93b05d61..3b41130afa5 100644 --- a/code/modules/jobs/job_types/curator.dm +++ b/code/modules/jobs/job_types/curator.dm @@ -1,5 +1,7 @@ /datum/job/curator title = "Curator" + description = "Read and write books and hand them to people, stock \ + bookshelves, report on station news." department_head = list("Head of Personnel") faction = FACTION_STATION total_positions = 1 diff --git a/code/modules/jobs/job_types/cyborg.dm b/code/modules/jobs/job_types/cyborg.dm index 5faeaa79e52..6c75dfa4698 100644 --- a/code/modules/jobs/job_types/cyborg.dm +++ b/code/modules/jobs/job_types/cyborg.dm @@ -1,5 +1,6 @@ /datum/job/cyborg title = "Cyborg" + description = "Assist the crew, follow your laws, obey your AI." auto_deadmin_role_flags = DEADMIN_POSITION_SILICON faction = FACTION_STATION total_positions = 0 diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index 1a213d76961..879d0fd901a 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -1,5 +1,7 @@ /datum/job/detective title = "Detective" + description = "Investigate crimes, gather evidence, perform interrogations, \ + look badass, smoke cigarettes." auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY department_head = list("Head of Security") faction = FACTION_STATION diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm index 0e7e271bf96..dec3065b1f8 100644 --- a/code/modules/jobs/job_types/geneticist.dm +++ b/code/modules/jobs/job_types/geneticist.dm @@ -1,5 +1,6 @@ /datum/job/geneticist title = "Geneticist" + description = "Alter genomes, turn monkeys into humans (and vice-versa), and make DNA backups." department_head = list("Research Director") faction = FACTION_STATION total_positions = 2 diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index f778f98e0fc..3aad3c51cef 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -1,5 +1,7 @@ /datum/job/head_of_personnel title = "Head of Personnel" + description = "Alter access on ID cards, manage civil and supply departments, \ + protect Ian, run the station when the captain dies." auto_deadmin_role_flags = DEADMIN_POSITION_HEAD department_head = list("Captain") head_announce = list(RADIO_CHANNEL_SUPPLY, RADIO_CHANNEL_SERVICE) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index f748338c720..c599c7e162d 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -1,5 +1,7 @@ /datum/job/head_of_security title = "Head of Security" + description = "Coordinate security personnel, ensure they are not corrupt, \ + make sure every department is protected." auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY department_head = list("Captain") head_announce = list(RADIO_CHANNEL_SECURITY) diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm index bb4e7792e5e..cc00c5cef5d 100644 --- a/code/modules/jobs/job_types/janitor.dm +++ b/code/modules/jobs/job_types/janitor.dm @@ -1,5 +1,6 @@ /datum/job/janitor title = "Janitor" + description = "Clean up trash and blood. Replace broken lights. Slip people over." department_head = list("Head of Personnel") faction = FACTION_STATION total_positions = 2 diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm index 84240b07e85..1d9bfbff66a 100644 --- a/code/modules/jobs/job_types/lawyer.dm +++ b/code/modules/jobs/job_types/lawyer.dm @@ -1,5 +1,7 @@ /datum/job/lawyer title = "Lawyer" + description = "Advocate for prisoners, create law-binding contracts, \ + ensure Security is following protocol and Space Law." department_head = list("Head of Personnel") faction = FACTION_STATION total_positions = 2 diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index b273536dd05..454895f1f26 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -1,5 +1,7 @@ /datum/job/doctor title = "Medical Doctor" + description = "Save lives, run around the station looking for victims, \ + scan everyone in sight" department_head = list("Chief Medical Officer") faction = FACTION_STATION total_positions = 5 diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm index e5c15cd3df7..d12d518da6f 100644 --- a/code/modules/jobs/job_types/mime.dm +++ b/code/modules/jobs/job_types/mime.dm @@ -1,5 +1,6 @@ /datum/job/mime title = "Mime" + description = "..." department_head = list("Head of Personnel") faction = FACTION_STATION total_positions = 1 diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm index 960799e0264..1be68a42344 100644 --- a/code/modules/jobs/job_types/paramedic.dm +++ b/code/modules/jobs/job_types/paramedic.dm @@ -1,5 +1,7 @@ /datum/job/paramedic title = "Paramedic" + description = "Run around the station looking for patients, respond to \ + emergencies, give patients a roller bed ride to medbay." department_head = list("Chief Medical Officer") faction = FACTION_STATION total_positions = 2 diff --git a/code/modules/jobs/job_types/prisoner.dm b/code/modules/jobs/job_types/prisoner.dm index 41d6b18f2c5..85518ff30b4 100644 --- a/code/modules/jobs/job_types/prisoner.dm +++ b/code/modules/jobs/job_types/prisoner.dm @@ -1,5 +1,6 @@ /datum/job/prisoner title = "Prisoner" + description = "Keep yourself occupied in permabrig." department_head = list("The Security Team") faction = FACTION_STATION total_positions = 0 @@ -13,6 +14,7 @@ plasmaman_outfit = /datum/outfit/plasmaman/prisoner display_order = JOB_DISPLAY_ORDER_PRISONER + department_for_prefs = /datum/job_department/security exclusive_mail_goodies = TRUE mail_goodies = list ( diff --git a/code/modules/jobs/job_types/psychologist.dm b/code/modules/jobs/job_types/psychologist.dm index 99efa2af54b..16d6d81f5cd 100644 --- a/code/modules/jobs/job_types/psychologist.dm +++ b/code/modules/jobs/job_types/psychologist.dm @@ -1,5 +1,7 @@ /datum/job/psychologist title = "Psychologist" + description = "Advocate sanity, self-esteem, and teamwork in a station \ + staffed with headcases." department_head = list("Head of Personnel","Chief Medical Officer") faction = FACTION_STATION total_positions = 1 diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index 80705f5cf07..52b6239feda 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -1,5 +1,7 @@ /datum/job/quartermaster title = "Quartermaster" + description = "Coordinate cargo technicians and shaft miners, assist with \ + economical purchasing." department_head = list("Head of Personnel") faction = FACTION_STATION total_positions = 1 diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index 7ae43756273..e14e4a9e0f0 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -1,5 +1,8 @@ /datum/job/research_director title = "Research Director" + description = "Supervise research efforts, ensure Robotics is in working \ + order, make sure the AI and its Cyborgs aren't rogue, replacing them if \ + they are" auto_deadmin_role_flags = DEADMIN_POSITION_HEAD department_head = list("Captain") head_announce = list("Science") diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm index a27dcb90751..d8a47cf62f7 100644 --- a/code/modules/jobs/job_types/roboticist.dm +++ b/code/modules/jobs/job_types/roboticist.dm @@ -1,5 +1,6 @@ /datum/job/roboticist title = "Roboticist" + description = "Build and repair the AI and cyborgs, create mechs." department_head = list("Research Director") faction = FACTION_STATION total_positions = 2 diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm index fc14488a15c..c198986badd 100644 --- a/code/modules/jobs/job_types/scientist.dm +++ b/code/modules/jobs/job_types/scientist.dm @@ -1,5 +1,6 @@ /datum/job/scientist title = "Scientist" + description = "Do experiments, perform research, feed the slimes, make bombs." department_head = list("Research Director") faction = FACTION_STATION total_positions = 5 diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index 3605f5ab292..0edd741c173 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -1,5 +1,7 @@ /datum/job/security_officer title = "Security Officer" + description = "Protect company assets, follow the Standard Operating \ + Procedure, eat donuts." auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY department_head = list("Head of Security") faction = FACTION_STATION diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index f97218b5a0d..76c52cb15d9 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -1,5 +1,7 @@ /datum/job/shaft_miner title = "Shaft Miner" + description = "Travel to strange lands. Mine ores. \ + Meet strange creatures. Kill them for their gold." department_head = list("Head of Personnel") faction = FACTION_STATION total_positions = 3 diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index 755af20efc9..641dd93d17e 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -1,5 +1,7 @@ /datum/job/station_engineer title = "Station Engineer" + description = "Start the Supermatter, wire the solars, repair station hull \ + and wiring damage." department_head = list("Chief Engineer") faction = FACTION_STATION total_positions = 5 diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm index cccfee73682..6306ed17146 100644 --- a/code/modules/jobs/job_types/virologist.dm +++ b/code/modules/jobs/job_types/virologist.dm @@ -1,5 +1,7 @@ /datum/job/virologist title = "Virologist" + description = "Study the effects of various diseases and synthesize a \ + vaccine for them. Engineer beneficial viruses." department_head = list("Chief Medical Officer") faction = FACTION_STATION total_positions = 1 diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index a8e21cb750b..46d69c75d0f 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -1,5 +1,8 @@ /datum/job/warden title = "Warden" + description = "Watch over the Brig and Prison Wing, release prisoners when \ + their time is up, issue equipment to security, be a security officer when \ + they all eventually die." auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY department_head = list("Head of Security") faction = FACTION_STATION diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/JobsPage.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/JobsPage.tsx index 46f6fa2bf63..919e5c3876e 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/JobsPage.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/JobsPage.tsx @@ -1,51 +1,21 @@ -import { binaryInsertWith } from "common/collections"; +import { sortBy } from "common/collections"; import { classes } from "common/react"; -import { InfernoNode } from "inferno"; +import { InfernoNode, SFC } from "inferno"; import { useBackend } from "../../backend"; import { Box, Button, Dropdown, Stack, Tooltip } from "../../components"; -import { createSetPreference, JoblessRole, JobPriority, PreferencesMenuData } from "./data"; -import { Job } from "./jobs/base"; -import * as Departments from "./jobs/departments"; +import { createSetPreference, Job, JoblessRole, JobPriority, PreferencesMenuData } from "./data"; +import { ServerPreferencesFetcher } from "./ServerPreferencesFetcher"; -const requireJob = require.context("./jobs/jobs", false, /.ts$/); -const jobsByDepartment = new Map(); - -const binaryInsertJob = binaryInsertWith((job: Job) => { - return job.name; -}); +const sortJobs = ( + entries: [string, Job][], + head?: string, +) => sortBy<[string, Job]>( + ([key, _]) => key === head ? -1 : 1, + ([key, _]) => key, +)(entries); const PRIORITY_BUTTON_SIZE = "18px"; -for (const jobKey of requireJob.keys()) { - const job = requireJob<{ - default?: Job, - }>(jobKey).default; - - if (!job) { - continue; - } - - - let departmentInfo = jobsByDepartment.get(job.department); - if (departmentInfo === undefined) { - departmentInfo = { - jobs: [], - head: undefined, - }; - - jobsByDepartment.set(job.department, departmentInfo); - } - - if (job.department.head === job.name) { - departmentInfo.head = job; - } else { - departmentInfo.jobs = binaryInsertJob(departmentInfo.jobs, job); - } -} - const PriorityButton = (props: { name: string, color: string, @@ -210,18 +180,19 @@ const PriorityButtons = (props: { const JobRow = (props: { className?: string, job: Job, + name: string, }, context) => { const { data } = useBackend(context); - const { job } = props; + const { className, job, name } = props; - const isOverflow = data.overflow_role === job.name; - const priority = data.job_preferences[job.name]; + const isOverflow = data.overflow_role === name; + const priority = data.job_preferences[name]; - const createSetPriority = createCreateSetPriorityFromName(context, job.name); + const createSetPriority = createCreateSetPriorityFromName(context, name); const experienceNeeded = data.job_required_experience - && data.job_required_experience[job.name]; - const daysLeft = data.job_days_left ? data.job_days_left[job.name] : 0; + && data.job_required_experience[name]; + const daysLeft = data.job_days_left ? data.job_days_left[name] : 0; let rightSide: InfernoNode; @@ -244,7 +215,7 @@ const JobRow = (props: { ); - } else if (data.job_bans && data.job_bans.indexOf(job.name) !== -1) { + } else if (data.job_bans && data.job_bans.indexOf(name) !== -1) { rightSide = ( @@ -261,7 +232,7 @@ const JobRow = (props: { } return ( - @@ -273,7 +244,7 @@ const JobRow = (props: { "padding-left": "0.3em", }}> - {props.job.name} + {name} @@ -285,38 +256,55 @@ const JobRow = (props: { ); }; -const Department = (props: { - department: Departments.Department, - name: string, -}) => { - const { department, name } = props; - const jobs = jobsByDepartment.get(department); +const Department: SFC<{ department: string}> = (props) => { + const { children, department: name } = props; const className = `PreferencesMenu__Jobs__departments--${name}`; - if (!jobs) { - return ( - - ERROR: Department {name} could not be found! - - ); - } - return ( - - - {jobs.head - && } - {jobs.jobs.map((job) => { - if (job === jobs.head) { - return null; - } + { + if (!data) { + return null; + } - return ; - })} - - + const { departments, jobs } = data.jobs; + const department = departments[name]; + + // This isn't necessarily a bug, it's like this + // so that you can remove entire departments without + // having to edit the UI. + // This is used in events, for instance. + if (!department) { + return null; + } + + const jobsForDepartment = sortJobs( + Object.entries(jobs).filter( + ([_, job]) => job.department === name + ), + department.head + ); + + return ( + + + {jobsForDepartment.map(([name, job]) => { + return (); + })} + + + {children} + + ); + }} + /> ); }; @@ -386,36 +374,35 @@ export const JobsPage = () => { - + + + - + + + + + + + - - - - - - - - + department="Assistant" + /> - - - - - + + + + + + + + + + @@ -423,15 +410,13 @@ export const JobsPage = () => { - - - + + + + department="Medical" + /> diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/data.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/data.ts index 6fda3390816..05917bc9e0a 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/data.ts +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/data.ts @@ -48,6 +48,15 @@ export type ServerSpeciesData = { toxic_food: Food[]; }; +export type Department = { + head?: string; +}; + +export type Job = { + description: string; + department: string; +}; + export type Quirk = { description: string; icon: string; @@ -145,6 +154,10 @@ export type PreferencesMenuData = { }; export type ServerData = { + jobs: { + departments: Record; + jobs: Record; + }; names: { types: Record; }; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/base.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/base.ts deleted file mode 100644 index ced244afee6..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/base.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Department } from "./departments"; - -export type Job = { - name: string; - description: string; - department: Department; -}; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/departments.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/departments.ts deleted file mode 100644 index bbd7aa9325f..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/departments.ts +++ /dev/null @@ -1,40 +0,0 @@ -export type Department = { - head?: string; -}; - -export const Assistant: Department = { - // "Assistant" is not the head of its own department, as otherwise - // it would show as large and bold. -}; - -export const Captain: Department = { - head: "Captain", -}; - -export const Cargo: Department = { - head: "Quartermaster", -}; - -export const Engineering: Department = { - head: "Chief Engineer", -}; - -export const Medical: Department = { - head: "Chief Medical Officer", -}; - -export const Security: Department = { - head: "Head of Security", -}; - -export const Service: Department = { - head: "Head of Personnel", -}; - -export const Science: Department = { - head: "Research Director", -}; - -export const Silicon: Department = { - head: "AI", -}; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/ai.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/ai.ts deleted file mode 100644 index eaf932b0b6d..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/ai.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Job } from "../base"; -import { Silicon } from "../departments"; - -const AI: Job = { - name: "AI", - description: "Assist the crew, follow your laws, coordinate your cyborgs.", - department: Silicon, -}; - -export default AI; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/assistant.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/assistant.ts deleted file mode 100644 index 66d034f1c3a..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/assistant.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Assistant as DepartmentAssistant } from "../departments"; - -const Assistant: Job = { - name: "Assistant", - description: "Get your space legs, assist people, ask the HoP to \ - give you a job.", - department: DepartmentAssistant, -}; - -export default Assistant; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/atmospheric_technician.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/atmospheric_technician.ts deleted file mode 100644 index 9b9f17199e2..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/atmospheric_technician.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Engineering } from "../departments"; - -const AtmosphericTechnician: Job = { - name: "Atmospheric Technician", - description: "Ensure the air is breathable on the station, fill oxygen \ - tanks, fight fires, purify the air.", - department: Engineering, -}; - -export default AtmosphericTechnician; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/bartender.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/bartender.ts deleted file mode 100644 index 0d5670f89f9..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/bartender.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Job } from "../base"; -import { Service } from "../departments"; - -const Bartender: Job = { - name: "Bartender", - description: "Serve booze, mix drinks, keep the crew drunk.", - department: Service, -}; - -export default Bartender; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/botanist.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/botanist.ts deleted file mode 100644 index 5f00a5faefa..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/botanist.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Job } from "../base"; -import { Service } from "../departments"; - -const Botanist: Job = { - name: "Botanist", - description: "Grow plants for the cook, for medicine, and for recreation.", - department: Service, -}; - -export default Botanist; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/captain.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/captain.ts deleted file mode 100644 index 893b7e4907c..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/captain.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Job } from "../base"; -import { Captain as DepartmentCaptain } from "../departments"; - -const Captain: Job = { - name: "Captain", - description: "Be responsible for the station, manage your Heads of Staff, \ - keep the crew alive, be prepared to do anything and everything or die \ - horribly trying.", - department: DepartmentCaptain, -}; - -export default Captain; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/cargo_technician.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/cargo_technician.ts deleted file mode 100644 index 8666c6e1fe7..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/cargo_technician.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Job } from "../base"; -import { Cargo } from "../departments"; - -const CargoTechnician: Job = { - name: "Cargo Technician", - description: "Distribute supplies to the departments that ordered them, \ - collect empty crates, load and unload the supply shuttle, \ - ship bounty cubes.", - department: Cargo, -}; - -export default CargoTechnician; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chaplain.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chaplain.ts deleted file mode 100644 index da105113c0c..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chaplain.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Service } from "../departments"; - -const Chaplain: Job = { - name: "Chaplain", - description: "Hold services and funerals, cremate people, preach your \ - religion, protect the crew against cults.", - department: Service, -}; - -export default Chaplain; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chemist.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chemist.ts deleted file mode 100644 index f53bed85525..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chemist.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Medical } from "../departments"; - -const Chemist: Job = { - name: "Chemist", - description: "Supply the doctors with chemicals, make medicine, as well as \ - less likable substances in the comfort of a fully reinforced room.", - department: Medical, -}; - -export default Chemist; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chief_engineer.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chief_engineer.ts deleted file mode 100644 index 177c31bd63c..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chief_engineer.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Engineering } from "../departments"; - -const ChiefEngineer: Job = { - name: "Chief Engineer", - description: "Coordinate engineering, ensure equipment doesn't get stolen, \ - make sure the Supermatter doesn't blow up, maintain telecommunications.", - department: Engineering, -}; - -export default ChiefEngineer; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chief_medical_officer.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chief_medical_officer.ts deleted file mode 100644 index 15a152ed6ac..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/chief_medical_officer.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Medical } from "../departments"; - -const ChiefMedicalOfficer: Job = { - name: "Chief Medical Officer", - description: "Coordinate doctors and other medbay employees, ensure they \ - know how to save lives, check for injuries on the crew monitor.", - department: Medical, -}; - -export default ChiefMedicalOfficer; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/clown.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/clown.ts deleted file mode 100644 index 253a6aa3c1b..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/clown.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Service } from "../departments"; - -const Clown: Job = { - name: "Clown", - description: "Entertain the crew, make bad jokes, go on a holy quest to find \ - bananium, HONK!", - department: Service, -}; - -export default Clown; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/cook.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/cook.ts deleted file mode 100644 index d072cb193e4..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/cook.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Job } from "../base"; -import { Service } from "../departments"; - -const Cook: Job = { - name: "Cook", - description: "Serve food, cook meat, keep the crew fed.", - department: Service, -}; - -export default Cook; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/curator.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/curator.ts deleted file mode 100644 index 454c93fb426..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/curator.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Service } from "../departments"; - -const Curator: Job = { - name: "Curator", - description: "Read and write books and hand them to people, stock \ - bookshelves, report on station news.", - department: Service, -}; - -export default Curator; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/cyborg.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/cyborg.ts deleted file mode 100644 index 4969aaa3199..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/cyborg.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Job } from "../base"; -import { Silicon } from "../departments"; - -const Cyborg: Job = { - name: "Cyborg", - description: "Assist the crew, follow your laws, obey your AI.", - department: Silicon, -}; - -export default Cyborg; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/detective.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/detective.ts deleted file mode 100644 index 408dcb0978f..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/detective.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Security } from "../departments"; - -const Detective: Job = { - name: "Detective", - description: "Investigate crimes, gather evidence, perform interrogations, \ - look badass, smoke cigarettes.", - department: Security, -}; - -export default Detective; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/geneticist.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/geneticist.ts deleted file mode 100644 index e36e08c3116..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/geneticist.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Science } from "../departments"; - -const Geneticist: Job = { - name: "Geneticist", - description: "Alter genomes, turn monkeys into humans (and vice-versa), make \ - DNA backups so they can get stolen.", - department: Science, -}; - -export default Geneticist; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/head_of_personnel.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/head_of_personnel.ts deleted file mode 100644 index 9f06282d346..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/head_of_personnel.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Service } from "../departments"; - -const HeadOfPersonnel: Job = { - name: "Head of Personnel", - description: "Alter access on ID cards, manage civil and supply departments, \ - protect Ian, run the station when the captain dies.", - department: Service, -}; - -export default HeadOfPersonnel; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/head_of_security.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/head_of_security.ts deleted file mode 100644 index 56a96e80470..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/head_of_security.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Job } from "../base"; -import { Security } from "../departments"; - -const HeadOfSecurity: Job = { - name: "Head of Security", - description: "Coordinate security personnel, ensure they are not corrupt, \ - make sure every department is protected, save the Virologist when he gets \ - mauled by monkeys.", - department: Security, -}; - -export default HeadOfSecurity; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/janitor.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/janitor.ts deleted file mode 100644 index aa64e0687c5..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/janitor.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Service } from "../departments"; - -const Janitor: Job = { - name: "Janitor", - description: "Clean up trash and blood. Replace broken lights. \ - Slip people over.", - department: Service, -}; - -export default Janitor; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/lawyer.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/lawyer.ts deleted file mode 100644 index 559b82b37e0..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/lawyer.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Security } from "../departments"; - -const Lawyer: Job = { - name: "Lawyer", - description: "Advocate for prisoners, create law-binding contracts, \ - ensure Security is following protocol and Space Law.", - department: Security, -}; - -export default Lawyer; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/medical_doctor.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/medical_doctor.ts deleted file mode 100644 index b248624b33a..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/medical_doctor.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Medical } from "../departments"; - -const MedicalDoctor: Job = { - name: "Medical Doctor", - description: "Save lives, run around the station looking for victims, \ - scan everyone in sight", - department: Medical, -}; - -export default MedicalDoctor; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/mime.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/mime.ts deleted file mode 100644 index 8eca6aa19a3..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/mime.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Job } from "../base"; -import { Service } from "../departments"; - -const Mime: Job = { - name: "Mime", - description: "...", - department: Service, -}; - -export default Mime; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/paramedic.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/paramedic.ts deleted file mode 100644 index 88a4450232a..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/paramedic.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Medical } from "../departments"; - -const Paramedic: Job = { - name: "Paramedic", - description: "Run around the station looking for patients, respond to \ - emergencies, give patients a roller bed ride to medbay.", - department: Medical, -}; - -export default Paramedic; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/prisoner.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/prisoner.ts deleted file mode 100644 index 82308a9b1b9..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/prisoner.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Job } from "../base"; -import { Security } from "../departments"; - -const Prisoner: Job = { - name: "Prisoner", - description: "Keep yourself occupied while in permabrig.", - department: Security, -}; - -export default Prisoner; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/psychologist.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/psychologist.ts deleted file mode 100644 index f6233d82b09..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/psychologist.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Medical } from "../departments"; - -const Psychologist: Job = { - name: "Psychologist", - description: "Advocate sanity, self-esteem, and teamwork in a station \ - staffed with headcases.", - department: Medical, -}; - -export default Psychologist; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/quartermaster.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/quartermaster.ts deleted file mode 100644 index 05f266fba6f..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/quartermaster.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Cargo } from "../departments"; - -const Quartermaster: Job = { - name: "Quartermaster", - description: "Coordinate cargo technicians and shaft miners, assist with \ - economical purchasing.", - department: Cargo, -}; - -export default Quartermaster; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/research_director.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/research_director.ts deleted file mode 100644 index 6ecce763ed8..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/research_director.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Job } from "../base"; -import { Science } from "../departments"; - -const ResearchDirector: Job = { - name: "Research Director", - description: "Supervise research efforts, ensure Robotics is in working \ - order, make sure the AI and its Cyborgs aren't rogue, replacing them if \ - they are", - department: Science, -}; - -export default ResearchDirector; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/roboticist.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/roboticist.ts deleted file mode 100644 index 64cf661eae9..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/roboticist.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Job } from "../base"; -import { Science } from "../departments"; - -const Roboticist: Job = { - name: "Roboticist", - description: "Build and repair the AI and cyborgs, create mechs.", - department: Science, -}; - -export default Roboticist; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/scientist.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/scientist.ts deleted file mode 100644 index 9f140ac954f..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/scientist.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Job } from "../base"; -import { Science } from "../departments"; - -const Scientist: Job = { - name: "Scientist", - description: "Do experiments, perform research, feed the slimes, make bombs.", - department: Science, -}; - -export default Scientist; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/security_officer.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/security_officer.ts deleted file mode 100644 index 93117dd3b87..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/security_officer.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Security } from "../departments"; - -const SecurityOfficer: Job = { - name: "Security Officer", - description: "Protect company assets, follow the Standard Operating \ - Procedure, eat donuts", - department: Security, -}; - -export default SecurityOfficer; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/shaft_miner.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/shaft_miner.ts deleted file mode 100644 index 474f81cd10c..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/shaft_miner.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Cargo } from "../departments"; - -const ShaftMiner: Job = { - name: "Shaft Miner", - description: "Travel to strange lands. Mine ores. \ - Meet strange creatures. Kill them for their gold.", - department: Cargo, -}; - -export default ShaftMiner; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/station_engineer.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/station_engineer.ts deleted file mode 100644 index 4280c833735..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/station_engineer.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Engineering } from "../departments"; - -const StationEngineer: Job = { - name: "Station Engineer", - description: "Start the Supermatter, wire the solars, repair station hull \ - and wiring damage.", - department: Engineering, -}; - -export default StationEngineer; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/virologist.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/virologist.ts deleted file mode 100644 index 13a5be66650..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/virologist.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Job } from "../base"; -import { Medical } from "../departments"; - -const Virologist: Job = { - name: "Virologist", - description: "Study the effects of various diseases and synthesize a \ - vaccine for them. Engineer beneficial viruses.", - department: Medical, -}; - -export default Virologist; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/warden.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/warden.ts deleted file mode 100644 index e8ac63fe466..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/jobs/jobs/warden.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Job } from "../base"; -import { Security } from "../departments"; - -const Warden: Job = { - name: "Warden", - description: "Watch over the Brig and Prison Wing, release prisoners when \ - their time is up, issue equipment to security, be a security officer when \ - they all eventually die.", - department: Security, -}; - -export default Warden; diff --git a/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss b/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss index 6f936a1ce4c..e70d235e0e1 100644 --- a/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss +++ b/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss @@ -6,13 +6,12 @@ $department_map: ( 'Assistant': colors.$grey, 'Captain': colors.fg(colors.$blue), + 'Cargo': colors.$brown, 'Command': colors.$yellow, 'Security': colors.$red, 'Engineering': #f1a839, 'Medical': colors.$teal, - 'Misc': colors.$white, 'Science': colors.fg(colors.$purple), - 'Supply': colors.$brown, 'Service': colors.$green, 'Silicon': colors.$pink, );