From 47cacb8c301c52b82f99de91b9cf6a6400713772 Mon Sep 17 00:00:00 2001 From: Cydia Date: Wed, 5 Aug 2020 01:37:19 -0500 Subject: [PATCH 1/4] Adds custom job titles Adds alternate choosable job titles to fit your niches Co-Authored-By: Azarak --- code/__HELPERS/game.dm | 5 ++- code/controllers/subsystem/job.dm | 7 ++- code/datums/datacore.dm | 2 + code/modules/client/preferences.dm | 28 +++++++++++- code/modules/jobs/job_types/job.dm | 12 +++++- code/modules/jobs/job_types/job_alt_titles.dm | 43 +++++++++++++++++++ .../modules/mob/dead/new_player/new_player.dm | 8 +++- .../modules/client/preferences_savefile.dm | 12 +++++- 8 files changed, 107 insertions(+), 10 deletions(-) create mode 100644 code/modules/jobs/job_types/job_alt_titles.dm diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 6ffc5eee..46b69dd7 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -541,8 +541,11 @@ if((character.mind.assigned_role == "Cyborg") || (character.mind.assigned_role == character.mind.special_role)) return + var/displayed_rank = rank + if(character.client && character.client.prefs && character.client.prefs.alt_titles_preference[rank]) + displayed_rank = character.client.prefs.alt_titles_preferences[rank] var/obj/machinery/announcement_system/announcer = pick(GLOB.announcement_systems) - announcer.announce("ARRIVAL", character.real_name, rank, list()) //make the list empty to make it announce it in common + announcer.announce("ARRIVAL", character.real_name, rank, displayed_rank, list()) //make the list empty to make it announce it in common /proc/lavaland_equipment_pressure_check(turf/T) . = FALSE diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 4001c666..d027a3cf 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -428,9 +428,12 @@ SUBSYSTEM_DEF(job) SSpersistence.antag_rep_change[M.client.ckey] += job.GetAntagRep() - to_chat(M, "You are the [rank].") + var/display_rank = rank + if(M.client && M.client.prefs && M.client.prefs.alt_titles_preferences[rank]) + display_rank = M.client.prefs.alt_titles_preferences[rank] + to_chat(M, "You are the [display_rank].") if(job) - to_chat(M, "As the [rank] you answer directly to [job.supervisors]. Special circumstances may change this.") + to_chat(M, "As the [display_rank] you answer directly to [job.supervisors]. Special circumstances may change this.") to_chat(M, "To speak on your departments radio, use the :h button. To see others, look closely at your headset.") if(job.req_admin_notify) to_chat(M, "You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp.") diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 8cfb84cb..44aed30a 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -208,6 +208,8 @@ assignment = H.job else assignment = "Unassigned" + if(C && C.prefs && C.prefs.alt_titles_preferences[assignment]) + assignment = C.prefs.alt_titles_preferences[assignment] var/static/record_id_num = 1001 var/id = num2hex(record_id_num++,6) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 3d732a1f..467e7d07 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -65,6 +65,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/pda_style = MONO var/pda_color = "#808000" var/pda_skin = PDA_SKIN_ALT + + var/list/alt_titles_preferences = list() var/uses_glasses_colour = 0 @@ -1095,6 +1097,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) HTML += "" var/rank = job.title + var/displayed_rank = rank + if(job.alt_titles.len && (rank in alt_titles_preferences)) + displayed_rank = alt_titles_preferences[rank] lastJob = job if(jobban_isbanned(user, rank)) HTML += "[rank] BANNED" @@ -1110,10 +1115,14 @@ GLOBAL_LIST_EMPTY(preferences_datums) if((job_civilian_low & overflow.flag) && (rank != SSjob.overflow_role) && !jobban_isbanned(user, SSjob.overflow_role)) HTML += "[rank]" continue + var/rank_title_line = "[displayed_rank]" if((rank in GLOB.command_positions) || (rank == "AI"))//Bold head jobs - HTML += "[rank]" + rank_title_line = "[rank_title_line]" + if(job.alt_titles.len) + rank_title_line = "[rank_title_line]" else - HTML += "[rank]" + rank_title_line = "[rank_title_line]" //Make it dark if we're not adding a button for alt titles + HTML += rank_title_line HTML += "" @@ -1427,6 +1436,21 @@ GLOBAL_LIST_EMPTY(preferences_datums) SetChoices(user) if("setJobLevel") UpdateJobPreference(user, href_list["text"], text2num(href_list["level"])) + if("alt_title") + var/job_title = href_list["job_title"] + var/titles_list = list(job_title) + var/datum/job/J = SSjob.GetJob(job_title) + for(var/i in J.alt_titles) + titles_list += i + var/chosen_title + chosen_title = input(user, "Choose your job's title:", "Job Preference") as null|anything in titles_list + if(chosen_title) + if(chosen_title == job_title) + if(alt_titles_preferences[job_title]) + alt_titles_preferences.Remove(job_title) + else + alt_titles_preferences[job_title] = chosen_title + SetChoices(user) else SetChoices(user) return 1 diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm index d7b2680c..86be2ea3 100644 --- a/code/modules/jobs/job_types/job.dm +++ b/code/modules/jobs/job_types/job.dm @@ -57,6 +57,8 @@ var/list/mind_traits // Traits added to the mind of the mob assigned this job var/list/blacklisted_quirks //list of quirk typepaths blacklisted. + + var/list/alt_titles = list() //Only override this proc //H is usually a human unless an /equip override transformed it @@ -222,13 +224,19 @@ shuffle_inplace(C.access) // Shuffle access list to make NTNet passkeys less predictable C.registered_name = H.real_name C.assignment = J.title - C.update_label() + if(preferences_source && preference_source.prefs && preference_source.prefs.alt_titles_preferences[J.title]) + C.update_label(C.registered_name, preference_source.prefs.alt_titles_preferences[J.title]) + else + C.update_label() H.sec_hud_set_ID() 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(preference_source && preference_source.prefs && preference_source.prefs.alt_titles_preferences[J.title]) + PDA.ownjob = preference_source.prefs.alt_titles_preferences[J.title] + else + PDA.ownjob = J.title PDA.update_label() /datum/outfit/job/get_chameleon_disguise_info() diff --git a/code/modules/jobs/job_types/job_alt_titles.dm b/code/modules/jobs/job_types/job_alt_titles.dm new file mode 100644 index 00000000..969f7cc2 --- /dev/null +++ b/code/modules/jobs/job_types/job_alt_titles.dm @@ -0,0 +1,43 @@ +//Engineering +/datum/job/engineer + alt_titles = list("Maintenance Technician", "Engine Technician", "Electrician") + +/datum/job/atmos + alt_titles = list("Firefighter", "Life Support Specialist") + +//Service +/datum/job/assistant + alt_titles = list("Civilian", "Visitor", "Businessman", "Trader", "Entertainer", "Tourist") + +/datum/job/cook + alt_titles = list("Cook", "Culinary Artist", "Butcher") + +/datum/job/botanist + alt_titles = list("Gardener", "Herbalist", "Botanical Researcher", "Hydroponicist") + +/datum/job/curator + alt_titles = list("Journalist", "Librarian") + +/datum/job/janitor + alt_titles = list("Custodian", "Sanitation Technician") + +/datum/job/lawyer + alt_titles = list("Human Resources Agent", "Internal Affairs Agent") + +//Science +/datum/job/scientist + alt_titles = list("Circuitry Designer", "Xenobiologist", "Xenobotanist", "Xenoarcheologist", "Chemical Researcher", "Researcher") + +/datum/job/roboticist + alt_titles = list("Biomechanical Engineer", "Mechatronic Engineer", "Mechanic") + +//Medical +/datum/job/doctor + alt_titles = list("Nurse", "Surgeon", "Physician") + +/datum/job/chemist + alt_titles = list("Pharmacist", "Pharmacologist") + +//Security +/datum/job/detective + alt_titles = list("Forensics Technician", "Private Investigator", "Gumshoe") diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 0dbcf362..876214b3 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -531,10 +531,14 @@ var/position_class = "otherPosition" if(job.title in GLOB.command_positions) position_class = "commandPosition" + var/jobline = "" if(job in SSjob.prioritized_jobs) - dat += "[job.title] ([job.current_positions])" + jobline += "[job.title] ([job.current_positions])" else - dat += "[job.title] ([job.current_positions])" + jobline += "[job.title] ([job.current_positions])" + if(client && client.prefs && client.prefs.alt_titles_preferences[job.title]) + jobline += "
(as [client.prefs.alt_titles_preferences[job.title]])" + dat += jobline categorizedJobs[jobcat]["jobs"] -= job for(var/spawner in categorizedJobs[jobcat]["jobs"]) diff --git a/modular_citadel/code/modules/client/preferences_savefile.dm b/modular_citadel/code/modules/client/preferences_savefile.dm index 43527174..b7089182 100644 --- a/modular_citadel/code/modules/client/preferences_savefile.dm +++ b/modular_citadel/code/modules/client/preferences_savefile.dm @@ -13,7 +13,15 @@ features["mcolor3"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F") features["mcolor2"] = sanitize_hexcolor(features["mcolor2"], 3, 0) features["mcolor3"] = sanitize_hexcolor(features["mcolor3"], 3, 0) - + + S["alt_titles_preferences"] >> alt_titles_preferences + alt_titles_preferences = SANITIZE_LIST(alt_titles_preferences) + if(SSjob) + for(var/datum/job/job in sortList(SSjob.occupations, /proc/cmp_job_display_asc)) + if(alt_titles_preferences[job.title]) + if(!(alt_titles_preferences[job.title] in job.alt_titles)) + alt_titles_preferences.Remove(job.title) + //gear loadout var/text_to_load S["loadout"] >> text_to_load @@ -76,6 +84,8 @@ WRITE_FILE(S["feature_can_get_preg"], features["can_get_preg"]) //flavor text WRITE_FILE(S["feature_flavor_text"], features["flavor_text"]) + //custom job titles + WRITE_FILE(S["alt_titles_preferences"], alt_titles_preferences) //gear loadout if(islist(chosen_gear)) From 4e025e5609ec329a1d0da90b87eca1ec0dd692d3 Mon Sep 17 00:00:00 2001 From: Cydia Date: Wed, 5 Aug 2020 01:57:37 -0500 Subject: [PATCH 2/4] fixed some errors Co-Authored-By: Azarak --- code/__HELPERS/game.dm | 2 +- code/modules/jobs/job_types/job.dm | 3 ++- modular_citadel/code/modules/client/preferences_savefile.dm | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 46b69dd7..23ecbf0c 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -542,7 +542,7 @@ return var/displayed_rank = rank - if(character.client && character.client.prefs && character.client.prefs.alt_titles_preference[rank]) + if(character.client && character.client.prefs && character.client.prefs.alt_titles_preferences[rank]) displayed_rank = character.client.prefs.alt_titles_preferences[rank] var/obj/machinery/announcement_system/announcer = pick(GLOB.announcement_systems) announcer.announce("ARRIVAL", character.real_name, rank, displayed_rank, list()) //make the list empty to make it announce it in common diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm index 86be2ea3..da718e0e 100644 --- a/code/modules/jobs/job_types/job.dm +++ b/code/modules/jobs/job_types/job.dm @@ -219,12 +219,13 @@ H.real_name = "[J.title] #[rand(10000, 99999)]" var/obj/item/card/id/C = H.wear_id + var/client/preference_source = H.client if(istype(C)) 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(preferences_source && preference_source.prefs && preference_source.prefs.alt_titles_preferences[J.title]) + if(preference_source && preference_source.prefs && preference_source.prefs.alt_titles_preferences[J.title]) C.update_label(C.registered_name, preference_source.prefs.alt_titles_preferences[J.title]) else C.update_label() diff --git a/modular_citadel/code/modules/client/preferences_savefile.dm b/modular_citadel/code/modules/client/preferences_savefile.dm index b7089182..a2d9056e 100644 --- a/modular_citadel/code/modules/client/preferences_savefile.dm +++ b/modular_citadel/code/modules/client/preferences_savefile.dm @@ -17,7 +17,7 @@ S["alt_titles_preferences"] >> alt_titles_preferences alt_titles_preferences = SANITIZE_LIST(alt_titles_preferences) if(SSjob) - for(var/datum/job/job in sortList(SSjob.occupations, /proc/cmp_job_display_asc)) + for(var/datum/job/job in SSjob.occupations) if(alt_titles_preferences[job.title]) if(!(alt_titles_preferences[job.title] in job.alt_titles)) alt_titles_preferences.Remove(job.title) From 3ed5bcfdaf1e2bae848de70f0b6efc8182618f9d Mon Sep 17 00:00:00 2001 From: Cydia Date: Wed, 5 Aug 2020 02:22:42 -0500 Subject: [PATCH 3/4] Final fix and testing Hydro, not botanist. Co-Authored-By: Azarak --- code/modules/jobs/job_types/job_alt_titles.dm | 11 ++++++++++- tgstation.dme | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/job_alt_titles.dm b/code/modules/jobs/job_types/job_alt_titles.dm index 969f7cc2..db7e5652 100644 --- a/code/modules/jobs/job_types/job_alt_titles.dm +++ b/code/modules/jobs/job_types/job_alt_titles.dm @@ -12,12 +12,15 @@ /datum/job/cook alt_titles = list("Cook", "Culinary Artist", "Butcher") -/datum/job/botanist +/datum/job/hydro alt_titles = list("Gardener", "Herbalist", "Botanical Researcher", "Hydroponicist") /datum/job/curator alt_titles = list("Journalist", "Librarian") +/datum/job/chaplain + alt_titles = list("Priest", "Priestess", "Bishop", "Prior", "Monk", "Nun") + /datum/job/janitor alt_titles = list("Custodian", "Sanitation Technician") @@ -38,6 +41,12 @@ /datum/job/chemist alt_titles = list("Pharmacist", "Pharmacologist") +/datum/job/virologist + alt_titles = list("Microbiologist", "Biochemist") + +/datum/job/geneticist + alt_titles = list("Gene Therapist") + //Security /datum/job/detective alt_titles = list("Forensics Technician", "Private Investigator", "Gumshoe") diff --git a/tgstation.dme b/tgstation.dme index 50101182..f2725740 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1819,6 +1819,7 @@ #include "code\modules\jobs\job_types\civilian_chaplain.dm" #include "code\modules\jobs\job_types\engineering.dm" #include "code\modules\jobs\job_types\job.dm" +#include "code\modules\jobs\job_types\job_alt_titles.dm" #include "code\modules\jobs\job_types\medical.dm" #include "code\modules\jobs\job_types\science.dm" #include "code\modules\jobs\job_types\security.dm" From 6947c32244d7e3a667474a56013b9093e6b0908c Mon Sep 17 00:00:00 2001 From: Cydia Date: Wed, 5 Aug 2020 15:21:18 -0500 Subject: [PATCH 4/4] MORE JOBS Co-Authored-By: Azarak --- code/modules/jobs/job_types/job_alt_titles.dm | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/code/modules/jobs/job_types/job_alt_titles.dm b/code/modules/jobs/job_types/job_alt_titles.dm index db7e5652..d0864145 100644 --- a/code/modules/jobs/job_types/job_alt_titles.dm +++ b/code/modules/jobs/job_types/job_alt_titles.dm @@ -10,26 +10,32 @@ alt_titles = list("Civilian", "Visitor", "Businessman", "Trader", "Entertainer", "Tourist") /datum/job/cook - alt_titles = list("Cook", "Culinary Artist", "Butcher") + alt_titles = list("Cook", "Culinary Artist", "Butcher", "Chef de partie") /datum/job/hydro - alt_titles = list("Gardener", "Herbalist", "Botanical Researcher", "Hydroponicist") + alt_titles = list("Gardener", "Herbalist", "Botanical Researcher", "Hydroponicist", "Farmer", "Beekeeper") /datum/job/curator alt_titles = list("Journalist", "Librarian") /datum/job/chaplain - alt_titles = list("Priest", "Priestess", "Bishop", "Prior", "Monk", "Nun") + alt_titles = list("Priest", "Priestess", "Bishop", "Prior", "Monk", "Nun", "Counselor") /datum/job/janitor - alt_titles = list("Custodian", "Sanitation Technician") + alt_titles = list("Custodian", "Sanitation Technician", "Maid") /datum/job/lawyer - alt_titles = list("Human Resources Agent", "Internal Affairs Agent") + alt_titles = list("Human Resources Agent", "Internal Affairs Agent", "Attorney") + +/datum/job/clown + alt_titles = list("Jester", "Comedian") + +/datum/job/mime + alt_titles = list("Performer") //Science /datum/job/scientist - alt_titles = list("Circuitry Designer", "Xenobiologist", "Xenobotanist", "Xenoarcheologist", "Chemical Researcher", "Researcher") + alt_titles = list("Circuitry Designer", "Xenobiologist", "Xenobotanist", "Xenoarcheologist", "Chemical Researcher", "Researcher", "Pyrotechnician") /datum/job/roboticist alt_titles = list("Biomechanical Engineer", "Mechatronic Engineer", "Mechanic") @@ -42,7 +48,7 @@ alt_titles = list("Pharmacist", "Pharmacologist") /datum/job/virologist - alt_titles = list("Microbiologist", "Biochemist") + alt_titles = list("Microbiologist", "Biochemist", "Pathologist") /datum/job/geneticist alt_titles = list("Gene Therapist") @@ -50,3 +56,13 @@ //Security /datum/job/detective alt_titles = list("Forensics Technician", "Private Investigator", "Gumshoe") + +//Supply +/datum/job/qm + alt_titles = list("Supply Chief") + +/datum/job/cargo_tech + alt_titles = list("Mail Man", "Mail Woman", "Mailroom Technician", "Deliveries Officer", "Logistics Technician") + +/datum/job/mining + alt_titles = list("Exotic Ore Miner", "Fauna Hunter", "Explorer", "Digger") //Just because you're a hunter does not excuse you from rock collecting!!!!!!!!!!!!