"
//standard departments all have identical handling
- var/list/job_lists = list("Security" = GLOB.security_positions,
- "Engineering" = GLOB.engineering_positions,
- "Medical" = GLOB.medical_positions,
- "Science" = GLOB.science_positions,
- "Supply" = GLOB.supply_positions)
+ var/list/job_lists = list("Security" = GLOB.original_security_positions,
+ "Engineering" = GLOB.original_engineering_positions,
+ "Medical" = GLOB.original_medical_positions,
+ "Science" = GLOB.original_science_positions,
+ "Supply" = GLOB.original_supply_positions)
for(var/department in job_lists)
//the first element is the department head so they need the same javascript call as above
output += "
"
//departments/groups that don't have command staff would throw a javascript error since there's no corresponding reference for toggle_head()
- var/list/headless_job_lists = list("Silicon" = GLOB.nonhuman_positions,
+ var/list/headless_job_lists = list("Silicon" = GLOB.original_nonhuman_positions,
"Abstract" = list("Appearance", "Emote", "OOC", "Voice Announcements"))
for(var/department in headless_job_lists)
output += "
"
- var/list/long_job_lists = list("Civilian" = GLOB.civilian_positions,
+ var/list/long_job_lists = list("Civilian" = GLOB.original_civilian_positions,
"Ghost and Other Roles" = list(ROLE_BRAINWASHED, ROLE_DEATHSQUAD, ROLE_DRONE, ROLE_FUGITIVE, ROLE_HOLOPARASITE, ROLE_LAVALAND, ROLE_MIND_TRANSFER, ROLE_POSIBRAIN, ROLE_SENTIENCE),
"Antagonist Positions" = list(ROLE_ABDUCTOR, ROLE_ALIEN, ROLE_BLOB,
ROLE_BROTHER, ROLE_CHANGELING, ROLE_CULTIST,
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 1fe5425c9cdd..25f1b26a0474 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -47,6 +47,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/show_credits = TRUE
var/uses_glasses_colour = 0
+ var/list/player_alt_titles = new()
+
///Whether emotes will be displayed on runechat. Requires chat_on_map to have effect. Boolean.
var/see_rc_emotes = TRUE
@@ -976,10 +978,17 @@ GLOBAL_LIST_EMPTY(preferences_datums)
HTML += "
[rank] \[QUIET\] | "
continue
// yogs end
+
+ var/rank_display
+ if(job.alt_titles)
+ rank_display = "
[GetPlayerAltTitle(job)]"
+ else
+ rank_display = "
[rank]"
+
if((rank in GLOB.command_positions) || (rank == "AI"))//Bold head jobs
- HTML += "
[rank]"
+ HTML += "
[rank_display]"
else
- HTML += "
[rank]"
+ HTML += rank_display
HTML += "
"
@@ -1042,6 +1051,19 @@ GLOBAL_LIST_EMPTY(preferences_datums)
popup.set_content(HTML)
popup.open(FALSE)
+/datum/preferences/proc/GetPlayerAltTitle(datum/job/job)
+ return player_alt_titles.Find(job.title) > 0 \
+ ? player_alt_titles[job.title] \
+ : job.title
+
+/datum/preferences/proc/SetPlayerAltTitle(datum/job/job, new_title)
+ // remove existing entry
+ if(player_alt_titles.Find(job.title))
+ player_alt_titles -= job.title
+ // add one if it's not default
+ if(job.title != new_title)
+ player_alt_titles[job.title] = new_title
+
/datum/preferences/proc/SetJobPreferenceLevel(datum/job/job, level)
if (!job)
return FALSE
@@ -1231,6 +1253,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(BERANDOMJOB)
joblessrole = RETURNTOLOBBY
SetChoices(user)
+ if ("alt_title")
+ var/datum/job/job = SSjob.GetJob(href_list["job"])
+ if (job)
+ var/choices = list(job.title) + job.alt_titles
+ var/choice = input("Pick a title for [job.title].", "Character Generation", GetPlayerAltTitle(job)) as anything in choices | null
+ if(choice)
+ SetPlayerAltTitle(job, choice)
+ SetChoices(user)
if("setJobLevel")
UpdateJobPreference(user, href_list["text"], text2num(href_list["level"]))
else
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 9a3e65232db6..830395d78c91 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -172,7 +172,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
READ_FILE(S["buttons_locked"], buttons_locked)
READ_FILE(S["windowflash"], windowflashing)
READ_FILE(S["be_special"] , be_special)
-
+ READ_FILE(S["player_alt_titles"], player_alt_titles)
READ_FILE(S["default_slot"], default_slot)
READ_FILE(S["chat_toggles"], chat_toggles)
@@ -221,40 +221,40 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
update_preferences(needs_update, S) //needs_update = savefile_version if we need an update (positive integer)
//Sanitize
- asaycolor = sanitize_ooccolor(sanitize_hexcolor(asaycolor, 6, 1, initial(asaycolor)))
- ooccolor = sanitize_ooccolor(sanitize_hexcolor(ooccolor, 6, 1, initial(ooccolor)))
- lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog))
- UI_style = sanitize_inlist(UI_style, GLOB.available_ui_styles, GLOB.available_ui_styles[1])
- hotkeys = sanitize_integer(hotkeys, FALSE, TRUE, initial(hotkeys))
- chat_on_map = sanitize_integer(chat_on_map, FALSE, TRUE, initial(chat_on_map))
- max_chat_length = sanitize_integer(max_chat_length, 1, CHAT_MESSAGE_MAX_LENGTH, initial(max_chat_length))
+ asaycolor = sanitize_ooccolor(sanitize_hexcolor(asaycolor, 6, 1, initial(asaycolor)))
+ ooccolor = sanitize_ooccolor(sanitize_hexcolor(ooccolor, 6, 1, initial(ooccolor)))
+ lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog))
+ UI_style = sanitize_inlist(UI_style, GLOB.available_ui_styles, GLOB.available_ui_styles[1])
+ hotkeys = sanitize_integer(hotkeys, FALSE, TRUE, initial(hotkeys))
+ chat_on_map = sanitize_integer(chat_on_map, FALSE, TRUE, initial(chat_on_map))
+ max_chat_length = sanitize_integer(max_chat_length, 1, CHAT_MESSAGE_MAX_LENGTH, initial(max_chat_length))
see_chat_non_mob = sanitize_integer(see_chat_non_mob, FALSE, TRUE, initial(see_chat_non_mob))
- see_rc_emotes = sanitize_integer(see_rc_emotes, FALSE, TRUE, initial(see_rc_emotes))
- tgui_fancy = sanitize_integer(tgui_fancy, FALSE, TRUE, initial(tgui_fancy))
- tgui_lock = sanitize_integer(tgui_lock, FALSE, TRUE, initial(tgui_lock))
- buttons_locked = sanitize_integer(buttons_locked, FALSE, TRUE, initial(buttons_locked))
- windowflashing = sanitize_integer(windowflashing, FALSE, TRUE, initial(windowflashing))
- default_slot = sanitize_integer(default_slot, 1, max_save_slots, initial(default_slot))
- toggles = sanitize_integer(toggles, 0, (1 << 23), initial(toggles)) // Yogs -- Fixes toggles not having >16 bits of flagspace
- clientfps = sanitize_integer(clientfps, 0, 1000, 0)
- parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null)
+ see_rc_emotes = sanitize_integer(see_rc_emotes, FALSE, TRUE, initial(see_rc_emotes))
+ tgui_fancy = sanitize_integer(tgui_fancy, FALSE, TRUE, initial(tgui_fancy))
+ tgui_lock = sanitize_integer(tgui_lock, FALSE, TRUE, initial(tgui_lock))
+ buttons_locked = sanitize_integer(buttons_locked, FALSE, TRUE, initial(buttons_locked))
+ windowflashing = sanitize_integer(windowflashing, FALSE, TRUE, initial(windowflashing))
+ default_slot = sanitize_integer(default_slot, 1, max_save_slots, initial(default_slot))
+ toggles = sanitize_integer(toggles, 0, (1 << 23), initial(toggles)) // Yogs -- Fixes toggles not having >16 bits of flagspace
+ clientfps = sanitize_integer(clientfps, 0, 1000, 0)
+ parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null)
ambientocclusion = sanitize_integer(ambientocclusion, FALSE, TRUE, initial(ambientocclusion))
auto_fit_viewport = sanitize_integer(auto_fit_viewport, FALSE, TRUE, initial(auto_fit_viewport))
- widescreenpref = sanitize_integer(widescreenpref, FALSE, TRUE, initial(widescreenpref))
- pixel_size = sanitize_integer(pixel_size, PIXEL_SCALING_AUTO, PIXEL_SCALING_3X, initial(pixel_size))
- scaling_method = sanitize_text(scaling_method, initial(scaling_method))
- ghost_form = sanitize_inlist(ghost_form, GLOB.ghost_forms, initial(ghost_form))
- ghost_orbit = sanitize_inlist(ghost_orbit, GLOB.ghost_orbits, initial(ghost_orbit))
- ghost_accs = sanitize_inlist(ghost_accs, GLOB.ghost_accs_options, GHOST_ACCS_DEFAULT_OPTION)
- ghost_others = sanitize_inlist(ghost_others, GLOB.ghost_others_options, GHOST_OTHERS_DEFAULT_OPTION)
- menuoptions = SANITIZE_LIST(menuoptions)
- be_special = SANITIZE_LIST(be_special)
- pda_style = sanitize_inlist(pda_style, GLOB.pda_styles, initial(pda_style))
- pda_color = sanitize_hexcolor(pda_color, 6, 1, initial(pda_color))
- skillcape = sanitize_integer(skillcape, 1, 82, initial(skillcape))
- map = sanitize_integer(map, FALSE, TRUE, initial(map))
- flare = sanitize_integer(flare, FALSE, TRUE, initial(flare))
- bar_choice = sanitize_text(bar_choice, initial(bar_choice))
+ widescreenpref = sanitize_integer(widescreenpref, FALSE, TRUE, initial(widescreenpref))
+ pixel_size = sanitize_integer(pixel_size, PIXEL_SCALING_AUTO, PIXEL_SCALING_3X, initial(pixel_size))
+ scaling_method = sanitize_text(scaling_method, initial(scaling_method))
+ ghost_form = sanitize_inlist(ghost_form, GLOB.ghost_forms, initial(ghost_form))
+ ghost_orbit = sanitize_inlist(ghost_orbit, GLOB.ghost_orbits, initial(ghost_orbit))
+ ghost_accs = sanitize_inlist(ghost_accs, GLOB.ghost_accs_options, GHOST_ACCS_DEFAULT_OPTION)
+ ghost_others = sanitize_inlist(ghost_others, GLOB.ghost_others_options, GHOST_OTHERS_DEFAULT_OPTION)
+ menuoptions = SANITIZE_LIST(menuoptions)
+ be_special = SANITIZE_LIST(be_special)
+ pda_style = sanitize_inlist(pda_style, GLOB.pda_styles, initial(pda_style))
+ pda_color = sanitize_hexcolor(pda_color, 6, 1, initial(pda_color))
+ skillcape = sanitize_integer(skillcape, 1, 82, initial(skillcape))
+ map = sanitize_integer(map, FALSE, TRUE, initial(map))
+ flare = sanitize_integer(flare, FALSE, TRUE, initial(flare))
+ bar_choice = sanitize_text(bar_choice, initial(bar_choice))
var/bar_sanitize = FALSE
for(var/A in GLOB.potential_box_bars)
@@ -264,6 +264,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
if(!bar_sanitize)
bar_choice = "Random"
+ if(!player_alt_titles) player_alt_titles = new()
+
show_credits = sanitize_integer(show_credits, FALSE, TRUE, initial(show_credits))
// yogs start - Donor features & yogtoggles
@@ -303,6 +305,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["buttons_locked"], buttons_locked)
WRITE_FILE(S["windowflash"], windowflashing)
WRITE_FILE(S["be_special"], be_special)
+ WRITE_FILE(S["player_alt_titles"], player_alt_titles)
WRITE_FILE(S["default_slot"], default_slot)
WRITE_FILE(S["toggles"], toggles)
WRITE_FILE(S["chat_toggles"], chat_toggles)
diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm
index 1e5a3212cb5a..f2b423794653 100644
--- a/code/modules/jobs/access.dm
+++ b/code/modules/jobs/access.dm
@@ -378,6 +378,8 @@
if(!I)
return
var/jobName = I.assignment
+ if(I.originalassignment)
+ jobName = I.originalassignment
if(jobName in get_all_job_icons()) //Check if the job has a hud icon
return jobName
if(jobName in get_all_centcom_jobs()) //Return with the NT logo if it is a CentCom job
diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm
index cc5e50db2653..1a18217549c1 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -35,6 +35,8 @@
//Sellection screen color
var/selection_color = "#ffffff"
+ //List of alternate titles, if any
+ var/list/alt_titles
//If this is set to 1, a text is printed to the player when jobs are assigned, telling him that he should let admins know that he has to disconnect.
var/req_admin_notify
@@ -260,7 +262,11 @@
C.access = J.get_access()
shuffle_inplace(C.access) // Shuffle access list to make NTNet passkeys less predictable
C.registered_name = H.real_name
- C.assignment = J.title
+ if(H.mind?.role_alt_title)
+ C.assignment = H.mind.role_alt_title
+ else
+ C.assignment = J.title
+ C.originalassignment = H.mind.assigned_role
if(H.age)
C.registered_age = H.age
C.update_label()
@@ -275,7 +281,10 @@
var/obj/item/pda/PDA = H.get_item_by_slot(pda_slot)
if(istype(PDA))
PDA.owner = H.real_name
- PDA.ownjob = J.title
+ if(H.mind?.role_alt_title)
+ PDA.ownjob = H.mind.role_alt_title
+ else
+ PDA.ownjob = J.title
PDA.update_label()
/datum/outfit/job/get_chameleon_disguise_info()
diff --git a/code/modules/jobs/job_types/ai.dm b/code/modules/jobs/job_types/ai.dm
index b10cb406e81f..f4d2d1a88f5a 100644
--- a/code/modules/jobs/job_types/ai.dm
+++ b/code/modules/jobs/job_types/ai.dm
@@ -16,6 +16,8 @@
display_order = JOB_DISPLAY_ORDER_AI
var/do_special_check = TRUE
+ alt_titles = list("Station Central Processor", "Central Silicon Intelligence", "Cyborg Overlord")
+
/datum/job/ai/equip(mob/living/carbon/human/H, visualsOnly, announce, latejoin, datum/outfit/outfit_override, client/preference_source = null)
if(visualsOnly)
CRASH("dynamic preview is unsupported")
diff --git a/code/modules/jobs/job_types/artist.dm b/code/modules/jobs/job_types/artist.dm
index c45d8601831f..4f2bd90545ce 100644
--- a/code/modules/jobs/job_types/artist.dm
+++ b/code/modules/jobs/job_types/artist.dm
@@ -10,7 +10,7 @@
selection_color = "#dddddd"
outfit = /datum/outfit/job/artist
-
+ alt_titles = list("Painter", "Composer", "Artisan")
access = list()
minimal_access = list()
paycheck = PAYCHECK_ASSISTANT
diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm
index 4bb6e73ff748..ce2353de5bb9 100644
--- a/code/modules/jobs/job_types/assistant.dm
+++ b/code/modules/jobs/job_types/assistant.dm
@@ -18,6 +18,8 @@ Assistant
paycheck_department = ACCOUNT_CIV
display_order = JOB_DISPLAY_ORDER_ASSISTANT
+ alt_titles = list("Intern", "Apprentice", "Subordinate", "Temporary Worker", "Colleague", "Associate")
+
/datum/job/assistant/get_access()
if(CONFIG_GET(flag/assistants_have_maint_access) || !CONFIG_GET(flag/jobs_have_minimal_access)) //Config has assistant maint access set
. = ..()
diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm
index c22e977066f3..8c46a483bbcf 100644
--- a/code/modules/jobs/job_types/atmospheric_technician.dm
+++ b/code/modules/jobs/job_types/atmospheric_technician.dm
@@ -10,6 +10,7 @@
selection_color = "#fff5cc"
exp_requirements = 180
exp_type = EXP_TYPE_CREW
+ alt_titles = list("Breach Fixer", "Radiation Creator", "Habitation Technician", "Fire Suppression Technician", "Atmospherics Trainee", "Environmental Maintainer")
outfit = /datum/outfit/job/atmos
diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm
index 22d48dccd4b0..9986bd118516 100644
--- a/code/modules/jobs/job_types/bartender.dm
+++ b/code/modules/jobs/job_types/bartender.dm
@@ -10,6 +10,8 @@
selection_color = "#bbe291"
exp_type_department = EXP_TYPE_SERVICE // This is so the jobs menu can work properly
+ alt_titles = list("Barkeep", "Tapster", "Barista", "Mixologist")
+
outfit = /datum/outfit/job/bartender
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm
index 87c02bfa265c..0ee5415dc562 100644
--- a/code/modules/jobs/job_types/botanist.dm
+++ b/code/modules/jobs/job_types/botanist.dm
@@ -11,6 +11,8 @@
outfit = /datum/outfit/job/botanist
+ alt_titles = list("Ecologist", "Agriculturist", "Botany Greenhorn", "Hydroponicist")
+
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
paycheck = PAYCHECK_EASY
diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm
index 6c49c1cb07bd..f9777f17a9b3 100755
--- a/code/modules/jobs/job_types/captain.dm
+++ b/code/modules/jobs/job_types/captain.dm
@@ -15,6 +15,7 @@
exp_requirements = 180
exp_type = EXP_TYPE_CREW
exp_type_department = EXP_TYPE_COMMAND
+ alt_titles = list("Station Commander", "Facility Overseer")
outfit = /datum/outfit/job/captain
diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm
index dfb998add446..9eb6fcd98c5b 100644
--- a/code/modules/jobs/job_types/cargo_technician.dm
+++ b/code/modules/jobs/job_types/cargo_technician.dm
@@ -11,6 +11,8 @@
outfit = /datum/outfit/job/cargo_tech
+ alt_titles = list("Deliveryperson", "Mail Service", "Exports Handler", "Cargo Trainee", "Crate Pusher")
+
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM)
paycheck = PAYCHECK_EASY
diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm
index 3d987162c6ea..8f4bff90ab97 100644
--- a/code/modules/jobs/job_types/chaplain.dm
+++ b/code/modules/jobs/job_types/chaplain.dm
@@ -11,6 +11,8 @@
outfit = /datum/outfit/job/chaplain
+ alt_titles = list("Priest", "Preacher", "Cleric")
+
access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE)
minimal_access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE)
paycheck = PAYCHECK_EASY
diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm
index 3e860d92f532..aa9cfadfec6b 100644
--- a/code/modules/jobs/job_types/chemist.dm
+++ b/code/modules/jobs/job_types/chemist.dm
@@ -12,6 +12,8 @@
exp_requirements = 120
exp_type_department = EXP_TYPE_MEDICAL
+ alt_titles = list("Pharmacist", "Chemical Analyst", "Chemistry Lab Technician", "Chemical Specialist")
+
outfit = /datum/outfit/job/chemist
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM)
diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm
index 1602999a4e3c..6630586a7681 100644
--- a/code/modules/jobs/job_types/chief_engineer.dm
+++ b/code/modules/jobs/job_types/chief_engineer.dm
@@ -15,6 +15,7 @@
exp_requirements = 180
exp_type = EXP_TYPE_CREW
exp_type_department = EXP_TYPE_ENGINEERING
+ alt_titles = list("Head of Engineering", "Engineering Director")
outfit = /datum/outfit/job/ce
diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm
index 33dafd976ada..adfb74511cc9 100644
--- a/code/modules/jobs/job_types/chief_medical_officer.dm
+++ b/code/modules/jobs/job_types/chief_medical_officer.dm
@@ -15,6 +15,7 @@
exp_requirements = 180
exp_type = EXP_TYPE_CREW
exp_type_department = EXP_TYPE_MEDICAL
+ alt_titles = list("Medical Director", "Head of Medical")
outfit = /datum/outfit/job/cmo
diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm
index a8b362cd9df4..36f43b0504b0 100644
--- a/code/modules/jobs/job_types/clown.dm
+++ b/code/modules/jobs/job_types/clown.dm
@@ -11,6 +11,8 @@
outfit = /datum/outfit/job/clown
+ alt_titles = list("Entertainer", "Comedian", "Jester")
+
access = list(ACCESS_THEATRE)
minimal_access = list(ACCESS_THEATRE)
paycheck = PAYCHECK_MINIMAL
diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm
index 6996fde1ccd8..88d53a37a27b 100644
--- a/code/modules/jobs/job_types/cook.dm
+++ b/code/modules/jobs/job_types/cook.dm
@@ -12,6 +12,8 @@
outfit = /datum/outfit/job/cook
+ alt_titles = list("Chef", "Hash Slinger", "Sous-chef", "Culinary Artist")
+
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
paycheck = PAYCHECK_EASY
diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm
index 57f52803c2bb..2c4667f10a37 100644
--- a/code/modules/jobs/job_types/curator.dm
+++ b/code/modules/jobs/job_types/curator.dm
@@ -11,6 +11,8 @@
outfit = /datum/outfit/job/curator
+ alt_titles = list("Librarian", "Journalist", "Archivist")
+
access = list(ACCESS_LIBRARY, ACCESS_CONSTRUCTION, ACCESS_MINING_STATION)
minimal_access = list(ACCESS_LIBRARY, ACCESS_CONSTRUCTION, ACCESS_MINING_STATION)
paycheck = PAYCHECK_EASY
diff --git a/code/modules/jobs/job_types/cyborg.dm b/code/modules/jobs/job_types/cyborg.dm
index 0cf6dee1b8c3..a9babf2ba89c 100644
--- a/code/modules/jobs/job_types/cyborg.dm
+++ b/code/modules/jobs/job_types/cyborg.dm
@@ -11,6 +11,7 @@
minimal_player_age = 21
exp_requirements = 120
exp_type = EXP_TYPE_CREW
+ alt_titles = list("Android", "Robot", "Cyborg")
display_order = JOB_DISPLAY_ORDER_CYBORG
diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm
index 8698a5a91764..a26d25e0a758 100644
--- a/code/modules/jobs/job_types/detective.dm
+++ b/code/modules/jobs/job_types/detective.dm
@@ -15,6 +15,8 @@
outfit = /datum/outfit/job/detective
+ alt_titles = list("Investigator", "Forensic Analyst", "Investigative Cadet", "Private Eye", "Inspector")
+
access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
paycheck = PAYCHECK_MEDIUM
diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm
index c1c8ebf06420..244817c23826 100644
--- a/code/modules/jobs/job_types/geneticist.dm
+++ b/code/modules/jobs/job_types/geneticist.dm
@@ -10,6 +10,7 @@
selection_color = "#d4ebf2"
exp_type = EXP_TYPE_CREW
exp_requirements = 60
+ alt_titles = list("DNA Mechanic", "Bioengineer", "Junior Geneticist", "Gene Splicer")
outfit = /datum/outfit/job/geneticist
diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm
index c8c1b0b2d73a..28e923c571fb 100644
--- a/code/modules/jobs/job_types/head_of_personnel.dm
+++ b/code/modules/jobs/job_types/head_of_personnel.dm
@@ -15,6 +15,7 @@
exp_requirements = 180
exp_type = EXP_TYPE_CREW
exp_type_department = EXP_TYPE_SUPPLY
+ alt_titles = list("Chief of Staff", "Head of Internal Affairs")
outfit = /datum/outfit/job/hop
diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm
index b24f7995b882..17a89caded8b 100644
--- a/code/modules/jobs/job_types/head_of_security.dm
+++ b/code/modules/jobs/job_types/head_of_security.dm
@@ -15,6 +15,7 @@
exp_requirements = 600
exp_type = EXP_TYPE_CREW
exp_type_department = EXP_TYPE_SECURITY
+ alt_titles = list("Security Commander", "Security Chief")
outfit = /datum/outfit/job/hos
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm
index fd9717f9cd1e..a6fadbd77033 100644
--- a/code/modules/jobs/job_types/janitor.dm
+++ b/code/modules/jobs/job_types/janitor.dm
@@ -11,6 +11,8 @@
outfit = /datum/outfit/job/janitor
+ alt_titles = list("Custodian", "Sanitation Worker", "Cleaner", "Caretaker")
+
access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
paycheck = PAYCHECK_EASY
diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm
index 10e066781644..9aa7c31340db 100644
--- a/code/modules/jobs/job_types/lawyer.dm
+++ b/code/modules/jobs/job_types/lawyer.dm
@@ -9,6 +9,7 @@
supervisors = "the head of personnel"
selection_color = "#dddddd"
var/lawyers = 0 //Counts lawyer amount
+ alt_titles = list("Prosecutor", "Defense Attorney", "Paralegal", "Ace Attorney")
outfit = /datum/outfit/job/lawyer
diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm
index e80e98f726e0..37070fc29b83 100644
--- a/code/modules/jobs/job_types/medical_doctor.dm
+++ b/code/modules/jobs/job_types/medical_doctor.dm
@@ -10,6 +10,7 @@
selection_color = "#d4ebf2"
exp_requirements = 180
exp_type = EXP_TYPE_CREW
+ alt_titles = list("Physician", "Surgeon", "Nurse", "Medical Resident", "Attending Physician", "Attending Physician", "General Practitioner")
outfit = /datum/outfit/job/doctor
diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm
index c60c1e6e7832..627390ab8107 100644
--- a/code/modules/jobs/job_types/mime.dm
+++ b/code/modules/jobs/job_types/mime.dm
@@ -11,6 +11,8 @@
outfit = /datum/outfit/job/mime
+ alt_titles = list("Mute Entertainer", "Silent Jokester", "Pantomimist")
+
access = list(ACCESS_THEATRE)
minimal_access = list(ACCESS_THEATRE)
paycheck = PAYCHECK_MINIMAL
diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm
index d731ee36971c..5f2f4886edfd 100644
--- a/code/modules/jobs/job_types/quartermaster.dm
+++ b/code/modules/jobs/job_types/quartermaster.dm
@@ -11,6 +11,8 @@
outfit = /datum/outfit/job/quartermaster
+ alt_titles = list("Stock Controller", "Cargo Coordinator", "Shipping Overseer")
+
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT)
minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT)
paycheck = PAYCHECK_MEDIUM
diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm
index 82e62c58b043..7c5401df6192 100644
--- a/code/modules/jobs/job_types/research_director.dm
+++ b/code/modules/jobs/job_types/research_director.dm
@@ -16,6 +16,7 @@
exp_requirements = 180
exp_type = EXP_TYPE_CREW
exp_type_department = EXP_TYPE_SCIENCE
+ alt_titles = list("Chief Science Officer", "Head of Research")
outfit = /datum/outfit/job/rd
diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm
index 75c1f133585c..87fc5d0e9eed 100644
--- a/code/modules/jobs/job_types/roboticist.dm
+++ b/code/modules/jobs/job_types/roboticist.dm
@@ -10,6 +10,7 @@
selection_color = "#ffeeff"
exp_requirements = 60
exp_type = EXP_TYPE_CREW
+ alt_titles = list("Augmentation Theorist", "Cyborg Maintainer", "Robotics Intern", "Biomechanical Engineer", "Mechatronic Engineer")
outfit = /datum/outfit/job/roboticist
diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm
index 696831aa50e9..a9a4f0b0d021 100644
--- a/code/modules/jobs/job_types/scientist.dm
+++ b/code/modules/jobs/job_types/scientist.dm
@@ -10,7 +10,7 @@
selection_color = "#ffeeff"
exp_requirements = 180
exp_type = EXP_TYPE_CREW
-
+ alt_titles = list("Researcher", "Toxins Specialist", "Physicist", "Science Intern", "Anomalist", "Quantum Physicist", "Xenobiologist", "Bomb Specialist")
outfit = /datum/outfit/job/scientist
diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm
index 76a8fabbfb08..47ede25e69ee 100644
--- a/code/modules/jobs/job_types/security_officer.dm
+++ b/code/modules/jobs/job_types/security_officer.dm
@@ -15,6 +15,8 @@
outfit = /datum/outfit/job/security
+ alt_titles = list("Security Guard", "Threat Response Officer", "Civilan Protection Officer", "Security Cadet", "Security Staff Sergeant")
+
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY, ACCESS_MINERAL_STOREROOM) // See /datum/job/officer/get_access()
paycheck = PAYCHECK_HARD
diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm
index 57114fca9922..3cb25ae9e2b0 100644
--- a/code/modules/jobs/job_types/shaft_miner.dm
+++ b/code/modules/jobs/job_types/shaft_miner.dm
@@ -8,6 +8,7 @@
spawn_positions = 3
supervisors = "the quartermaster and the head of personnel"
selection_color = "#dcba97"
+ alt_titles = list("Lavaland Scout", "Prospector", "Junior Miner", "Major Miner")
outfit = /datum/outfit/job/miner
diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm
index 8b0f3a36b270..17c6013dcc3f 100644
--- a/code/modules/jobs/job_types/station_engineer.dm
+++ b/code/modules/jobs/job_types/station_engineer.dm
@@ -10,6 +10,7 @@
selection_color = "#fff5cc"
exp_requirements = 180
exp_type = EXP_TYPE_CREW
+ alt_titles = list("Engine Technician", "Solar Engineer", "Project Engineer", "Junior Engineer", "Construction Specialist")
outfit = /datum/outfit/job/engineer
diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm
index d3f9685887f6..72e8fab706d9 100644
--- a/code/modules/jobs/job_types/virologist.dm
+++ b/code/modules/jobs/job_types/virologist.dm
@@ -14,6 +14,8 @@
outfit = /datum/outfit/job/virologist
+ alt_titles = list("Microbiologist", "Pathologist", "Junior Disease Researcher", "Epidemiologist")
+
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM)
paycheck = PAYCHECK_MEDIUM
diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm
index d31081017363..301c2549b1bd 100644
--- a/code/modules/jobs/job_types/warden.dm
+++ b/code/modules/jobs/job_types/warden.dm
@@ -16,6 +16,8 @@
outfit = /datum/outfit/job/warden
+ alt_titles = list("Brig Watchman", "Brig Superintendent", "Security Lt. Commander", "Security Dispatcher", "Prison Supervisor")
+
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MECH_SECURITY, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) // See /datum/job/warden/get_access()
paycheck = PAYCHECK_HARD
diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm
index f9deb8b424ac..9c7f5b4abc03 100644
--- a/code/modules/jobs/jobs.dm
+++ b/code/modules/jobs/jobs.dm
@@ -1,4 +1,4 @@
-GLOBAL_LIST_INIT(command_positions, list(
+GLOBAL_LIST_INIT(original_command_positions, list(
"Captain",
"Head of Personnel",
"Head of Security",
@@ -6,43 +6,34 @@ GLOBAL_LIST_INIT(command_positions, list(
"Research Director",
"Chief Medical Officer"))
-
-GLOBAL_LIST_INIT(engineering_positions, list(
+GLOBAL_LIST_INIT(original_engineering_positions, list(
"Chief Engineer",
"Station Engineer",
- // yogs start - Yog jobs
"Atmospheric Technician",
"Signal Technician"))
- // yogs end
-
-GLOBAL_LIST_INIT(medical_positions, list(
+GLOBAL_LIST_INIT(original_medical_positions, list(
"Chief Medical Officer",
"Medical Doctor",
"Geneticist",
"Virologist",
- // yogs start - Yog jobs
"Chemist",
"Paramedic",
"Psychiatrist",
"Mining Medic"))
- // yogs end
-
-GLOBAL_LIST_INIT(science_positions, list(
+GLOBAL_LIST_INIT(original_science_positions, list(
"Research Director",
"Scientist",
"Roboticist"))
-
-GLOBAL_LIST_INIT(supply_positions, list(
+GLOBAL_LIST_INIT(original_supply_positions, list(
"Head of Personnel",
"Quartermaster",
"Cargo Technician",
"Shaft Miner"))
-
-GLOBAL_LIST_INIT(civilian_positions, list(
+GLOBAL_LIST_INIT(original_civilian_positions, list(
"Bartender",
"Botanist",
"Cook",
@@ -52,36 +43,105 @@ GLOBAL_LIST_INIT(civilian_positions, list(
"Chaplain",
"Clown",
"Mime",
- // yogs start - Yog jobs
"Assistant",
"Clerk",
"Tourist",
"Artist"))
- // yogs end
-
-GLOBAL_LIST_INIT(security_positions, list(
+GLOBAL_LIST_INIT(original_security_positions, list(
"Head of Security",
"Warden",
"Detective",
"Security Officer"))
-
-GLOBAL_LIST_INIT(nonhuman_positions, list(
+GLOBAL_LIST_INIT(original_nonhuman_positions, list(
"AI",
"Cyborg",
ROLE_PAI))
+GLOBAL_LIST_INIT(alt_command_positions, list(
+ "Station Commander", "Facility Overseer",
+ "Chief of Staff", "Head of Internal Affairs",
+ "Security Commander", "Security Chief",
+ "Head of Engineering", "Engineering Director",
+ "Chief Science Officer", "Head of Research",
+ "Medical Director", "Head of Medical"))
+
+GLOBAL_LIST_INIT(alt_engineering_positions, list(
+ "Head of Engineering", "Engineering Director",
+ "Engine Technician", "Solar Engineer", "Project Engineer", "Junior Engineer", "Construction Specialist",
+ "Habitation Technician", "Fire Suppression Technician", "Atmospherics Trainee", "Environmental Maintainer",
+ "NTSL Programmer", "Comms Tech", "Station IT Support"
+ ))
+
+GLOBAL_LIST_INIT(alt_medical_positions, list(
+ "Medical Director", "Head of Medical",
+ "Physician", "Surgeon", "Nurse", "Medical Resident", "Attending Physician", "Chief Surgeon", "Attending Physician", "Chief Surgeon", "Medical Subdirector", "General Practitioner",
+ "DNA Mechanic", "Bioengineer", "Junior Geneticist", "Gene Splicer",
+ "Microbiologist", "Pathologist", "Junior Disease Researcher", "Epidemiologist",
+ "Pharmacist", "Chemical Analyst", "Chemistry Lab Technician", "Chemical Specialist",
+ "EMT", "Paramedic Trainee", "Rapid Response Medic",
+ "Councilor", "Therapist", "Mentalist",
+ "Mining Medical Support", "Lavaland Medical Care Unit", "Junior Mining Medic", "Planetside Health Officer"))
+
+GLOBAL_LIST_INIT(alt_science_positions, list(
+ "Chief Science Officer", "Head of Research",
+ "Researcher", "Toxins Specialist", "Physicist", "Science Intern", "Anomalist", "Quantum Physicist", "Xenobiologist", "Bomb Specialist",
+ "Augmentation Theorist", "Cyborg Maintainer", "Robotics Intern", "Biomechanical Engineer", "Mechatronic Engineer"))
+
+GLOBAL_LIST_INIT(alt_supply_positions, list(
+ "Chief of Staff", "Head of Internal Affairs",
+ "Stock Controller", "Cargo Coordinator", "Shipping Overseer",
+ "Deliveryperson", "Mail Service", "Exports Handler", "Cargo Trainee", "Crate Pusher",
+ "Lavaland Scout", "Prospector", "Junior Miner", "Major Miner"))
+
+GLOBAL_LIST_INIT(alt_civilian_positions, list(
+ "Barkeep", "Tapster", "Barista", "Mixologist",
+ "Ecologist", "Agriculturist", "Botany Greenhorn", "Hydroponicist",
+ "Chef", "Hash Slinger", "Sous-chef", "Culinary Artist",
+ "Custodian", "Sanitation Worker", "Cleaner", "Caretaker",
+ "Librarian", "Journalist", "Archivist",
+ "Prosecutor", "Defense Attorney", "Paralegal", "Ace Attorney",
+ "Priest", "Preacher", "Cleric",
+ "Entertainer", "Comedian", "Jester",
+ "Mute Entertainer", "Silent Jokester", "Pantomimist",
+ "Intern", "Apprentice", "Subordinate", "Temporary Worker", "Colleague", "Associate",
+ "Salesman", "Gift Shop Attendent", "Retail Worker",
+ "Visitor", "Traveler", "Siteseer",
+ "Composer", "Artisan"
+ ))
+
+GLOBAL_LIST_INIT(alt_security_positions, list(
+ "Security Commander", "Security Chief",
+ "Brig Watchman", "Brig Superintendent", "Security Lt. Commander", "Security Dispatcher", "Prison Supervisor",
+ "Investigator", "Forensic Analyst", "Investigative Cadet", "Private Eye", "Inspector",
+ "Security Guard", "Threat Response Officer", "Civilan Protection Officer", "Security Cadet", "Security Staff Sergeant",
+ ))
+
+GLOBAL_LIST_INIT(alt_nonhuman_positions, list(
+ "Station Central Processor", "Central Silicon Intelligence", "Station Super Computer",
+ "Android", "Robot",
+ ROLE_PAI))
+
+GLOBAL_LIST_INIT(command_positions, original_command_positions | alt_command_positions)
+GLOBAL_LIST_INIT(engineering_positions, original_engineering_positions | alt_engineering_positions)
+GLOBAL_LIST_INIT(medical_positions, original_medical_positions | alt_medical_positions)
+GLOBAL_LIST_INIT(science_positions, original_science_positions | alt_science_positions)
+GLOBAL_LIST_INIT(supply_positions, original_supply_positions | alt_supply_positions)
+GLOBAL_LIST_INIT(security_positions, original_security_positions | alt_security_positions)
+GLOBAL_LIST_INIT(nonhuman_positions, original_nonhuman_positions | alt_nonhuman_positions)
+GLOBAL_LIST_INIT(civilian_positions, original_civilian_positions | alt_civilian_positions)
+
GLOBAL_LIST_INIT(exp_jobsmap, list(
- EXP_TYPE_CREW = list("titles" = command_positions | engineering_positions | medical_positions | science_positions | supply_positions | security_positions | civilian_positions | list("AI","Cyborg")), // crew positions
+ EXP_TYPE_CREW = list("titles" = command_positions | engineering_positions | medical_positions | science_positions | supply_positions | security_positions | civilian_positions | nonhuman_positions), // crew positions
EXP_TYPE_COMMAND = list("titles" = command_positions),
EXP_TYPE_ENGINEERING = list("titles" = engineering_positions),
EXP_TYPE_MEDICAL = list("titles" = medical_positions),
EXP_TYPE_SCIENCE = list("titles" = science_positions),
EXP_TYPE_SUPPLY = list("titles" = supply_positions),
EXP_TYPE_SECURITY = list("titles" = security_positions),
- EXP_TYPE_SILICON = list("titles" = list("AI","Cyborg")),
- EXP_TYPE_SERVICE = list("titles" = civilian_positions),
+ EXP_TYPE_SILICON = list("titles" = nonhuman_positions),
+ EXP_TYPE_SERVICE = list("titles" = civilian_positions)
))
GLOBAL_LIST_INIT(exp_specialmap, list(
@@ -154,3 +214,13 @@ GLOBAL_PROTECT(exp_specialmap)
job = para_expand.Replace(job, "paramedic")
// yogs end
return job
+
+/proc/get_alternate_titles(var/job)
+ var/list/jobs = SSjob.occupations
+ var/list/titles = list()
+
+ for(var/datum/job/J in jobs)
+ if(J.title == job)
+ titles = J.alt_titles
+
+ return titles
diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm
index 49f65d2d6535..a31a300e7ad1 100644
--- a/code/modules/modular_computers/file_system/programs/card.dm
+++ b/code/modules/modular_computers/file_system/programs/card.dm
@@ -274,12 +274,12 @@
else if(isnull(departments))
departments = list(
CARDCON_DEPARTMENT_COMMAND = list("Captain"),//lol
- CARDCON_DEPARTMENT_ENGINEERING = GLOB.engineering_positions,
- CARDCON_DEPARTMENT_MEDICAL = GLOB.medical_positions,
- CARDCON_DEPARTMENT_SCIENCE = GLOB.science_positions,
- CARDCON_DEPARTMENT_SECURITY = GLOB.security_positions,
- CARDCON_DEPARTMENT_SUPPLY = GLOB.supply_positions,
- CARDCON_DEPARTMENT_SERVICE = GLOB.civilian_positions
+ CARDCON_DEPARTMENT_ENGINEERING = GLOB.original_engineering_positions,
+ CARDCON_DEPARTMENT_MEDICAL = GLOB.original_medical_positions,
+ CARDCON_DEPARTMENT_SCIENCE = GLOB.original_science_positions,
+ CARDCON_DEPARTMENT_SECURITY = GLOB.original_security_positions,
+ CARDCON_DEPARTMENT_SUPPLY = GLOB.original_supply_positions,
+ CARDCON_DEPARTMENT_SERVICE = GLOB.original_civilian_positions
)
data["jobs"] = list()
for(var/department in departments)
diff --git a/yogstation/code/game/objects/items/cards_ids.dm b/yogstation/code/game/objects/items/cards_ids.dm
index 1bcd88d44b88..24e5b02e1fcc 100644
--- a/yogstation/code/game/objects/items/cards_ids.dm
+++ b/yogstation/code/game/objects/items/cards_ids.dm
@@ -7,7 +7,7 @@
ID_fluff()
/obj/item/card/id/proc/ID_fluff()
- var/job = assignment
+ var/job = originalassignment
var/list/idfluff = list(
"Assistant" = list("civillian","green"),
"Captain" = list("captain","gold"),
diff --git a/yogstation/code/modules/jobs/job_types/clerk.dm b/yogstation/code/modules/jobs/job_types/clerk.dm
index 45256ed8c44f..44535c0214cf 100644
--- a/yogstation/code/modules/jobs/job_types/clerk.dm
+++ b/yogstation/code/modules/jobs/job_types/clerk.dm
@@ -10,7 +10,7 @@
selection_color = "#dddddd"
access = list(ACCESS_MANUFACTURING)
minimal_access = list(ACCESS_MANUFACTURING)
-
+ alt_titles = list("Salesman", "Gift Shop Attendent", "Retail Worker")
outfit = /datum/outfit/job/clerk
paycheck = PAYCHECK_EASY
paycheck_department = ACCOUNT_SRV
diff --git a/yogstation/code/modules/jobs/job_types/mining_medic.dm b/yogstation/code/modules/jobs/job_types/mining_medic.dm
index cfda9318ba5a..57538d9c0d39 100644
--- a/yogstation/code/modules/jobs/job_types/mining_medic.dm
+++ b/yogstation/code/modules/jobs/job_types/mining_medic.dm
@@ -11,6 +11,8 @@
outfit = /datum/outfit/job/miningmedic
+ alt_titles = list("Mining Medical Support", "Lavaland Medical Care Unit", "Junior Mining Medic", "Planetside Health Officer")
+
minimal_character_age = 24 // "According to age statistics published by the Association of American Medical Colleges, the average age among medical students who matriculated at U.S. medical schools in the 2017-2018 school year was 24"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CARGO, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM, ACCESS_MECH_MINING, ACCESS_MECH_MEDICAL)
diff --git a/yogstation/code/modules/jobs/job_types/paramedic.dm b/yogstation/code/modules/jobs/job_types/paramedic.dm
index 870c2c10fb24..7b085fdcb095 100644
--- a/yogstation/code/modules/jobs/job_types/paramedic.dm
+++ b/yogstation/code/modules/jobs/job_types/paramedic.dm
@@ -8,6 +8,7 @@
spawn_positions = 2
supervisors = "the chief medical officer"
selection_color = "#d4ebf2"
+ alt_titles = list("EMT", "Paramedic Trainee", "Rapid Response Medic")
outfit = /datum/outfit/job/paramedic
diff --git a/yogstation/code/modules/jobs/job_types/psychiatrist.dm b/yogstation/code/modules/jobs/job_types/psychiatrist.dm
index f6603bd052fc..45153da1b146 100644
--- a/yogstation/code/modules/jobs/job_types/psychiatrist.dm
+++ b/yogstation/code/modules/jobs/job_types/psychiatrist.dm
@@ -8,6 +8,7 @@
spawn_positions = 1
supervisors = "the chief medical officer"
selection_color = "#d4ebf2"
+ alt_titles = list("Counsellor", "Therapist", "Mentalist")
outfit = /datum/outfit/job/psych
@@ -33,4 +34,4 @@
l_hand = /obj/item/storage/briefcase
glasses = /obj/item/clothing/glasses/regular
belt = /obj/item/pda
- ears = /obj/item/radio/headset/headset_med
\ No newline at end of file
+ ears = /obj/item/radio/headset/headset_med
diff --git a/yogstation/code/modules/jobs/job_types/signal_technician.dm b/yogstation/code/modules/jobs/job_types/signal_technician.dm
index c52a5c679c80..22642d50c7a2 100644
--- a/yogstation/code/modules/jobs/job_types/signal_technician.dm
+++ b/yogstation/code/modules/jobs/job_types/signal_technician.dm
@@ -11,6 +11,8 @@
outfit = /datum/outfit/job/signal_tech
+ alt_titles = list("NTSL Programmer", "Comms Tech", "Station IT Support")
+
access = list(ACCESS_TCOMSAT, ACCESS_TCOM_ADMIN, ACCESS_TECH_STORAGE, ACCESS_RC_ANNOUNCE, ACCESS_CONSTRUCTION, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP,
ACCESS_MAINT_TUNNELS, ACCESS_MECH_ENGINE)
minimal_access = list(ACCESS_TCOMSAT, ACCESS_TCOM_ADMIN, ACCESS_TECH_STORAGE, ACCESS_RC_ANNOUNCE, ACCESS_CONSTRUCTION, ACCESS_MECH_ENGINE)
@@ -41,4 +43,4 @@
satchel = /obj/item/storage/backpack/satchel/eng
duffelbag = /obj/item/storage/backpack/duffelbag/engineering
box = /obj/item/storage/box/engineer
- pda_slot = SLOT_L_STORE
\ No newline at end of file
+ pda_slot = SLOT_L_STORE
diff --git a/yogstation/code/modules/jobs/job_types/tourist.dm b/yogstation/code/modules/jobs/job_types/tourist.dm
index 4770909b1b29..826766b68b00 100644
--- a/yogstation/code/modules/jobs/job_types/tourist.dm
+++ b/yogstation/code/modules/jobs/job_types/tourist.dm
@@ -9,7 +9,7 @@
selection_color = "#dddddd"
access = list()
minimal_access = list()
-
+ alt_titles = list("Visitor", "Traveler", "Siteseer")
outfit = /datum/outfit/job/tourist
paycheck = PAYCHECK_EASY
paycheck_department = ACCOUNT_CIV
@@ -26,4 +26,4 @@
backpack_contents = list(/obj/item/camera_film, /obj/item/stack/spacecash/c20, /obj/item/stack/spacecash/c20, /obj/item/stack/spacecash/c20)
r_hand = /obj/item/camera
l_pocket = /obj/item/camera_film
- r_pocket = /obj/item/camera_film
\ No newline at end of file
+ r_pocket = /obj/item/camera_film
|