From 74ced69d095a1369ba82fc7314f2008e7168b8ee Mon Sep 17 00:00:00 2001 From: Anewbe Date: Sat, 28 Apr 2018 23:03:52 -0500 Subject: [PATCH 1/8] Adds Job Description code --- code/_macros.dm | 11 ++++-- code/game/jobs/job/_alt_title_helpers.dm | 16 ++++++++ code/game/jobs/job/assistant.dm | 2 + code/game/jobs/job/captain.dm | 10 ++++- code/game/jobs/job/civilian.dm | 14 ++++++- code/game/jobs/job/civilian_chaplain.dm | 3 +- code/game/jobs/job/job.dm | 38 +++++++++++++++++-- code/game/jobs/job/security.dm | 11 ++++++ code/game/jobs/job/silicon.dm | 2 + code/game/jobs/job_controller.dm | 3 +- .../preference_setup/occupation/occupation.dm | 35 +++++++++++++++++ maps/southern_cross/southern_cross_jobs.dm | 4 ++ polaris.dme | 3 +- 13 files changed, 141 insertions(+), 11 deletions(-) create mode 100644 code/game/jobs/job/_alt_title_helpers.dm diff --git a/code/_macros.dm b/code/_macros.dm index efd1e72edd..4ee54056ad 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -58,9 +58,14 @@ #define to_world(message) world << message #define to_world_log(message) world.log << message // TODO - Baystation has this log to crazy places. For now lets just world.log, but maybe look into it later. -#define log_world(message) world.log << message -#define to_file(file_entry, source_var) file_entry << source_var -#define from_file(file_entry, target_var) file_entry >> target_var +#define log_world(message) world.log << message +#define to_file(file_entry, source_var) file_entry << source_var +#define from_file(file_entry, target_var) file_entry >> target_var +#define show_browser(target, browser_content, browser_name) target << browse(browser_content, browser_name) +#define close_browser(target, browser_name) target << browse(null, browser_name) +#define show_image(target, image) target << image +#define send_rsc(target, rsc_content, rsc_name) target << browse_rsc(rsc_content, rsc_name) +#define open_link(target, url) target << link(url) #define CanInteract(user, state) (CanUseTopic(user, state) == STATUS_INTERACTIVE) diff --git a/code/game/jobs/job/_alt_title_helpers.dm b/code/game/jobs/job/_alt_title_helpers.dm new file mode 100644 index 0000000000..0c8092f7ff --- /dev/null +++ b/code/game/jobs/job/_alt_title_helpers.dm @@ -0,0 +1,16 @@ +///////////////////////////////////////// +// Alt Title Code +///////////////////////////////////////// + +/datum/alt_title + var/title = "GENERIC ALT TITLE" // What the Alt-Title is called + var/title_outfit = null // The outfit used by the alt-title. If it's the same as the base job, leave this null. + var/title_blurb = null // What's amended to the job description for this Job title. If nothing's added, leave null. + + +// Inputs a string to return an alt_title datum +/datum/job/proc/find_alt_title(var/target_title) + for(var/datum/alt_title/A in alt_titles) + if(A.title == target_title) + return A + return null \ No newline at end of file diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm index 4d86a3ed1c..9ec6e2106b 100644 --- a/code/game/jobs/job/assistant.dm +++ b/code/game/jobs/job/assistant.dm @@ -11,7 +11,9 @@ economic_modifier = 1 access = list() //See /datum/job/assistant/get_access() minimal_access = list() //See /datum/job/assistant/get_access() + outfit_type = /decl/hierarchy/outfit/job/assistant + job_description = "An Assistant does whatever is requested of them. Though they are part of the crew, they have no real authority." alt_titles = list("Technical Assistant","Medical Intern","Research Assistant", "Visitor" = /decl/hierarchy/outfit/job/assistant/visitor, "Resident" = /decl/hierarchy/outfit/job/assistant/resident) diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index 85afcaa294..8d4e47ee3f 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -22,6 +22,9 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) ideal_character_age = 70 // Old geezer captains ftw outfit_type = /decl/hierarchy/outfit/job/captain + job_description = "The Colony Director manages the other Command Staff, and through them the rest of the station. Though they have access to everything, \ + they do not understand everything, and are expected to delegate tasks to the appropriate crew member. The Colony Director is expected to \ + have an understanding of Standard Operating Procedure, and is subject to it, and legal action, in the same way as every other crew member." alt_titles = list("Site Manager", "Overseer") /* @@ -30,6 +33,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) if(.) H.implant_loyalty(src) */ + /datum/job/captain/get_access() return get_all_station_access() @@ -53,6 +57,9 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) ideal_character_age = 50 outfit_type = /decl/hierarchy/outfit/job/hop + job_description = "The Head of Personnel manages the Service department, the Exploration team, and most other civilians. They also \ + manage the Supply department, through the Quartermaster. In addition, the Head of Personnel oversees the personal accounts \ + of the crew, including their money and access. If necessary, the Head of Personnel is first in line to assume Acting Command." alt_titles = list("Crew Resources Officer") access = list(access_security, access_sec_doors, access_brig, access_forensics_lockers, @@ -72,7 +79,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) title = "Command Secretary" flag = BRIDGE department = "Command" - head_position = 1 department_flag = CIVILIAN faction = "Station" total_positions = 2 @@ -87,3 +93,5 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) minimal_access = list(access_heads, access_keycard_auth) outfit_type = /decl/hierarchy/outfit/job/secretary + job_description = "A Command Secretary handles paperwork duty for the Heads of Staff, so they can better focus on managing their departments. \ + They are not Heads of Staff, and have no real authority." diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index d31a551726..a344b40985 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -14,6 +14,7 @@ minimal_access = list(access_bar) outfit_type = /decl/hierarchy/outfit/job/service/bartender + job_description = "A Bartender mixes drinks for the crew. They generally have permission to charge for drinks or deny service to unruly patrons." alt_titles = list("Barista" = /decl/hierarchy/outfit/job/service/bartender/barista) @@ -32,6 +33,7 @@ minimal_access = list(access_kitchen) outfit_type = /decl/hierarchy/outfit/job/service/chef + job_description = "A Chef cooks food for the crew. They generally have permission to charge for food or deny service to unruly diners." alt_titles = list("Cook") /datum/job/hydro @@ -49,6 +51,7 @@ minimal_access = list(access_hydroponics) outfit_type = /decl/hierarchy/outfit/job/service/gardener + job_description = "A Botanist grows plants for the Chef and Bartender." alt_titles = list("Gardener") //Cargo @@ -71,6 +74,7 @@ ideal_character_age = 40 outfit_type = /decl/hierarchy/outfit/job/cargo/qm + job_description = "The Quartermaster manages the Supply department, checking cargo orders and ensuring supplies get to where they are needed." alt_titles = list("Supply Chief") /datum/job/cargo_tech @@ -88,6 +92,8 @@ minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting) outfit_type = /decl/hierarchy/outfit/job/cargo/cargo_tech + job_description = "A Cargo Technician fills and delivers cargo orders. They are encouraged to return delivered crates to the Cargo Shuttle, \ + because Central Command gives a partial refund." /datum/job/mining title = "Shaft Miner" @@ -105,6 +111,7 @@ minimal_access = list(access_mining, access_mining_station, access_mailsorting) outfit_type = /decl/hierarchy/outfit/job/cargo/mining + job_description = "A Shaft Miner mines and smelts minerals to be delivered to departments that need them." alt_titles = list("Drill Technician") //Service @@ -123,6 +130,7 @@ minimal_access = list(access_janitor, access_maint_tunnels) outfit_type = /decl/hierarchy/outfit/job/service/janitor + job_description = "A Janitor keeps the station clean, as long as it doesn't interfere with active crime scenes." alt_titles = list("Custodian") //More or less assistants @@ -141,13 +149,14 @@ minimal_access = list(access_library) outfit_type = /decl/hierarchy/outfit/job/librarian + job_description = "The Librarian curates the book selection in the Library, so the crew might enjoy it." alt_titles = list("Journalist", "Writer") //var/global/lawyer = 0//Checks for another lawyer //This changed clothes on 2nd lawyer, both IA get the same dreds. /datum/job/lawyer title = "Internal Affairs Agent" flag = LAWYER - department = "Civilian" + department = "Internal Affairs" department_flag = CIVILIAN faction = "Station" total_positions = 2 @@ -161,6 +170,9 @@ minimal_player_age = 7 outfit_type = /decl/hierarchy/outfit/job/internal_affairs_agent + job_description = "An Internal Affairs Agent makes sure that the crew is following Standard Operating Procedure. They also \ + handle complaints against crew members, and can have issues brought to the attention of Central Command, \ + assuming their paperwork is in order." /* /datum/job/lawyer/equip(var/mob/living/carbon/human/H) diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm index 2eece781ec..643c7e258e 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -12,9 +12,10 @@ idtype = /obj/item/weapon/card/id/civilian/chaplain access = list(access_morgue, access_chapel_office, access_crematorium, access_maint_tunnels) minimal_access = list(access_chapel_office, access_crematorium) - alt_titles = list("Counselor") outfit_type = /decl/hierarchy/outfit/job/chaplain + job_description = "The Chaplain ministers to the spiritual needs of the crew." + alt_titles = list("Counselor") /datum/job/chaplain/equip(var/mob/living/carbon/human/H, var/alt_title, var/ask_questions = TRUE) . = ..() diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 6a51a8a560..376dfab609 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -14,7 +14,7 @@ var/supervisors = null // Supervisors, who this person answers to directly var/selection_color = "#ffffff" // Selection screen color var/idtype = /obj/item/weapon/card/id // The type of the ID the player will have - var/list/alt_titles // List of alternate titles, if any + var/list/alt_titles = list() // List of alternate titles, if any var/req_admin_notify // 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/minimal_player_age = 0 // If you have use_age_restriction_for_jobs config option enabled and the database set up, this option will add a requirement for players to be at least minimal_player_age days old. (meaning they first signed in at least that many days before.) var/department = null // Does this position have a department tag? @@ -25,7 +25,10 @@ var/account_allowed = 1 // Does this job type come with a station account? var/economic_modifier = 2 // With how much does this job modify the initial account amount? - var/outfit_type + var/outfit_type // What outfit datum does this job use in its default title? + + // Description of the job's role and minimum responsibilities. + var/job_description = "This Job doesn't have a description! Please report it!" /datum/job/proc/equip(var/mob/living/carbon/human/H, var/alt_title) var/decl/hierarchy/outfit/outfit = get_outfit(H, alt_title) @@ -117,4 +120,33 @@ return (current_positions < total_positions) || (total_positions == -1) /datum/job/proc/has_alt_title(var/mob/H, var/supplied_title, var/desired_title) - return (supplied_title == desired_title) || (H.mind && H.mind.role_alt_title == desired_title) \ No newline at end of file + return (supplied_title == desired_title) || (H.mind && H.mind.role_alt_title == desired_title) + +/datum/job/proc/get_description_blurb() + var/message = "" + message += job_description +/* if(alt_titles) + //DO THING + +*/ + return message + +/datum/job/proc/get_job_icon() + if(!job_master.job_icons[title]) + var/mob/living/carbon/human/dummy/mannequin/mannequin = get_mannequin("#job_icon") + dress_mannequin(mannequin) + mannequin.dir = SOUTH + var/icon/preview_icon = getFlatIcon(mannequin) + + preview_icon.Scale(preview_icon.Width() * 2, preview_icon.Height() * 2) // Scaling here to prevent blurring in the browser. + job_master.job_icons[title] = preview_icon + + return job_master.job_icons[title] + +/datum/job/proc/dress_mannequin(var/mob/living/carbon/human/dummy/mannequin/mannequin) + mannequin.delete_inventory(TRUE) + equip_preview(mannequin) + if(mannequin.back) + var/obj/O = mannequin.back + mannequin.drop_from_inventory(O) + qdel(O) \ No newline at end of file diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 6b753f519c..a0688e7243 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -24,6 +24,10 @@ minimal_player_age = 14 outfit_type = /decl/hierarchy/outfit/job/security/hos + job_description = "You manage the Security Department, working to keep your Security Officers in place and able to properly handle threats, criminal or otherwise. \ + You are also expected to keep your fellow Department Heads, as well as the crew, aware of developing situations. \ + On top of your management role, you may, if necessary, perform the duties of absent Security roles, such as distributing gear from the Armory. \ + Remember: No one is above the Law. Not even you." alt_titles = list("Security Commander", "Chief of Security") /datum/job/warden @@ -41,7 +45,10 @@ access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_morgue, access_external_airlocks) minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_external_airlocks) minimal_player_age = 5 + outfit_type = /decl/hierarchy/outfit/job/security/warden + job_description = "You watch over the Armory, the Brig, and any prisoners brought in. You may be called upon to take charge of the Security Department, \ + if no Head of Security is present." /datum/job/detective title = "Detective" @@ -58,7 +65,9 @@ minimal_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_eva, access_external_airlocks) economic_modifier = 5 minimal_player_age = 3 + outfit_type = /decl/hierarchy/outfit/job/security/detective + job_description = "You use your forensics training to help determine who has commited crimes that no one witnessed, or no one survived." alt_titles = list("Forensic Technician" = /decl/hierarchy/outfit/job/security/detective/forensic, "Investigator") /datum/job/officer @@ -76,5 +85,7 @@ access = list(access_security, access_eva, access_sec_doors, access_brig, access_maint_tunnels, access_morgue, access_external_airlocks) minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_maint_tunnels, access_external_airlocks) minimal_player_age = 3 + outfit_type = /decl/hierarchy/outfit/job/security/officer + job_description = "Get Baton. Set Intent to Harm." alt_titles = list("Junior Officer") \ No newline at end of file diff --git a/code/game/jobs/job/silicon.dm b/code/game/jobs/job/silicon.dm index 1b063894ba..f12503dd98 100644 --- a/code/game/jobs/job/silicon.dm +++ b/code/game/jobs/job/silicon.dm @@ -11,6 +11,7 @@ minimal_player_age = 7 account_allowed = 0 economic_modifier = 0 + outfit_type = /decl/hierarchy/outfit/job/silicon/ai /datum/job/ai/equip(var/mob/living/carbon/human/H) if(!H) return 0 @@ -45,6 +46,7 @@ alt_titles = list("Robot", "Drone") account_allowed = 0 economic_modifier = 0 + outfit_type = /decl/hierarchy/outfit/job/silicon/cyborg /datum/job/cyborg/equip(var/mob/living/carbon/human/H) if(!H) return 0 diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 75e17bd792..efd749e54d 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -11,7 +11,8 @@ var/global/datum/controller/occupations/job_master var/list/unassigned = list() //Debug info var/list/job_debug = list() - + //Cache of icons for job info window + var/list/job_icons = list() proc/SetupOccupations(var/faction = "Station") occupations = list() diff --git a/code/modules/client/preference_setup/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm index 58a8003cf9..e3639a2187 100644 --- a/code/modules/client/preference_setup/occupation/occupation.dm +++ b/code/modules/client/preference_setup/occupation/occupation.dm @@ -82,8 +82,10 @@ index = 0 . += "" + var/rank = job.title lastJob = job + . += "" if(jobban_isbanned(user, rank)) . += "[rank] \[BANNED]" continue @@ -166,6 +168,39 @@ else if(href_list["set_job"]) if(SetJob(user, href_list["set_job"])) return (pref.equip_preview_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH) + + else if(href_list["job_info"]) + var/rank = href_list["job_info"] + var/datum/job/job = job_master.GetJob(rank) + var/dat = list() + + dat += "



" + if(job.alt_titles) + dat += "Alternate titles: [english_list(job.alt_titles)]." + send_rsc(user, job.get_job_icon(), "job[ckey(rank)].png") + dat += "" + if(job.department) + dat += "Department: [job.department]." + if(job.head_position) + dat += "You manage this department." + + dat += "You answer to [job.supervisors] normally." + + dat += "


" + if(config.wikiurl) + dat += "
Open wiki page in browser" + + var/description = job.get_description_blurb() + if(description) + dat += html_encode(description) + var/datum/browser/popup = new(user, "Job Info", "[capitalize(rank)]", 430, 520, src) + popup.set_content(jointext(dat,"
")) + popup.open() + + else if(href_list["job_wiki"]) + var/rank = href_list["job_wiki"] + open_link(user,"[config.wikiurl][rank]") + return ..() /datum/category_item/player_setup_item/occupation/proc/SetPlayerAltTitle(datum/job/job, new_title) diff --git a/maps/southern_cross/southern_cross_jobs.dm b/maps/southern_cross/southern_cross_jobs.dm index 12166d1478..ac74199d42 100644 --- a/maps/southern_cross/southern_cross_jobs.dm +++ b/maps/southern_cross/southern_cross_jobs.dm @@ -82,7 +82,9 @@ var/const/access_explorer = 43 economic_modifier = 4 access = list(access_pilot, access_cargo, access_mining, access_mining_station) minimal_access = list(access_pilot, access_cargo, access_mining, access_mining_station) + outfit_type = /decl/hierarchy/outfit/job/pilot + job_description = "You fly one of the shuttles that dock in the station hangars." /datum/job/explorer title = "Explorer" @@ -98,7 +100,9 @@ var/const/access_explorer = 43 economic_modifier = 4 access = list(access_explorer) minimal_access = list(access_explorer) + outfit_type = /decl/hierarchy/outfit/job/explorer2 + /* alt_titles = list( "Explorer Technician" = /decl/hierarchy/outfit/job/explorer2/technician, diff --git a/polaris.dme b/polaris.dme index 611d1daa6b..7d6311ba1c 100644 --- a/polaris.dme +++ b/polaris.dme @@ -578,6 +578,7 @@ #include "code\game\jobs\job_controller.dm" #include "code\game\jobs\jobs.dm" #include "code\game\jobs\whitelist.dm" +#include "code\game\jobs\job\_alt_title_helpers.dm" #include "code\game\jobs\job\assistant.dm" #include "code\game\jobs\job\captain.dm" #include "code\game\jobs\job\civilian.dm" @@ -2433,7 +2434,7 @@ #include "code\ZAS\Zone.dm" #include "interface\interface.dm" #include "interface\skin.dmf" -#include "maps\southern_cross\southern_cross.dm" +#include "maps\example\example.dm" #include "maps\submaps\_readme.dm" #include "maps\submaps\space_submaps\space.dm" #include "maps\submaps\surface_submaps\mountains\mountains.dm" From 48c1b6b28746ea00c87dedf964c114a75b24dac0 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Sun, 17 Jun 2018 00:39:07 -0500 Subject: [PATCH 2/8] Adds job and alt title descriptions --- .../{_alt_title_helpers.dm => _alt_title.dm} | 10 +- code/game/jobs/job/assistant.dm | 42 +++- code/game/jobs/job/captain.dm | 38 +++- code/game/jobs/job/civilian.dm | 183 ++++++++++++++---- code/game/jobs/job/civilian_chaplain.dm | 10 +- code/game/jobs/job/engineering.dm | 48 ++++- code/game/jobs/job/job.dm | 26 ++- code/game/jobs/job/medical.dm | 116 ++++++++++- code/game/jobs/job/science.dm | 77 +++++++- code/game/jobs/job/security.dm | 71 +++++-- code/game/jobs/job/silicon.dm | 33 +++- .../preference_setup/occupation/occupation.dm | 16 +- polaris.dme | 4 +- 13 files changed, 576 insertions(+), 98 deletions(-) rename code/game/jobs/job/{_alt_title_helpers.dm => _alt_title.dm} (60%) diff --git a/code/game/jobs/job/_alt_title_helpers.dm b/code/game/jobs/job/_alt_title.dm similarity index 60% rename from code/game/jobs/job/_alt_title_helpers.dm rename to code/game/jobs/job/_alt_title.dm index 0c8092f7ff..1cb7fde6b6 100644 --- a/code/game/jobs/job/_alt_title_helpers.dm +++ b/code/game/jobs/job/_alt_title.dm @@ -4,13 +4,5 @@ /datum/alt_title var/title = "GENERIC ALT TITLE" // What the Alt-Title is called - var/title_outfit = null // The outfit used by the alt-title. If it's the same as the base job, leave this null. var/title_blurb = null // What's amended to the job description for this Job title. If nothing's added, leave null. - - -// Inputs a string to return an alt_title datum -/datum/job/proc/find_alt_title(var/target_title) - for(var/datum/alt_title/A in alt_titles) - if(A.title == target_title) - return A - return null \ No newline at end of file + var/title_outfit = null // The outfit used by the alt-title. If it's the same as the base job, leave this null. \ No newline at end of file diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm index 9ec6e2106b..ba08ca4edb 100644 --- a/code/game/jobs/job/assistant.dm +++ b/code/game/jobs/job/assistant.dm @@ -1,3 +1,6 @@ +////////////////////////////////// +// Assistant +////////////////////////////////// /datum/job/assistant title = "Assistant" flag = ASSISTANT @@ -14,12 +17,45 @@ outfit_type = /decl/hierarchy/outfit/job/assistant job_description = "An Assistant does whatever is requested of them. Though they are part of the crew, they have no real authority." - alt_titles = list("Technical Assistant","Medical Intern","Research Assistant", - "Visitor" = /decl/hierarchy/outfit/job/assistant/visitor, - "Resident" = /decl/hierarchy/outfit/job/assistant/resident) + alt_titles = list("Assistant" = /datum/alt_title/assistant, "Technical Assistant" = /datum/alt_title/tech_assist, + "Medical Intern"= /datum/alt_title/med_intern, "Research Assistant" = /datum/alt_title/research_assist, + "Visitor" = /datum/alt_title/visitor) /datum/job/assistant/get_access() if(config.assistant_maint) return list(access_maint_tunnels) else return list() + +// Assistant Alt Titles +/datum/alt_title/assistant + title = "Assistant" + title_blurb = "An Assistant does whatever is requested of them. Though they are part of the crew, they have no real authority." + +/datum/alt_title/tech_assist + title = "Technical Assistant" + title_blurb = "A Technical Assistant attempts to provide whatever the Engineering department needs. They are not proper Engineers, and are \ + often in training to become an Engineer. A Technical Assistant has no real authority." + +/datum/alt_title/med_intern + title = "Medical Intern" + title_blurb = "A Medical Intern attempts to provide whatever the Medical department needs. They are frequently asked to pay attention to \ + the suit sensors console. A Medical Intern has no real authority." + +/datum/alt_title/research_assist + title = "Research Assistant" + title_blurb = "A Research Assistant attempts to assist anyone working in the Research department. They are expected to follow the instruction \ + of proper Research staff, as it is frequently a matter of safety. A Research Assistant has no real authority." + +/datum/alt_title/visitor + title = "Visitor" + title_blurb = "A Visitor is anyone who has arrived on the station but does not have a specific job to do. Many off-duty crewmembers \ + who care to make use of the station's facilities arrive as Visitors. Properly registered Vistors are considered \ + to be part of the crew for most if not all purposes, but they have no real authority." + title_outfit = /decl/hierarchy/outfit/job/assistant/visitor + +/datum/alt_title/resident // Just in case it makes a comeback + title = "Resident" + title_blurb = "A Resident is an individual who resides on the station, frequently in a different part of the station than what is seen. \ + They are considered to be part of the crew for most purposes, but have no real authority." + title_outfit = /decl/hierarchy/outfit/job/assistant/resident \ No newline at end of file diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index 8d4e47ee3f..6db1742700 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -1,5 +1,9 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) +////////////////////////////////// +// Captain +////////////////////////////////// + /datum/job/captain title = "Colony Director" flag = CAPTAIN @@ -25,7 +29,8 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) job_description = "The Colony Director manages the other Command Staff, and through them the rest of the station. Though they have access to everything, \ they do not understand everything, and are expected to delegate tasks to the appropriate crew member. The Colony Director is expected to \ have an understanding of Standard Operating Procedure, and is subject to it, and legal action, in the same way as every other crew member." - alt_titles = list("Site Manager", "Overseer") + alt_titles = list("Colony Director" = /datum/alt_title/captain, "Site Manager" = /datum/alt_title/site_manager, + "Overseer" = /datum/alt_title/overseer) /* /datum/job/captain/equip(var/mob/living/carbon/human/H) @@ -37,6 +42,20 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) /datum/job/captain/get_access() return get_all_station_access() + +// Captain Alt Titles +/datum/alt_title/captain // Screw it, this is the default, it has the default path + title = "Colony Director" + +/datum/alt_title/site_manager + title = "Site Manager" + +/datum/alt_title/overseer + title = "Overseer" + +////////////////////////////////// +// Head of Personnel +////////////////////////////////// /datum/job/hop title = "Head of Personnel" flag = HOP @@ -60,7 +79,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) job_description = "The Head of Personnel manages the Service department, the Exploration team, and most other civilians. They also \ manage the Supply department, through the Quartermaster. In addition, the Head of Personnel oversees the personal accounts \ of the crew, including their money and access. If necessary, the Head of Personnel is first in line to assume Acting Command." - alt_titles = list("Crew Resources Officer") + alt_titles = list("Head of Personnel" = /datum/alt_title/hop, "Crew Resources Officer" = /datum/alt_title/cro) access = list(access_security, access_sec_doors, access_brig, access_forensics_lockers, access_medical, access_engine, access_change_ids, access_ai_upload, access_eva, access_heads, @@ -75,6 +94,17 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) access_chapel_office, access_library, access_research, access_mining, access_heads_vault, access_mining_station, access_hop, access_RC_announce, access_keycard_auth, access_gateway) +// HOP Alt Titles +/datum/alt_title/hop + title = "Head of Personnel" + +/datum/alt_title/cro + title = "Crew Resources Officer" + +////////////////////////////////// +// Command Secretary +////////////////////////////////// + /datum/job/secretary title = "Command Secretary" flag = BRIDGE @@ -95,3 +125,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) outfit_type = /decl/hierarchy/outfit/job/secretary job_description = "A Command Secretary handles paperwork duty for the Heads of Staff, so they can better focus on managing their departments. \ They are not Heads of Staff, and have no real authority." + +// Command Secretary Alt Title +/datum/alt_title/command_secretary + title = "Command Secretary" \ No newline at end of file diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index a344b40985..c5c92c842f 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -1,4 +1,9 @@ //Food + +////////////////////////////////// +// Bartender +////////////////////////////////// + /datum/job/bartender title = "Bartender" flag = BARTENDER @@ -15,8 +20,21 @@ outfit_type = /decl/hierarchy/outfit/job/service/bartender job_description = "A Bartender mixes drinks for the crew. They generally have permission to charge for drinks or deny service to unruly patrons." - alt_titles = list("Barista" = /decl/hierarchy/outfit/job/service/bartender/barista) + alt_titles = list("Bartender" = /datum/alt_title/bartender, "Barista" = /datum/alt_title/barista) +// Bartender Alt Titles +/datum/alt_title/bartender + title = "Bartender" + +/datum/alt_title/barista + title = "Barista" + title_blurb = "A barista mans the Cafe, serving primarily non-alcoholic drinks to the crew. They generally have permission to charge for drinks \ + or deny service to unruly patrons." + title_outfit = /decl/hierarchy/outfit/job/service/bartender/barista + +////////////////////////////////// +// Chef +////////////////////////////////// /datum/job/chef title = "Chef" @@ -34,7 +52,19 @@ outfit_type = /decl/hierarchy/outfit/job/service/chef job_description = "A Chef cooks food for the crew. They generally have permission to charge for food or deny service to unruly diners." - alt_titles = list("Cook") + alt_titles = list("Chef" = /datum/alt_title/chef, "Cook" = /datum/alt_title/cook) + +// Chef Alt Titles +/datum/alt_title/chef + title = "Chef" + +/datum/alt_title/cook + title = "Cook" + title_blurb = "Ahelp if you see this" + +////////////////////////////////// +// Botanist +////////////////////////////////// /datum/job/hydro title = "Botanist" @@ -52,9 +82,82 @@ outfit_type = /decl/hierarchy/outfit/job/service/gardener job_description = "A Botanist grows plants for the Chef and Bartender." - alt_titles = list("Gardener") + alt_titles = list("Botanist" = /datum/alt_title/botanist, "Gardener" = /datum/alt_title/gardener) -//Cargo +//Botanist Alt Titles +/datum/alt_title/botanist + title = "Botanist" + +/datum/alt_title/gardener + title = "Gardener" + title_blurb = "A Gardener may be less professional than their counterparts, and are more likely to tend to the public gardens if they aren't needed elsewhere." + +////////////////////////////////// +// Janitor +////////////////////////////////// +/datum/job/janitor + title = "Janitor" + flag = JANITOR + department = "Civilian" + department_flag = CIVILIAN + faction = "Station" + total_positions = 2 + spawn_positions = 2 + supervisors = "the head of personnel" + selection_color = "#515151" + idtype = /obj/item/weapon/card/id/civilian/janitor + access = list(access_janitor, access_maint_tunnels) + minimal_access = list(access_janitor, access_maint_tunnels) + + outfit_type = /decl/hierarchy/outfit/job/service/janitor + job_description = "A Janitor keeps the station clean, as long as it doesn't interfere with active crime scenes." + alt_titles = list("Janitor" = /datum/alt_title/janitor, "Custodian" = /datum/alt_title/custodian) + +// Janitor Alt Titles +/datum/alt_title/janitor + title = "Janitor" + +/datum/alt_title/custodian + title = "Custodian" + title_blurb = "Ahelp if you see this" + +////////////////////////////////// +// Librarian +////////////////////////////////// +/datum/job/librarian + title = "Librarian" + flag = LIBRARIAN + department = "Civilian" + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the head of personnel" + selection_color = "#515151" + idtype = /obj/item/weapon/card/id/civilian/librarian + access = list(access_library, access_maint_tunnels) + minimal_access = list(access_library) + + outfit_type = /decl/hierarchy/outfit/job/librarian + job_description = "The Librarian curates the book selection in the Library, so the crew might enjoy it." + alt_titles = list("Librarian" = /datum/alt_title/librarian, "Journalist" = /datum/alt_title/journalist, "Writer" = /datum/alt_title/writer) + +// Librarian Alt Titles +/datum/alt_title/librarian + title = "Librarian" + +/datum/alt_title/journalist + title = "Journalist" + title_blurb = "The Journalist uses the Library as a base of operations, from which they can report the news and goings-on on the station with their camera." + +/datum/alt_title/writer + title = "Writer" + title_blurb = "The Writer uses the Library as a quiet place to write whatever it is they choose to write." + + +////////////////////////////////// +// Quartermaster +////////////////////////////////// /datum/job/qm title = "Quartermaster" flag = QUARTERMASTER @@ -75,8 +178,18 @@ outfit_type = /decl/hierarchy/outfit/job/cargo/qm job_description = "The Quartermaster manages the Supply department, checking cargo orders and ensuring supplies get to where they are needed." - alt_titles = list("Supply Chief") + alt_titles = list("Quartermaster" = /datum/alt_title/qm, "Supply Chief" = /datum/alt_title/supply_chief) +// Quartermaster Alt Titles +/datum/alt_title/qm + title = "Quartermaster" + +/datum/alt_title/supply_chief + title = "Supply Chief" + +////////////////////////////////// +// Cargo Tech +////////////////////////////////// /datum/job/cargo_tech title = "Cargo Technician" flag = CARGOTECH @@ -95,6 +208,14 @@ job_description = "A Cargo Technician fills and delivers cargo orders. They are encouraged to return delivered crates to the Cargo Shuttle, \ because Central Command gives a partial refund." +// Cargo Tech Alt Titles +/datum/alt_title/cargo_tech + title = "Cargo Tech" + +////////////////////////////////// +// Shaft Miner +////////////////////////////////// + /datum/job/mining title = "Shaft Miner" flag = MINER @@ -112,45 +233,19 @@ outfit_type = /decl/hierarchy/outfit/job/cargo/mining job_description = "A Shaft Miner mines and smelts minerals to be delivered to departments that need them." - alt_titles = list("Drill Technician") + alt_titles = list("Shaft Miner" = /datum/alt_title/miner, "Drill Technician" = /datum/alt_title/drill_tech) -//Service -/datum/job/janitor - title = "Janitor" - flag = JANITOR - department = "Civilian" - department_flag = CIVILIAN - faction = "Station" - total_positions = 2 - spawn_positions = 2 - supervisors = "the head of personnel" - selection_color = "#515151" - idtype = /obj/item/weapon/card/id/civilian/janitor - access = list(access_janitor, access_maint_tunnels) - minimal_access = list(access_janitor, access_maint_tunnels) +// Shaft Miner Alt Titles +/datum/alt_title/miner + title = "Shaft Miner" - outfit_type = /decl/hierarchy/outfit/job/service/janitor - job_description = "A Janitor keeps the station clean, as long as it doesn't interfere with active crime scenes." - alt_titles = list("Custodian") +/datum/alt_title/drill_tech + title = "Drill Technician" + title_blurb = "A Drill Technician specializes in operating and maintaining the machinery needed to extract ore from veins deep below the surface." -//More or less assistants -/datum/job/librarian - title = "Librarian" - flag = LIBRARIAN - department = "Civilian" - department_flag = CIVILIAN - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#515151" - idtype = /obj/item/weapon/card/id/civilian/librarian - access = list(access_library, access_maint_tunnels) - minimal_access = list(access_library) - - outfit_type = /decl/hierarchy/outfit/job/librarian - job_description = "The Librarian curates the book selection in the Library, so the crew might enjoy it." - alt_titles = list("Journalist", "Writer") +////////////////////////////////// +// Internal Affairs Agent +////////////////////////////////// //var/global/lawyer = 0//Checks for another lawyer //This changed clothes on 2nd lawyer, both IA get the same dreds. /datum/job/lawyer @@ -179,4 +274,8 @@ . = ..() if(.) H.implant_loyalty(H) -*/ \ No newline at end of file +*/ + +// IAA Alt Titles +/datum/alt_title/iaa + title = "Internal Affairs Agent" \ No newline at end of file diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm index 643c7e258e..4fd38fd617 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -15,7 +15,15 @@ outfit_type = /decl/hierarchy/outfit/job/chaplain job_description = "The Chaplain ministers to the spiritual needs of the crew." - alt_titles = list("Counselor") + alt_titles = list("Chaplain" = /datum/alt_title/chaplain, "Counselor" = /datum/alt_title/counselor) + +// Chaplain Alt Titles +/datum/alt_title/chaplain + title = "Chaplain" + +/datum/alt_title/counselor + title = "Counselor" + title_blurb = "The Counselor attends to the emotional needs of the crew, without a specific medicinal or spiritual focus." /datum/job/chaplain/equip(var/mob/living/carbon/human/H, var/alt_title, var/ask_questions = TRUE) . = ..() diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index bbc1903fd4..a0faf97031 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -1,3 +1,6 @@ +////////////////////////////////// +// Chief Engineer +////////////////////////////////// /datum/job/chief_engineer title = "Chief Engineer" flag = CHIEF @@ -28,7 +31,17 @@ minimal_player_age = 7 outfit_type = /decl/hierarchy/outfit/job/engineering/chief_engineer + job_description = "The Chief Engineer manages the Engineering Department, ensuring that the Engineers work on what needs to be done, handling distribution \ + of manpower as much as they handle hands-on operations and repairs. They are also expected to keep the rest of the station informed of \ + any structural threats to the station that may be hazardous to health or disruptive to work." +// Chief Engineer Alt Titles +/datum/alt_title/chief_engineer + title = "Chief Engineer" + +////////////////////////////////// +// Engineer +////////////////////////////////// /datum/job/engineer title = "Station Engineer" flag = ENGINEER @@ -43,12 +56,37 @@ economic_modifier = 5 access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics) minimal_access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction) - alt_titles = list("Maintenance Technician","Engine Technician","Electrician") + alt_titles = list("Station Engineer" = /datum/alt_title/engineer, "Maintenance Technician" = /datum/alt_title/maint_tech, + "Engine Technician" = /datum/alt_title/engine_tech, "Electrician" = /datum/alt_title/electrician) minimal_player_age = 3 outfit_type = /decl/hierarchy/outfit/job/engineering/engineer + job_description = "An Engineer keeps the station running. They repair damages, keep the atmosphere stable, and ensure that power is being \ + generated and distributed. On quiet shifts, they may be called upon to make cosmetic alterations to the station." +// Engineer Alt Titles +/datum/alt_title/engineer + title = "Station Engineer" + +/datum/alt_title/maint_tech + title = "Maintenance Technician" + title_blurb = "A Maintenace Technician is generally a junior Engineer, and can be expected to run the mildly unpleasant or boring tasks that other \ + Engineers don't care to do." + +/datum/alt_title/engine_tech + title = "Engine Technician" + title_blurb = "An Engine Technician tends to the engine, most commonly a Supermatter crystal. They are expected to be able to keep it stable, and \ + possibly even run it beyond normal tolerances." + +/datum/alt_title/electrician + title = "Electrician" + title_blurb = "An Electrician's primary duty is making sure power is properly distributed thoughout the station, utilizing solars, substations, and other \ + methods to ensure every department has power in an emergency." + +////////////////////////////////// +// Atmos Tech +////////////////////////////////// /datum/job/atmos title = "Atmospheric Technician" flag = ATMOSTECH @@ -66,4 +104,10 @@ minimal_player_age = 3 - outfit_type = /decl/hierarchy/outfit/job/engineering/atmos \ No newline at end of file + outfit_type = /decl/hierarchy/outfit/job/engineering/atmos + job_description = "An Atmospheric Technician is primarily concerned with keeping the station's atmosphere breathable. They are expected to have a good \ + understanding of the pipes, vents, and scrubbers that move gasses around the station, and to be familiar with proper firefighting procedure." + +// Atmos Tech Alt Titles +/datum/alt_title/atmos_tech + title = "Atmospheric Technician" \ No newline at end of file diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 376dfab609..5f88deeb0a 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -14,7 +14,7 @@ var/supervisors = null // Supervisors, who this person answers to directly var/selection_color = "#ffffff" // Selection screen color var/idtype = /obj/item/weapon/card/id // The type of the ID the player will have - var/list/alt_titles = list() // List of alternate titles, if any + var/list/alt_titles = list() // List of alternate titles; if a job has alt-titles, it MUST have one for the base job var/req_admin_notify // 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/minimal_player_age = 0 // If you have use_age_restriction_for_jobs config option enabled and the database set up, this option will add a requirement for players to be at least minimal_player_age days old. (meaning they first signed in at least that many days before.) var/department = null // Does this position have a department tag? @@ -39,7 +39,13 @@ /datum/job/proc/get_outfit(var/mob/living/carbon/human/H, var/alt_title) if(alt_title && alt_titles) - . = alt_titles[alt_title] + for(var/alt in alt_titles) + if(alt_title == alt) + var/typepath = alt_titles[alt] + var/datum/alt_title/A = new typepath() + if(A.title_outfit) + . = A.title_outfit + . = . || outfit_type . = outfit_by_type(.) @@ -122,13 +128,17 @@ /datum/job/proc/has_alt_title(var/mob/H, var/supplied_title, var/desired_title) return (supplied_title == desired_title) || (H.mind && H.mind.role_alt_title == desired_title) -/datum/job/proc/get_description_blurb() - var/message = "" - message += job_description -/* if(alt_titles) - //DO THING +/datum/job/proc/get_description_blurb(var/alt_title) + var/list/message = list() + message |= job_description -*/ + if(alt_title && alt_titles) + for(var/alt in alt_titles) + if(alt_title == alt) + var/typepath = alt_titles[alt] + var/datum/alt_title/A = new typepath() + if(A.title_blurb) + message |= A.title_blurb return message /datum/job/proc/get_job_icon() diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index a8e5d6a3fc..4035a9d686 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -1,3 +1,6 @@ +////////////////////////////////// +// Chief Medical Officer +////////////////////////////////// /datum/job/cmo title = "Chief Medical Officer" flag = CMO @@ -24,7 +27,18 @@ ideal_character_age = 50 outfit_type = /decl/hierarchy/outfit/job/medical/cmo + job_description = "The CMO manages the Medical department and is a position requiring experience and skill; their goal is to ensure that their \ + staff keep the station’s crew healthy and whole. They are primarily interested in making sure that patients are safely found and \ + transported to Medical for treatment. They are expected to keep the crew informed about threats to their health and saftey, and \ + about the importance of Suit Sensors." +// CMO Alt Titles +/datum/alt_title/cmo + title = "Chief Medical Officer" + +////////////////////////////////// +// Medical Doctor +////////////////////////////////// /datum/job/doctor title = "Medical Doctor" flag = DOCTOR @@ -40,13 +54,49 @@ access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_eva) minimal_access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_virology, access_eva) outfit_type = /decl/hierarchy/outfit/job/medical/doctor - alt_titles = list( - "Surgeon" = /decl/hierarchy/outfit/job/medical/doctor/surgeon, - "Emergency Physician" = /decl/hierarchy/outfit/job/medical/doctor/emergency_physician, - "Nurse" = /decl/hierarchy/outfit/job/medical/doctor/nurse, - "Virologist" = /decl/hierarchy/outfit/job/medical/doctor/virologist) + job_description = "A Medical Doctor is a Jack-of-All-Trades Medical title, covering a variety of skill levels and minor specializations. They are likely \ + familiar with basic first aid, and a number of accompanying medications, and can generally save, if not cure, a majority of the \ + patients they encounter." + alt_titles = list("Medical Doctor" = /datum/alt_title/doctor, + "Surgeon" = /datum/alt_title/surgeon, + "Emergency Physician" = /datum/alt_title/emergency_physician, + "Nurse" = /datum/alt_title/nurse, + "Virologist" = /datum/alt_title/virologist) + +//Medical Doctor Alt Titles +/datum/alt_title/doctor + title = "Medical Doctor" + +/datum/alt_title/surgeon + title = "Surgeon" + title_blurb = "A surgeon specializes in providing surgical aid to injured patients, up to and including amputation and limb re-attachement. They are expected \ + to know the ins and outs of anesthesia and surgery." + title_outfit = /decl/hierarchy/outfit/job/medical/doctor/surgeon + +/datum/alt_title/emergency_physician + title = "Emergency Physician" + title_blurb = "An Emergency Physician is a Medical professional trained for stabilizing and treating severely injured and/or dying patients. \ + They are generally the first response for any such individual brought to the Medbay, and can sometimes be expected to help their patients \ + make a full recovery." + title_outfit = /decl/hierarchy/outfit/job/medical/doctor/emergency_physician + +/datum/alt_title/nurse + title = "Nurse" + title_blurb = "A Nurse acts as a general purpose Doctor's Aide, providing basical care to non-critical patients, and stabilizing critical patients during \ + busy periods. They frequently watch the suit sensors console, to help manage the time of other Doctors. In rare occasions, a Nurse can be \ + called upon to revive deceased crew members." + title_outfit = /decl/hierarchy/outfit/job/medical/doctor/nurse + +/datum/alt_title/virologist + title = "Virologist" + title_blurb = "A Virologist cures active diseases in the crew, and prepares antibodies for possible infections. They also have the skills \ + to produce the various types of virus foods or mutagens." + title_outfit = /decl/hierarchy/outfit/job/medical/doctor/virologist //Chemist is a medical job damnit //YEAH FUCK YOU SCIENCE -Pete //Guys, behave -Erro +////////////////////////////////// +// Chemist +////////////////////////////////// /datum/job/chemist title = "Chemist" flag = CHEMIST @@ -61,13 +111,25 @@ economic_modifier = 5 access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics) minimal_access = list(access_medical, access_medical_equip, access_chemistry) - alt_titles = list("Pharmacist") - minimal_player_age = 3 outfit_type = /decl/hierarchy/outfit/job/medical/chemist + job_description = "A Chemist produces and maintains a stock of basic to advanced chemicals for medical and occasionally research use. \ + They are likely to know the use and dangers of many lab-produced chemicals." + alt_titles = list("Chemist" = /datum/alt_title/chemist, "Pharmacist" = /datum/alt_title/pharmacist) + +// Chemist Alt Titles +/datum/alt_title/chemist + title = "Chemist" + +/datum/alt_title/pharmacist + title = "Pharmacist" + title_blurb = "A Pharmacist focuses on the chemical needs of the Medical Department, and often offers to fill crew prescriptions at their discretion." /* I'm commenting out Geneticist so you can't actually see it in the job menu, given that you can't play as one - Jon. +////////////////////////////////// +// Geneticist +////////////////////////////////// /datum/job/geneticist title = "Geneticist" flag = GENETICIST @@ -84,8 +146,17 @@ minimal_access = list(access_medical, access_morgue, access_genetics, access_research) outfit_type = /decl/hierarchy/outfit/job/medical/geneticist + job_description = "The Geneticist operates genetic manipulation equipment to repair any genetic defects encountered in crew, from cloning or radiation as examples. \ + When required, geneticists have the skills to clone, and are the superior choice when available for doing so." + +// Geneticist Alt Titles +/datum/alt_title/geneticist + title = "Geneticist" */ +////////////////////////////////// +// Psychiatrist +////////////////////////////////// /datum/job/psychiatrist title = "Psychiatrist" flag = PSYCHIATRIST @@ -101,8 +172,23 @@ access = list(access_medical, access_medical_equip, access_morgue, access_psychiatrist) minimal_access = list(access_medical, access_medical_equip, access_psychiatrist) outfit_type = /decl/hierarchy/outfit/job/medical/psychiatrist - alt_titles = list("Psychologist" = /decl/hierarchy/outfit/job/medical/psychiatrist/psychologist) + job_description = "The Psychologist provides mental health services to crew members in need. They may also be called upon to determine whatever \ + ails the mentally unwell, frequently under Security supervision. They understand the effects of various psychoactive drugs" + alt_titles = list("Psychiatrist" = /datum/alt_title/psychiatrist, "Psychologist" = /datum/alt_title/psychologist) +//Psychiatrist Alt Titles +/datum/alt_title/psychiatrist + title = "Psychiatrist" + +/datum/alt_title/psychologist + title = "Psychologist" + title_blurb = "The Psychologist provides mental health services to crew members in need, focusing more on therapy than medication. They may also be \ + called upon to determine whatever ails the mentally unwell, frequently under Security supervision." + title_outfit = /decl/hierarchy/outfit/job/medical/psychiatrist/psychologist + +////////////////////////////////// +// Paramedic +////////////////////////////////// /datum/job/paramedic title = "Paramedic" flag = PARAMEDIC @@ -118,4 +204,16 @@ access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_eva, access_maint_tunnels, access_external_airlocks, access_psychiatrist) minimal_access = list(access_medical, access_medical_equip, access_morgue, access_eva, access_maint_tunnels, access_external_airlocks) outfit_type = /decl/hierarchy/outfit/job/medical/paramedic - alt_titles = list("Emergency Medical Technician" = /decl/hierarchy/outfit/job/medical/paramedic/emt) \ No newline at end of file + job_description = "A Paramedic is primarily concerned with the recovery of patients who are unable to make it to the Medical Department on their own. \ + They may also be called upon to keep patients stable when Medical is busy or understaffed." + alt_titles = list("Paramedic" = /datum/alt_title/paramedic, "Emergency Medical Technician" = /datum/alt_title/emt) + +// Paramedic Alt Titles +/datum/alt_title/paramedic + title = "Paramedic" + +/datum/alt_title/emt + title = "Emergency Medical Technician" + title_blurb = "An Emergency Medical Technician is primarily concerned with the recovery of patients who are unable to make it to the Medical Department on their \ + own. They are capable of keeping a patient stabilized until they reach the hands of someone with more training." + title_outfit = /decl/hierarchy/outfit/job/medical/paramedic/emt \ No newline at end of file diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index f8d5e8710c..2841b13642 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -1,3 +1,6 @@ +////////////////////////////////// +// Research Director +////////////////////////////////// /datum/job/rd title = "Research Director" flag = RD @@ -26,8 +29,19 @@ ideal_character_age = 50 outfit_type = /decl/hierarchy/outfit/job/science/rd + job_description = "The Research Director manages and maintains the Research department. They are required to ensure the saftey of the entire crew, \ + at least with regards to anything occuring in the Research department, and to inform the crew of any disruptions that \ + might originate from Research. The Research Director often has at least passing knowledge of most of the Research department, but \ + are encouraged to allow their staff to perform their own duties." alt_titles = list("Research Supervisor") +// Research Director Alt Titles +/datum/alt_title/research_supervisor + title = "Research Supervisor" + +////////////////////////////////// +// Scientist +////////////////////////////////// /datum/job/scientist title = "Scientist" flag = SCIENTIST @@ -46,8 +60,35 @@ minimal_player_age = 14 outfit_type = /decl/hierarchy/outfit/job/science/scientist - alt_titles = list("Xenoarchaeologist", "Anomalist", "Phoron Researcher") + job_description = "A Scientist is a generalist working in the Research department, with general knowledge of the scientific process, as well as \ + the principles and requirements of Research and Development. They may also formulate experiments of their own devising, if \ + they find an appropriate topic." + alt_titles = list("Scientist" = /datum/alt_title/scientist, "Xenoarchaeologist" = /datum/alt_title/xenoarch, "Anomalist" = /datum/alt_title/anomalist, \ + "Phoron Researcher" = /datum/alt_title/phoron_research) +// Scientist Alt Titles +/datum/alt_title/scientist + title = "Scientist" + +/datum/alt_title/xenoarch + title = "Xenoarchaeologist" + title_blurb = "A Xenoarchaeologist enters digsites in search of artifacts of alien origin. These digsites are frequently in vacuum or other inhospitable \ + locations, and as such a Xenoarchaeologist should be prepared to handle hostile evironmental conditions." + +/datum/alt_title/anomalist + title = "Anomalist" + title_blurb = "An Anomalist is a Scientist whose expertise is analyzing alien artifacts. They are familar with the most common methods of testing artifact \ + function. They work closely with Xenoarchaeologists, or Miners, if either role is present." + +/datum/alt_title/phoron_research + title = "Phoron Researcher" + title_blurb = "A Phoron Researcher is a specialist in the practical applications of phoron, and has knowledge of its practical uses and dangers. \ + Many Phoron Researchers are interested in the combustability and explosive properties of gaseous phoron, as well as the specific hazards \ + of working with the substance in that state." + +////////////////////////////////// +// Xenobiologist +////////////////////////////////// /datum/job/xenobiologist title = "Xenobiologist" flag = XENOBIOLOGIST @@ -66,8 +107,22 @@ minimal_player_age = 14 outfit_type = /decl/hierarchy/outfit/job/science/xenobiologist - alt_titles = list("Xenobotanist") + job_description = "A Xenobiologist studies esoteric lifeforms, usually in the relative safety of their lab. They attempt to find ways to benefit \ + from the byproducts of these lifeforms, and their main subject at present is the Giant Slime." + alt_titles = list("Xenobiologist" = /datum/alt_title/xenobio, "Xenobotanist" = /datum/alt_title/xenobot) +// Xenibiologist Alt Titles +/datum/alt_title/xenobio + title = "Xenobiologist" + +/datum/alt_title/xenobot + title = "Xenobotanist" + title_blurb = "A Xenobotanist grows and cares for a variety of abnormal, custom made, and frequently dangerous plant life. When the products of these plants \ + is both safe and beneficial to the station, they may choose to introduce it to the rest of the crew." + +////////////////////////////////// +// Roboticist +////////////////////////////////// /datum/job/roboticist title = "Roboticist" flag = ROBOTICIST @@ -85,4 +140,20 @@ minimal_player_age = 7 outfit_type = /decl/hierarchy/outfit/job/science/roboticist - alt_titles = list("Biomechanical Engineer","Mechatronic Engineer") + job_description = "A Roboticist maintains and repairs the station's synthetics, including crew with prosthetic limbs. \ + They can also assist the station by producing simple robots and even pilotable exosuits." + alt_titles = list("Roboticist" = /datum/alt_title/roboticist, "Biomechanical Engineer" = /datum/alt_title/biomech, "Mechatronic Engineer" = /datum/alt_title/mech_tech) + +// Roboticist Alt Titles +/datum/alt_title/roboticist + title = "Roboticist" + +/datum/alt_title/biomech + title = "Biomechanical Engineer" + title_blurb = "A Biomechanical Engineer primarily works on prosthetics, and the organic parts attached to them. They may have some \ + knowledge of the relatively simple surgical procedures used in making cyborgs and attaching prosthesis." + +/datum/alt_title/mech_tech + title = "Mechatronic Engineer" + title_blurb = "A Mechatronic Engineer focuses on the construction and maintenance of Exosuits, and should be well versed in their use. \ + They may also be called upon to work on synthetics and prosthetics, if needed." \ No newline at end of file diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index a0688e7243..af8c516b72 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -1,3 +1,6 @@ +////////////////////////////////// +// Head of Security +////////////////////////////////// /datum/job/hos title = "Head of Security" flag = HOS @@ -24,12 +27,24 @@ minimal_player_age = 14 outfit_type = /decl/hierarchy/outfit/job/security/hos - job_description = "You manage the Security Department, working to keep your Security Officers in place and able to properly handle threats, criminal or otherwise. \ - You are also expected to keep your fellow Department Heads, as well as the crew, aware of developing situations. \ - On top of your management role, you may, if necessary, perform the duties of absent Security roles, such as distributing gear from the Armory. \ - Remember: No one is above the Law. Not even you." - alt_titles = list("Security Commander", "Chief of Security") + job_description = " The Head of Security manages the Security Department, keeping the station safe and making sure the rules are followed. They are expected to \ + keep the other Department Heads, and the rest of the crew, aware of developing situations that may be a threat. If necessary, the HoS may \ + perform the duties of absent Security roles, such as distributing gear from the Armory." + alt_titles = list("Head of Security" = /datum/alt_title/hos, "Security Commander" = /datum/alt_title/sec_commander, "Chief of Security" = /datum/alt_title/sec_chief) +// Head of Security Alt Titles +/datum/alt_title/hos + title = "Head of Security" + +/datum/alt_title/sec_commander + title = "Security Commander" + +/datum/alt_title/sec_chief + title = "Chief of Security" + +////////////////////////////////// +// Warden +////////////////////////////////// /datum/job/warden title = "Warden" flag = WARDEN @@ -47,9 +62,18 @@ minimal_player_age = 5 outfit_type = /decl/hierarchy/outfit/job/security/warden - job_description = "You watch over the Armory, the Brig, and any prisoners brought in. You may be called upon to take charge of the Security Department, \ - if no Head of Security is present." + job_description = "The Warden watches over the physical Security Department, making sure the Brig and Armoury are secure and in order at all times. They oversee \ + prisoners that have been processed and brigged, and are responsible for their well being. The Warden is also in charge of distributing \ + Armoury gear in a crisis, and retrieving it when the crisis has passed. In an emergency, the Warden may be called upon to direct the \ + Security Department as a whole." +// Warden Alt Titles +/datum/alt_title/warden + title = "Warden" + +////////////////////////////////// +// Detective +////////////////////////////////// /datum/job/detective title = "Detective" flag = DETECTIVE @@ -67,9 +91,22 @@ minimal_player_age = 3 outfit_type = /decl/hierarchy/outfit/job/security/detective - job_description = "You use your forensics training to help determine who has commited crimes that no one witnessed, or no one survived." - alt_titles = list("Forensic Technician" = /decl/hierarchy/outfit/job/security/detective/forensic, "Investigator") + job_description = "A Detective works to help Security find criminals who have not properly been identified, through interviews and forensic work. \ + For crimes only witnessed after the fact, or those with no survivors, they attempt to piece together what they can from pure evidence." + alt_titles = list("Detective" = /datum/alt_title/detective, "Forensic Technician" = /datum/alt_title/forensic_tech) +// Detective Alt Titles +/datum/alt_title/detective + title = "Detective" + +/datum/alt_title/forensic_tech + title = "Forensic Technician" + title_blurb = "A Forensic Technician works more with hard evidence and labwork than a Detective, but they share the purpose of solving crimes." + title_outfit = /decl/hierarchy/outfit/job/security/detective/forensic + +////////////////////////////////// +// Security Officer +////////////////////////////////// /datum/job/officer title = "Security Officer" flag = OFFICER @@ -87,5 +124,17 @@ minimal_player_age = 3 outfit_type = /decl/hierarchy/outfit/job/security/officer - job_description = "Get Baton. Set Intent to Harm." - alt_titles = list("Junior Officer") \ No newline at end of file + job_description = "A Security Officer is concerned with maintaining the safety and security of the station as a whole, dealing with external threats and \ + apprehending criminals. A Security Officer is responsible for the health, safety, and processing of any prisoner they arrest. \ + No one is above the Law, not Security or Command." + alt_titles = list("Security Officer" = /datum/alt_title/sec_officer, "Junior Officer" = /datum/alt_title/junior_officer) + +// Security Officer Alt Titles +/datum/alt_title/sec_officer + title = "Security Officer" + +/datum/alt_title/junior_officer + title = "Junior Officer" + title_blurb = "A Junior Officer is an inexperienced Security Officer. They likely have training, but not experience, and are frequently \ + paired off with a more senior co-worker. Junior Officers may also be expected to take over the boring duties of other Officers \ + including patrolling the station or maintaining specific posts." \ No newline at end of file diff --git a/code/game/jobs/job/silicon.dm b/code/game/jobs/job/silicon.dm index f12503dd98..118cc813d7 100644 --- a/code/game/jobs/job/silicon.dm +++ b/code/game/jobs/job/silicon.dm @@ -1,3 +1,6 @@ +////////////////////////////////// +// AI +////////////////////////////////// /datum/job/ai title = "AI" flag = AI @@ -12,7 +15,15 @@ account_allowed = 0 economic_modifier = 0 outfit_type = /decl/hierarchy/outfit/job/silicon/ai + job_description = "The AI manages oversees the operation of the station and its crew, but has no real authority over them. \ + The AI is required to follow its Laws, and Lawbound Synthetics that are linked to it are expected to follow \ + the AI's commands, and their own Laws." +//AI Alt Titles +/datum/alt_title/ai + title = "AI" + +// AI procs /datum/job/ai/equip(var/mob/living/carbon/human/H) if(!H) return 0 return 1 @@ -33,6 +44,9 @@ H.equip_to_slot_or_del(new /obj/item/clothing/head/cardborg(H), slot_head) return 1 +////////////////////////////////// +// Cyborg +////////////////////////////////// /datum/job/cyborg title = "Cyborg" flag = CYBORG @@ -43,11 +57,28 @@ supervisors = "your laws and the AI" //Nodrak selection_color = "#254C25" minimal_player_age = 1 - alt_titles = list("Robot", "Drone") account_allowed = 0 economic_modifier = 0 outfit_type = /decl/hierarchy/outfit/job/silicon/cyborg + job_description = "A Cyborg is a mobile station synthetic, piloted by a cybernetically preserved brain. It is considered a person, but is still required \ + to follow its Laws." + alt_titles = list("Cyborg" = /datum/alt_title/cyborg, "Robot" = /datum/alt_title/robot, "Drone" = /datum/alt_title/drone) +// Cyborg Alt Titles +/datum/alt_title/cyborg + title = "Cyborg" + +/datum/alt_title/robot + title = "Robot" + title_blurb = "A Robot is a mobile station synthetic, piloted by an advanced piece of technology called a Positronic Brain. It is considered a person, \ + legally, but is required to follow its Laws." + +/datum/alt_title/drone + title = "Drone" + title_blurb = "A Drone is a mobile station synthetic, piloted by a simple computer-based AI. As such, it is not a person, but rather an expensive and \ + and important piece of station property, and is expected to follow its Laws." + +// Cyborg procs /datum/job/cyborg/equip(var/mob/living/carbon/human/H) if(!H) return 0 return 1 diff --git a/code/modules/client/preference_setup/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm index e3639a2187..f93ccb92ec 100644 --- a/code/modules/client/preference_setup/occupation/occupation.dm +++ b/code/modules/client/preference_setup/occupation/occupation.dm @@ -113,7 +113,7 @@ . += " \[Yes]" else . += " \[No]" - if(job.alt_titles) //Blatantly cloned from a few lines down. + if(LAZYLEN(job.alt_titles)) //Blatantly cloned from a few lines down. . += " \[[pref.GetPlayerAltTitle(job)]\]" . += "" continue @@ -126,7 +126,7 @@ . += " \[Low]" else . += " \[NEVER]" - if(job.alt_titles) + if(LAZYLEN(job.alt_titles)) . += " \[[pref.GetPlayerAltTitle(job)]\]" . += "" . += "" @@ -190,9 +190,15 @@ if(config.wikiurl) dat += "Open wiki page in browser" - var/description = job.get_description_blurb() - if(description) - dat += html_encode(description) + var/alt_title = pref.player_alt_titles[job.title] + var/list/description = job.get_description_blurb(alt_title) + if(LAZYLEN(description)) + dat += html_encode(description[1]) + if(description.len > 1) + if(!isnull(description[2])) + dat += "
" + dat += html_encode(description[2]) + var/datum/browser/popup = new(user, "Job Info", "[capitalize(rank)]", 430, 520, src) popup.set_content(jointext(dat,"
")) popup.open() diff --git a/polaris.dme b/polaris.dme index 7d6311ba1c..88ac2729d2 100644 --- a/polaris.dme +++ b/polaris.dme @@ -578,7 +578,7 @@ #include "code\game\jobs\job_controller.dm" #include "code\game\jobs\jobs.dm" #include "code\game\jobs\whitelist.dm" -#include "code\game\jobs\job\_alt_title_helpers.dm" +#include "code\game\jobs\job\_alt_title.dm" #include "code\game\jobs\job\assistant.dm" #include "code\game\jobs\job\captain.dm" #include "code\game\jobs\job\civilian.dm" @@ -2434,7 +2434,7 @@ #include "code\ZAS\Zone.dm" #include "interface\interface.dm" #include "interface\skin.dmf" -#include "maps\example\example.dm" +#include "maps\southern_cross\southern_cross.dm" #include "maps\submaps\_readme.dm" #include "maps\submaps\space_submaps\space.dm" #include "maps\submaps\surface_submaps\mountains\mountains.dm" From 2ae61f8cbd86da29b7c9ab063e80ef081228205e Mon Sep 17 00:00:00 2001 From: Anewbe Date: Fri, 10 Aug 2018 22:33:22 -0500 Subject: [PATCH 3/8] Grammar and spelling corrections --- code/game/jobs/job/medical.dm | 6 +++--- code/game/jobs/job/science.dm | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 49bad27a0c..8849c18394 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -29,7 +29,7 @@ outfit_type = /decl/hierarchy/outfit/job/medical/cmo job_description = "The CMO manages the Medical department and is a position requiring experience and skill; their goal is to ensure that their \ staff keep the station’s crew healthy and whole. They are primarily interested in making sure that patients are safely found and \ - transported to Medical for treatment. They are expected to keep the crew informed about threats to their health and saftey, and \ + transported to Medical for treatment. They are expected to keep the crew informed about threats to their health and safety, and \ about the importance of Suit Sensors." // CMO Alt Titles @@ -69,7 +69,7 @@ /datum/alt_title/surgeon title = "Surgeon" - title_blurb = "A Surgeon specializes in providing surgical aid to injured patients, up to and including amputation and limb re-attachement. They are expected \ + title_blurb = "A Surgeon specializes in providing surgical aid to injured patients, up to and including amputation and limb reattachement. They are expected \ to know the ins and outs of anesthesia and surgery." title_outfit = /decl/hierarchy/outfit/job/medical/doctor/surgeon @@ -173,7 +173,7 @@ minimal_access = list(access_medical, access_medical_equip, access_psychiatrist) outfit_type = /decl/hierarchy/outfit/job/medical/psychiatrist job_description = "The Psychologist provides mental health services to crew members in need. They may also be called upon to determine whatever \ - ails the mentally unwell, frequently under Security supervision. They understand the effects of various psychoactive drugs" + ails the mentally unwell, frequently under Security supervision. They understand the effects of various psychoactive drugs." alt_titles = list("Psychiatrist" = /datum/alt_title/psychiatrist, "Psychologist" = /datum/alt_title/psychologist) //Psychiatrist Alt Titles diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index 76c8c34b4d..16273320ad 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -29,7 +29,7 @@ ideal_character_age = 50 outfit_type = /decl/hierarchy/outfit/job/science/rd - job_description = "The Research Director manages and maintains the Research department. They are required to ensure the saftey of the entire crew, \ + job_description = "The Research Director manages and maintains the Research department. They are required to ensure the safety of the entire crew, \ at least with regards to anything occuring in the Research department, and to inform the crew of any disruptions that \ might originate from Research. The Research Director often has at least passing knowledge of most of the Research department, but \ are encouraged to allow their staff to perform their own duties." From 977993ad8f2ba8b8122c9d11ddd178439de5f738 Mon Sep 17 00:00:00 2001 From: Meghan-Rossi <56671765+Meghan-Rossi@users.noreply.github.com> Date: Sat, 22 Feb 2020 13:13:23 +0000 Subject: [PATCH 4/8] Fix title_blurb for cook --- code/game/jobs/job/civilian.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index f7a6f22af1..2fcfb05e0b 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -58,7 +58,7 @@ /datum/alt_title/cook title = "Cook" - title_blurb = "Ahelp if you see this" + title_blurb = "A Cook has the same duties, though they may be less experienced." ////////////////////////////////// // Botanist From 3db48f96f616fe8fd178e136efa2a945d485bdd6 Mon Sep 17 00:00:00 2001 From: Meghan-Rossi <56671765+Meghan-Rossi@users.noreply.github.com> Date: Sun, 23 Feb 2020 01:51:00 +0000 Subject: [PATCH 5/8] Fix naked-looking mannequins --- code/game/jobs/job/job.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 84ae90d3bd..78d10ac252 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -139,6 +139,7 @@ var/mob/living/carbon/human/dummy/mannequin/mannequin = get_mannequin("#job_icon") dress_mannequin(mannequin) mannequin.dir = SOUTH + COMPILE_OVERLAYS(mannequin) var/icon/preview_icon = getFlatIcon(mannequin) preview_icon.Scale(preview_icon.Width() * 2, preview_icon.Height() * 2) // Scaling here to prevent blurring in the browser. From e51da67ad1333b9b08f17a16fc2ccdbaee575489 Mon Sep 17 00:00:00 2001 From: Meghan-Rossi <56671765+Meghan-Rossi@users.noreply.github.com> Date: Sun, 23 Feb 2020 01:56:39 +0000 Subject: [PATCH 6/8] Fix psychiatrist/psychologist descriptions. --- code/game/jobs/job/medical.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 2fe01f4697..5eec65f9ea 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -167,7 +167,7 @@ access = list(access_medical, access_medical_equip, access_morgue, access_psychiatrist) minimal_access = list(access_medical, access_medical_equip, access_psychiatrist) outfit_type = /decl/hierarchy/outfit/job/medical/psychiatrist - job_description = "The Psychologist provides mental health services to crew members in need. They may also be called upon to determine whatever \ + job_description = "A Psychiatrist provides mental health services to crew members in need. They may also be called upon to determine whatever \ ails the mentally unwell, frequently under Security supervision. They understand the effects of various psychoactive drugs." alt_titles = list("Psychiatrist" = /datum/alt_title/psychiatrist, "Psychologist" = /datum/alt_title/psychologist) @@ -177,7 +177,7 @@ /datum/alt_title/psychologist title = "Psychologist" - title_blurb = "A Psychiatrist provides mental health services to crew members in need, focusing more on therapy than medication. They may also be \ + title_blurb = "A Psychologist provides mental health services to crew members in need, focusing more on therapy than medication. They may also be \ called upon to determine whatever ails the mentally unwell, frequently under Security supervision." title_outfit = /decl/hierarchy/outfit/job/medical/psychiatrist/psychologist From f7d3fbb018fee1ad8d599f3a25ae8ce99b843b5b Mon Sep 17 00:00:00 2001 From: Meghan-Rossi <56671765+Meghan-Rossi@users.noreply.github.com> Date: Wed, 4 Mar 2020 18:25:46 +0000 Subject: [PATCH 7/8] Fix html + Use accessor -Fix html in job selection -Fix not using an accessor for preferences. --- .../preference_setup/occupation/occupation.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/client/preference_setup/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm index f93ccb92ec..5e32f051e6 100644 --- a/code/modules/client/preference_setup/occupation/occupation.dm +++ b/code/modules/client/preference_setup/occupation/occupation.dm @@ -87,22 +87,22 @@ lastJob = job . += "" if(jobban_isbanned(user, rank)) - . += "[rank] \[BANNED]" + . += "[rank] \[BANNED]" continue if(!job.player_old_enough(user.client)) var/available_in_days = job.available_in_days(user.client) - . += "[rank] \[IN [(available_in_days)] DAYS]" + . += "[rank] \[IN [(available_in_days)] DAYS]" continue if(job.minimum_character_age && user.client && (user.client.prefs.age < job.minimum_character_age)) - . += "[rank] \[MINIMUM CHARACTER AGE: [job.minimum_character_age]]" + . += "[rank] \[MINIMUM CHARACTER AGE: [job.minimum_character_age]]" continue if((pref.job_civilian_low & ASSISTANT) && job.type != /datum/job/assistant) - . += "[rank]" + . += "[rank]" continue if((rank in command_positions) || (rank == "AI"))//Bold head jobs - . += "[rank]" + . += "[rank]" else - . += "[rank]" + . += "[rank]" . += "" @@ -190,7 +190,7 @@ if(config.wikiurl) dat += "Open wiki page in browser" - var/alt_title = pref.player_alt_titles[job.title] + var/alt_title = pref.GetPlayerAltTitle(job) var/list/description = job.get_description_blurb(alt_title) if(LAZYLEN(description)) dat += html_encode(description[1]) From 3829efbc3420a12fa5b5f5a680a1a547483b4375 Mon Sep 17 00:00:00 2001 From: Meghan-Rossi <56671765+Meghan-Rossi@users.noreply.github.com> Date: Thu, 5 Mar 2020 01:02:03 +0000 Subject: [PATCH 8/8] Fixes to allow for people in more than one department Refactors head_position into departments_managed and department_accounts, so command secretaries keep command account access (which is presumable why they were marked as a head position) without being told they manage the command department. --- code/game/jobs/job/captain.dm | 6 +++--- code/game/jobs/job/civilian.dm | 2 +- code/game/jobs/job/engineering.dm | 2 +- code/game/jobs/job/job.dm | 7 ++++++- code/game/jobs/job/medical.dm | 2 +- code/game/jobs/job/science.dm | 2 +- code/game/jobs/job/security.dm | 2 +- code/game/jobs/job_controller.dm | 14 +++++++------- .../preference_setup/occupation/occupation.dm | 8 ++++---- 9 files changed, 25 insertions(+), 20 deletions(-) diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index 6e3cf88e77..bd4336506c 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -9,7 +9,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) flag = CAPTAIN departments = list(DEPARTMENT_COMMAND) sorting_order = 3 // Above everyone. - head_position = 1 + departments_managed = list(DEPARTMENT_COMMAND) department_flag = ENGSEC faction = "Station" total_positions = 1 @@ -61,7 +61,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) flag = HOP departments = list(DEPARTMENT_CIVILIAN, DEPARTMENT_CARGO, DEPARTMENT_COMMAND) sorting_order = 2 // Above the QM, below captain. - head_position = 1 + departments_managed = list(DEPARTMENT_CIVILIAN, DEPARTMENT_CARGO) department_flag = CIVILIAN faction = "Station" total_positions = 1 @@ -109,7 +109,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) title = "Command Secretary" flag = BRIDGE departments = list(DEPARTMENT_COMMAND) - head_position = 1 + department_accounts = list(DEPARTMENT_COMMAND) department_flag = CIVILIAN faction = "Station" total_positions = 2 diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 3fa836f8d3..571ef67efd 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -98,7 +98,7 @@ flag = QUARTERMASTER departments = list(DEPARTMENT_CARGO) sorting_order = 1 // QM is above the cargo techs, but below the HoP. - head_position = 1 + departments_managed = list(DEPARTMENT_CARGO) department_flag = CIVILIAN faction = "Station" total_positions = 1 diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index ec64cce53d..4ac1c08367 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -4,7 +4,7 @@ /datum/job/chief_engineer title = "Chief Engineer" flag = CHIEF - head_position = 1 + departments_managed = list(DEPARTMENT_ENGINEERING) departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_COMMAND) sorting_order = 2 department_flag = ENGSEC diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index be6096870d..05cad33ca9 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -18,7 +18,8 @@ var/minimal_player_age = 0 // If you have use_age_restriction_for_jobs config option enabled and the database set up, this option will add a requirement for players to be at least minimal_player_age days old. (meaning they first signed in at least that many days before.) var/list/departments = list() // List of departments this job belongs to, if any. The first one on the list will be the 'primary' department. var/sorting_order = 0 // Used for sorting jobs so boss jobs go above regular ones, and their boss's boss is above that. Higher numbers = higher in sorting. - var/head_position = 0 // Is this position Command? + var/departments_managed = null // Is this a management position? If yes, list of departments managed. Otherwise null. + var/department_accounts = null // Which department accounts should people with this position be given the pin for? var/assignable = TRUE // Should it show up on things like the ID computer? var/minimum_character_age = 0 var/ideal_character_age = 30 @@ -32,6 +33,10 @@ // Description of the job's role and minimum responsibilities. var/job_description = "This Job doesn't have a description! Please report it!" +/datum/job/New() + . = ..() + department_accounts = department_accounts || departments_managed + /datum/job/proc/equip(var/mob/living/carbon/human/H, var/alt_title) var/decl/hierarchy/outfit/outfit = get_outfit(H, alt_title) if(!outfit) diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 50f3a1c2f4..43e59b8663 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -4,7 +4,7 @@ /datum/job/cmo title = "Chief Medical Officer" flag = CMO - head_position = 1 + departments_managed = list(DEPARTMENT_MEDICAL) departments = list(DEPARTMENT_MEDICAL, DEPARTMENT_COMMAND) sorting_order = 2 department_flag = MEDSCI diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index 97f608a7a1..4f90d1622b 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -4,7 +4,7 @@ /datum/job/rd title = "Research Director" flag = RD - head_position = 1 + departments_managed = list(DEPARTMENT_RESEARCH) departments = list(DEPARTMENT_RESEARCH, DEPARTMENT_COMMAND) sorting_order = 2 department_flag = MEDSCI diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 6771f331d6..6a3954f9f0 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -4,7 +4,7 @@ /datum/job/hos title = "Head of Security" flag = HOS - head_position = 1 + departments_managed = list(DEPARTMENT_SECURITY) departments = list(DEPARTMENT_SECURITY, DEPARTMENT_COMMAND) sorting_order = 2 department_flag = ENGSEC diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index c528cf895e..682df8495f 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -422,14 +422,14 @@ var/global/datum/controller/occupations/job_master log_game("JOINED [key_name(H)] as \"[rank]\"") // If they're head, give them the account info for their department - if(H.mind && job.head_position && LAZYLEN(job.departments)) + if(H.mind && job.department_accounts) var/remembered_info = "" - var/datum/money_account/department_account = department_accounts[job.departments[1]] - - if(department_account) - remembered_info += "Your department's account number is: #[department_account.account_number]
" - remembered_info += "Your department's account pin is: [department_account.remote_access_pin]
" - remembered_info += "Your department's account funds are: $[department_account.money]
" + for(var/D in job.department_accounts) + var/datum/money_account/department_account = department_accounts[D] + if(department_account) + remembered_info += "Department account number ([D]): #[department_account.account_number]
" + remembered_info += "Department account pin ([D]): [department_account.remote_access_pin]
" + remembered_info += "Department account funds ([D]): $[department_account.money]
" H.mind.store_memory(remembered_info) diff --git a/code/modules/client/preference_setup/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm index 3114b4962c..fea4b5ec51 100644 --- a/code/modules/client/preference_setup/occupation/occupation.dm +++ b/code/modules/client/preference_setup/occupation/occupation.dm @@ -179,10 +179,10 @@ dat += "Alternate titles: [english_list(job.alt_titles)]." send_rsc(user, job.get_job_icon(), "job[ckey(rank)].png") dat += "" - if(job.department) - dat += "Department: [job.department]." - if(job.head_position) - dat += "You manage this department." + if(job.departments) + dat += "Departments: [english_list(job.departments)]." + if(LAZYLEN(job.departments_managed)) + dat += "You manage these departments: [english_list(job.departments_managed)]" dat += "You answer to [job.supervisors] normally."