Job description alt

This commit is contained in:
Atermonera
2020-03-11 12:54:25 -07:00
committed by VirgoBot
parent 74ad3b1d25
commit fa8c9fabab
17 changed files with 726 additions and 89 deletions

View File

@@ -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.

View File

@@ -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

View File

@@ -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.

View File

@@ -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

View File

@@ -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"

View File

@@ -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)
*/
*/
// IAA Alt Titles
/datum/alt_title/iaa
title = "Internal Affairs Agent"

View File

@@ -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)
. = ..()

View File

@@ -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
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"

View File

@@ -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)
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)

View File

@@ -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)
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

View File

@@ -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."

View File

@@ -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")
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."

View File

@@ -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

View File

@@ -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 += "<b>Your department's account number is:</b> #[department_account.account_number]<br>"
remembered_info += "<b>Your department's account pin is:</b> [department_account.remote_access_pin]<br>"
remembered_info += "<b>Your department's account funds are:</b> $[department_account.money]<br>"
for(var/D in job.department_accounts)
var/datum/money_account/department_account = department_accounts[D]
if(department_account)
remembered_info += "<b>Department account number ([D]):</b> #[department_account.account_number]<br>"
remembered_info += "<b>Department account pin ([D]):</b> [department_account.remote_access_pin]<br>"
remembered_info += "<b>Department account funds ([D]):</b> $[department_account.money]<br>"
H.mind.store_memory(remembered_info)

View File

@@ -82,25 +82,27 @@
index = 0
. += "<tr bgcolor='[job.selection_color]'><td width='60%' align='right'>"
var/rank = job.title
lastJob = job
. += "<a href='?src=\ref[src];job_info=[rank]'>"
if(jobban_isbanned(user, rank))
. += "<del>[rank]</del></td><td><b> \[BANNED]</b></td></tr>"
. += "<del>[rank]</del></td></a><td><b> \[BANNED]</b></td></tr>"
continue
if(!job.player_old_enough(user.client))
var/available_in_days = job.available_in_days(user.client)
. += "<del>[rank]</del></td><td> \[IN [(available_in_days)] DAYS]</td></tr>"
. += "<del>[rank]</del></td></a><td> \[IN [(available_in_days)] DAYS]</td></tr>"
continue
if(job.minimum_character_age && user.client && (user.client.prefs.age < job.minimum_character_age))
. += "<del>[rank]</del></td><td> \[MINIMUM CHARACTER AGE: [job.minimum_character_age]]</td></tr>"
. += "<del>[rank]</del></td></a><td> \[MINIMUM CHARACTER AGE: [job.minimum_character_age]]</td></tr>"
continue
if((pref.job_civilian_low & ASSISTANT) && job.type != /datum/job/assistant)
. += "<font color=grey>[rank]</font></td><td></td></tr>"
. += "<font color=grey>[rank]</font></a></td><td></td></tr>"
continue
if((rank in SSjob.get_job_titles_in_department(DEPARTMENT_COMMAND) ) || (rank == "AI"))//Bold head jobs
. += "<b>[rank]</b>"
. += "<b>[rank]</b></a>"
else
. += "[rank]"
. += "[rank]</a>"
. += "</td><td width='40%'>"
@@ -111,7 +113,7 @@
. += " <font color=55cc55>\[Yes]</font>"
else
. += " <font color=black>\[No]</font>"
if(job.alt_titles) //Blatantly cloned from a few lines down.
if(LAZYLEN(job.alt_titles)) //Blatantly cloned from a few lines down.
. += "</a></td></tr><tr bgcolor='[lastJob.selection_color]'><td width='60%' align='center'>&nbsp</td><td><a href='?src=\ref[src];select_alt_title=\ref[job]'>\[[pref.GetPlayerAltTitle(job)]\]</a></td></tr>"
. += "</a></td></tr>"
continue
@@ -124,7 +126,7 @@
. += " <font color=cc5555>\[Low]</font>"
else
. += " <font color=black>\[NEVER]</font>"
if(job.alt_titles)
if(LAZYLEN(job.alt_titles))
. += "</a></td></tr><tr bgcolor='[lastJob.selection_color]'><td width='60%' align='center'>&nbsp</td><td><a href='?src=\ref[src];select_alt_title=\ref[job]'>\[[pref.GetPlayerAltTitle(job)]\]</a></td></tr>"
. += "</a></td></tr>"
. += "</td'></tr></table>"
@@ -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 += "<p style='background-color: [job.selection_color]'><br><br><p>"
if(job.alt_titles)
dat += "<i><b>Alternate titles:</b> [english_list(job.alt_titles)].</i>"
send_rsc(user, job.get_job_icon(), "job[ckey(rank)].png")
dat += "<img src=job[ckey(rank)].png width=96 height=96 style='float:left;'>"
if(job.departments)
dat += "<b>Departments:</b> [english_list(job.departments)]."
if(LAZYLEN(job.departments_managed))
dat += "You manage these departments: [english_list(job.departments_managed)]"
dat += "You answer to <b>[job.supervisors]</b> normally."
dat += "<hr style='clear:left;'>"
if(config.wikiurl)
dat += "<a href='?src=\ref[src];job_wiki=[rank]'>Open wiki page in browser</a>"
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 += "<br>"
dat += html_encode(description[2])
var/datum/browser/popup = new(user, "Job Info", "[capitalize(rank)]", 430, 520, src)
popup.set_content(jointext(dat,"<br>"))
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)

View File

@@ -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
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."

View File

@@ -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"