From fa8c9fababdd3d009963e87a4504e2adf56efa40 Mon Sep 17 00:00:00 2001 From: Atermonera Date: Wed, 11 Mar 2020 12:54:25 -0700 Subject: [PATCH] Job description alt --- code/_macros.dm | 2 + code/datums/outfits/jobs/civilian.dm | 9 ++ code/game/jobs/job/_alt_title.dm | 8 + code/game/jobs/job/assistant.dm | 44 ++++++ code/game/jobs/job/captain.dm | 53 ++++++- code/game/jobs/job/civilian.dm | 146 ++++++++++++++++-- code/game/jobs/job/civilian_chaplain.dm | 13 +- code/game/jobs/job/engineering.dm | 54 ++++++- code/game/jobs/job/job.dm | 58 ++++++- code/game/jobs/job/medical.dm | 128 +++++++++++++-- code/game/jobs/job/science.dm | 90 ++++++++++- code/game/jobs/job/security.dm | 78 ++++++++-- code/game/jobs/job/silicon.dm | 39 ++++- code/game/jobs/job_controller.dm | 17 +- .../preference_setup/occupation/occupation.dm | 57 ++++++- maps/southern_cross/southern_cross_jobs.dm | 15 +- vorestation.dme | 4 + 17 files changed, 726 insertions(+), 89 deletions(-) create mode 100644 code/game/jobs/job/_alt_title.dm diff --git a/code/_macros.dm b/code/_macros.dm index 6893ebbb6f..2f5a4eb7a3 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -13,6 +13,8 @@ #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 send_rsc(target, rsc_content, rsc_name) target << browse_rsc(rsc_content, rsc_name) +#define open_link(target, url) target << link(url) // From TG, might be useful to have. // Didn't port SEND_TEXT() since to_chat() appears to serve the same purpose. diff --git a/code/datums/outfits/jobs/civilian.dm b/code/datums/outfits/jobs/civilian.dm index f5b94145ff..361530de04 100644 --- a/code/datums/outfits/jobs/civilian.dm +++ b/code/datums/outfits/jobs/civilian.dm @@ -6,11 +6,20 @@ name = OUTFIT_JOB_NAME("Visitor") id_pda_assignment = "Visitor" uniform = /obj/item/clothing/under/assistantformal +<<<<<<< HEAD //VOREStation Add - Interns /decl/hierarchy/outfit/job/assistant/intern name = OUTFIT_JOB_NAME("Intern") id_type = /obj/item/weapon/card/id/civilian //VOREStation Add End - Interns +======= + +/decl/hierarchy/outfit/job/assistant/resident + name = OUTFIT_JOB_NAME("Resident") + id_pda_assignment = "Resident" + uniform = /obj/item/clothing/under/color/white + +>>>>>>> 9436bdb... Merge pull request #6725 from Meghan-Rossi/job_description_alt /decl/hierarchy/outfit/job/service l_ear = /obj/item/device/radio/headset/headset_service hierarchy_type = /decl/hierarchy/outfit/job/service diff --git a/code/game/jobs/job/_alt_title.dm b/code/game/jobs/job/_alt_title.dm new file mode 100644 index 0000000000..1cb7fde6b6 --- /dev/null +++ b/code/game/jobs/job/_alt_title.dm @@ -0,0 +1,8 @@ +///////////////////////////////////////// +// Alt Title Code +///////////////////////////////////////// + +/datum/alt_title + var/title = "GENERIC ALT TITLE" // What the Alt-Title is called + var/title_blurb = null // What's amended to the job description for this Job title. If nothing's added, leave null. + 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 e84d69a8db..c431f565b2 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 @@ -12,16 +15,57 @@ 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 +<<<<<<< HEAD /* alt_titles = list( "Technical Assistant", "Medical Intern", "Research Assistant", "Visitor" = /decl/hierarchy/outfit/job/assistant/visitor ) */ //VOREStation Removal: no alt-titles for visitors +======= + 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("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) +>>>>>>> 9436bdb... Merge pull request #6725 from Meghan-Rossi/job_description_alt /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 ede7fec465..bd4336506c 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -1,11 +1,15 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) +////////////////////////////////// +// Captain +////////////////////////////////// + /datum/job/captain title = "Colony Director" 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 @@ -22,7 +26,11 @@ 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 - alt_titles = list("Site Manager", "Overseer") + 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("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) @@ -30,15 +38,30 @@ 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().Copy() + +// 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 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 @@ -53,7 +76,10 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) ideal_character_age = 50 outfit_type = /decl/hierarchy/outfit/job/hop - alt_titles = list("Crew Resources Officer") + 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("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, @@ -68,11 +94,22 @@ 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 departments = list(DEPARTMENT_COMMAND) - head_position = 1 + department_accounts = list(DEPARTMENT_COMMAND) department_flag = CIVILIAN faction = "Station" total_positions = 2 @@ -86,3 +123,9 @@ 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." + +// 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 b5e50cd443..571ef67efd 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 @@ -7,14 +12,28 @@ faction = "Station" total_positions = 2 spawn_positions = 2 - supervisors = "the head of personnel" + supervisors = "the Head of Personnel" selection_color = "#515151" access = list(access_hydroponics, access_bar, access_kitchen) minimal_access = list(access_bar) outfit_type = /decl/hierarchy/outfit/job/service/bartender - alt_titles = list("Barista" = /decl/hierarchy/outfit/job/service/bartender/barista) + 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("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" @@ -24,13 +43,26 @@ faction = "Station" total_positions = 2 spawn_positions = 2 - supervisors = "the head of personnel" + supervisors = "the Head of Personnel" selection_color = "#515151" access = list(access_hydroponics, access_bar, access_kitchen) minimal_access = list(access_kitchen) outfit_type = /decl/hierarchy/outfit/job/service/chef - alt_titles = list("Cook") + 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("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 = "A Cook has the same duties, though they may be less experienced." + +////////////////////////////////// +// Botanist +////////////////////////////////// /datum/job/hydro title = "Botanist" @@ -40,26 +72,38 @@ faction = "Station" total_positions = 2 spawn_positions = 1 - supervisors = "the head of personnel" + supervisors = "the Head of Personnel" selection_color = "#515151" access = list(access_hydroponics, access_bar, access_kitchen) minimal_access = list(access_hydroponics) outfit_type = /decl/hierarchy/outfit/job/service/gardener - alt_titles = list("Gardener") + job_description = "A Botanist grows plants for the Chef and Bartender." + alt_titles = list("Botanist" = /datum/alt_title/botanist, "Gardener" = /datum/alt_title/gardener) + +//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." //Cargo +////////////////////////////////// +// Quartermaster +////////////////////////////////// /datum/job/qm title = "Quartermaster" 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 spawn_positions = 1 - supervisors = "the head of personnel" + supervisors = "the Head of Personnel" selection_color = "#7a4f33" economic_modifier = 5 access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) @@ -68,8 +112,19 @@ ideal_character_age = 40 outfit_type = /decl/hierarchy/outfit/job/cargo/qm - alt_titles = list("Supply Chief") + job_description = "The Quartermaster manages the Supply department, checking cargo orders and ensuring supplies get to where they are needed." + 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 @@ -78,12 +133,22 @@ faction = "Station" total_positions = 2 spawn_positions = 2 - supervisors = "the quartermaster and the head of personnel" + supervisors = "the Quartermaster and the Head of Personnel" selection_color = "#9b633e" access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_mining, access_mining_station) 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." + +// Cargo Tech Alt Titles +/datum/alt_title/cargo_tech + title = "Cargo Tech" + +////////////////////////////////// +// Shaft Miner +////////////////////////////////// /datum/job/mining title = "Shaft Miner" @@ -93,16 +158,28 @@ faction = "Station" total_positions = 3 spawn_positions = 3 - supervisors = "the quartermaster and the head of personnel" + supervisors = "the Quartermaster and the Head of Personnel" selection_color = "#9b633e" economic_modifier = 5 access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_mining, access_mining_station) minimal_access = list(access_mining, access_mining_station, access_mailsorting) outfit_type = /decl/hierarchy/outfit/job/cargo/mining - alt_titles = list("Drill Technician") + job_description = "A Shaft Miner mines and processes minerals to be delivered to departments that need them." + alt_titles = list("Shaft Miner" = /datum/alt_title/miner, "Drill Technician" = /datum/alt_title/drill_tech) + +// Shaft Miner Alt Titles +/datum/alt_title/miner + title = "Shaft Miner" + +/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." //Service +////////////////////////////////// +// Janitor +////////////////////////////////// /datum/job/janitor title = "Janitor" flag = JANITOR @@ -111,15 +188,26 @@ faction = "Station" total_positions = 2 spawn_positions = 2 - supervisors = "the head of personnel" + supervisors = "the Head of Personnel" selection_color = "#515151" access = list(access_janitor, access_maint_tunnels) minimal_access = list(access_janitor, access_maint_tunnels) outfit_type = /decl/hierarchy/outfit/job/service/janitor - alt_titles = list("Custodian") + 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" //More or less assistants +////////////////////////////////// +// Librarian +////////////////////////////////// /datum/job/librarian title = "Librarian" flag = LIBRARIAN @@ -128,13 +216,30 @@ faction = "Station" total_positions = 1 spawn_positions = 1 - supervisors = "the head of personnel" + supervisors = "the Head of Personnel" selection_color = "#515151" access = list(access_library, access_maint_tunnels) minimal_access = list(access_library) outfit_type = /decl/hierarchy/outfit/job/librarian - alt_titles = list("Journalist", "Writer") + 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." + +////////////////////////////////// +// 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 @@ -153,10 +258,17 @@ 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) . = ..() 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 b6430fef6b..0877e373d7 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -7,13 +7,22 @@ faction = "Station" total_positions = 1 spawn_positions = 1 - supervisors = "the head of personnel" + supervisors = "the Head of Personnel" selection_color = "#515151" 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("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 db6fc07cb6..4ac1c08367 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -1,7 +1,10 @@ +////////////////////////////////// +// Chief Engineer +////////////////////////////////// /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 @@ -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 @@ -37,17 +50,42 @@ faction = "Station" total_positions = 5 spawn_positions = 5 - supervisors = "the chief engineer" + supervisors = "the Chief Engineer" selection_color = "#5B4D20" 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 Maintenance 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 @@ -56,7 +94,7 @@ faction = "Station" total_positions = 3 spawn_positions = 2 - supervisors = "the chief engineer" + supervisors = "the Chief Engineer" selection_color = "#5B4D20" 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, access_external_airlocks) @@ -64,4 +102,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 85c51dadec..d09b81f830 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -13,12 +13,13 @@ var/current_positions = 0 // How many players have this job var/supervisors = null // Supervisors, who this person answers to directly var/selection_color = "#ffffff" // Selection screen color - var/list/alt_titles // 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/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 @@ -27,7 +28,14 @@ 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/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) @@ -38,7 +46,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(.) @@ -112,4 +126,38 @@ 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/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() + if(!job_master.job_icons[title]) + 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. + 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/medical.dm b/code/game/jobs/job/medical.dm index cb562b9c40..43e59b8663 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -1,7 +1,10 @@ +////////////////////////////////// +// Chief Medical Officer +////////////////////////////////// /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 @@ -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 safety, 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 @@ -33,19 +47,55 @@ faction = "Station" total_positions = 5 spawn_positions = 3 - supervisors = "the chief medical officer" + supervisors = "the Chief Medical Officer" selection_color = "#013D3B" economic_modifier = 7 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 reattachement. 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 basic 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 @@ -54,18 +104,30 @@ faction = "Station" total_positions = 2 spawn_positions = 2 - supervisors = "the chief medical officer" + supervisors = "the Chief Medical Officer" selection_color = "#013D3B" 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 @@ -74,15 +136,24 @@ faction = "Station" total_positions = 0 spawn_positions = 0 - supervisors = "the chief medical officer and research director" + supervisors = "the Chief Medical Officer and Research Director" selection_color = "#013D3B" economic_modifier = 7 access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_research) minimal_access = list(access_medical, access_morgue, access_genetics, access_research) outfit_type = /decl/hierarchy/outfit/job/medical/geneticist + job_description = "A 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 @@ -92,13 +163,28 @@ total_positions = 1 spawn_positions = 1 economic_modifier = 5 - supervisors = "the chief medical officer" + supervisors = "the Chief Medical Officer" selection_color = "#013D3B" 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 = "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) +//Psychiatrist Alt Titles +/datum/alt_title/psychiatrist + title = "Psychiatrist" + +/datum/alt_title/psychologist + title = "Psychologist" + 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 + +////////////////////////////////// +// Paramedic +////////////////////////////////// /datum/job/paramedic title = "Paramedic" flag = PARAMEDIC @@ -107,10 +193,22 @@ faction = "Station" total_positions = 2 spawn_positions = 2 - supervisors = "the chief medical officer" + supervisors = "the Chief Medical Officer" selection_color = "#013D3B" economic_modifier = 4 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 a751636477..ef7f04f324 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -1,7 +1,10 @@ +////////////////////////////////// +// Research Director +////////////////////////////////// /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 @@ -27,8 +30,22 @@ ideal_character_age = 50 outfit_type = /decl/hierarchy/outfit/job/science/rd - alt_titles = list("Research Supervisor") + 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." + alt_titles = list("Research Director" = /datum/alt_title/research_director, "Research Supervisor" = /datum/alt_title/research_supervisor) +// Research Director Alt Titles +/datum/alt_title/research_director + title = "Research Director" + +/datum/alt_title/research_supervisor + title = "Research Supervisor" + +////////////////////////////////// +// Scientist +////////////////////////////////// /datum/job/scientist title = "Scientist" flag = SCIENTIST @@ -37,7 +54,7 @@ faction = "Station" total_positions = 5 spawn_positions = 3 - supervisors = "the research director" + supervisors = "the Research Director" selection_color = "#633D63" economic_modifier = 7 access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch) @@ -46,8 +63,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 @@ -56,7 +100,7 @@ faction = "Station" total_positions = 3 spawn_positions = 2 - supervisors = "the research director" + supervisors = "the Research Director" selection_color = "#633D63" economic_modifier = 7 access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_hydroponics) @@ -65,8 +109,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 @@ -75,7 +133,7 @@ faction = "Station" total_positions = 2 spawn_positions = 2 - supervisors = "research director" + supervisors = "the Research Director" selection_color = "#633D63" economic_modifier = 5 access = list(access_robotics, access_tox, access_tox_storage, access_tech_storage, access_morgue, access_research) //As a job that handles so many corpses, it makes sense for them to have morgue access. @@ -83,4 +141,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 d53cd567ab..6a3954f9f0 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -1,7 +1,10 @@ +////////////////////////////////// +// Head of Security +////////////////////////////////// /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 @@ -24,8 +27,24 @@ minimal_player_age = 14 outfit_type = /decl/hierarchy/outfit/job/security/hos - 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 @@ -35,14 +54,26 @@ faction = "Station" total_positions = 1 spawn_positions = 1 - supervisors = "the head of security" + supervisors = "the Head of Security" selection_color = "#601C1C" economic_modifier = 5 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 + outfit_type = /decl/hierarchy/outfit/job/security/warden + 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 @@ -51,15 +82,30 @@ faction = "Station" total_positions = 2 spawn_positions = 2 - supervisors = "the head of security" + supervisors = "the Head of Security" selection_color = "#601C1C" access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_eva, access_external_airlocks) 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 - alt_titles = list("Forensic Technician" = /decl/hierarchy/outfit/job/security/detective/forensic, "Investigator") + outfit_type = /decl/hierarchy/outfit/job/security/detective + 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 @@ -68,11 +114,25 @@ faction = "Station" total_positions = 4 spawn_positions = 4 - supervisors = "the head of security" + supervisors = "the Head of Security" selection_color = "#601C1C" economic_modifier = 4 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 - 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 e5ed9b2dc4..691ebe2ad9 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 @@ -8,14 +11,23 @@ total_positions = 0 // Not used for AI, see is_position_available below and modules/mob/living/silicon/ai/latejoin.dm spawn_positions = 1 selection_color = "#3F823F" - supervisors = "your laws" + supervisors = "your Laws" req_admin_notify = 1 minimal_player_age = 7 account_allowed = 0 economic_modifier = 0 has_headset = FALSE assignable = FALSE + outfit_type = /decl/hierarchy/outfit/job/silicon/ai + job_description = "The AI 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 @@ -28,6 +40,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 @@ -36,15 +51,33 @@ faction = "Station" total_positions = 2 spawn_positions = 2 - supervisors = "your laws and the AI" //Nodrak + 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 has_headset = FALSE assignable = FALSE + 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/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index b1402290c0..3d6fa2045c 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() @@ -435,14 +436,14 @@ var/global/datum/controller/occupations/job_master log_game("SPECIES [key_name(H)] is a: \"[H.species.name]\"") //VOREStation Add // 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 1035147ffa..ade5260989 100644 --- a/code/modules/client/preference_setup/occupation/occupation.dm +++ b/code/modules/client/preference_setup/occupation/occupation.dm @@ -82,25 +82,27 @@ index = 0 . += "" + var/rank = job.title 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 SSjob.get_job_titles_in_department(DEPARTMENT_COMMAND) ) || (rank == "AI"))//Bold head jobs - . += "[rank]" + . += "[rank]" else - . += "[rank]" + . += "[rank]" . += "" @@ -111,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 @@ -124,7 +126,7 @@ . += " \[Low]" else . += " \[NEVER]" - if(job.alt_titles) + if(LAZYLEN(job.alt_titles)) . += " \[[pref.GetPlayerAltTitle(job)]\]" . += "" . += "" @@ -166,6 +168,45 @@ 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.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." + + dat += "


" + if(config.wikiurl) + dat += "Open wiki page in browser" + + var/alt_title = pref.GetPlayerAltTitle(job) + 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() + + 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 06c651819e..1fa6b308b6 100644 --- a/maps/southern_cross/southern_cross_jobs.dm +++ b/maps/southern_cross/southern_cross_jobs.dm @@ -63,12 +63,14 @@ var/const/access_explorer = 43 faction = "Station" total_positions = 2 spawn_positions = 2 - supervisors = "the head of personnel" + supervisors = "the Head of Personnel" selection_color = "#515151" 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 = "A Pilot flies one of the shuttles between the Southern Cross and the outpost on Sif." /datum/job/explorer title = "Explorer" @@ -78,12 +80,15 @@ var/const/access_explorer = 43 faction = "Station" total_positions = 4 spawn_positions = 4 - supervisors = "the head of personnel" + supervisors = "the Head of Personnel" selection_color = "#515151" economic_modifier = 4 access = list(access_explorer) minimal_access = list(access_explorer) + outfit_type = /decl/hierarchy/outfit/job/explorer2 + job_description = "An Explorer searches for interesting things on the surface of Sif, and returns them to the station." + /* alt_titles = list( "Explorer Technician" = /decl/hierarchy/outfit/job/explorer2/technician, @@ -98,9 +103,11 @@ var/const/access_explorer = 43 faction = "Station" total_positions = 2 spawn_positions = 2 - supervisors = "the chief medical officer" + supervisors = "the Chief Medical Officer" selection_color = "#515151" economic_modifier = 4 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, access_explorer) minimal_access = list(access_medical, access_medical_equip, access_morgue, access_explorer) - outfit_type = /decl/hierarchy/outfit/job/medical/sar \ No newline at end of file + + outfit_type = /decl/hierarchy/outfit/job/medical/sar + job_description = "A Search and Rescue operative recovers individuals who are injured or dead on the surface of Sif." \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index 1673969857..d057f2915e 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -702,7 +702,11 @@ #include "code\game\jobs\job_controller.dm" #include "code\game\jobs\jobs.dm" #include "code\game\jobs\whitelist.dm" +<<<<<<< HEAD:vorestation.dme #include "code\game\jobs\whitelist_vr.dm" +======= +#include "code\game\jobs\job\_alt_title.dm" +>>>>>>> 9436bdb... Merge pull request #6725 from Meghan-Rossi/job_description_alt:polaris.dme #include "code\game\jobs\job\assistant.dm" #include "code\game\jobs\job\assistant_vr.dm" #include "code\game\jobs\job\captain.dm"