initial commit - cross reference with 5th port - obviously has compile errors

This commit is contained in:
LetterJay
2016-07-03 02:17:19 -05:00
commit 35a1723e98
4355 changed files with 2221257 additions and 0 deletions
+457
View File
@@ -0,0 +1,457 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
/var/const/access_security = 1 // Security equipment
/var/const/access_brig = 2 // Brig timers and permabrig
/var/const/access_armory = 3
/var/const/access_forensics_lockers= 4
/var/const/access_medical = 5
/var/const/access_morgue = 6
/var/const/access_tox = 7
/var/const/access_tox_storage = 8
/var/const/access_genetics = 9
/var/const/access_engine = 10
/var/const/access_engine_equip= 11
/var/const/access_maint_tunnels = 12
/var/const/access_external_airlocks = 13
/var/const/access_emergency_storage = 14
/var/const/access_change_ids = 15
/var/const/access_ai_upload = 16
/var/const/access_teleporter = 17
/var/const/access_eva = 18
/var/const/access_heads = 19
/var/const/access_captain = 20
/var/const/access_all_personal_lockers = 21
/var/const/access_chapel_office = 22
/var/const/access_tech_storage = 23
/var/const/access_atmospherics = 24
/var/const/access_bar = 25
/var/const/access_janitor = 26
/var/const/access_crematorium = 27
/var/const/access_kitchen = 28
/var/const/access_robotics = 29
/var/const/access_rd = 30
/var/const/access_cargo = 31
/var/const/access_construction = 32
/var/const/access_chemistry = 33
/var/const/access_cargo_bot = 34
/var/const/access_hydroponics = 35
/var/const/access_manufacturing = 36
/var/const/access_library = 37
/var/const/access_lawyer = 38
/var/const/access_virology = 39
/var/const/access_cmo = 40
/var/const/access_qm = 41
/var/const/access_court = 42
/var/const/access_surgery = 45
/var/const/access_theatre = 46
/var/const/access_research = 47
/var/const/access_mining = 48
/var/const/access_mining_office = 49 //not in use
/var/const/access_mailsorting = 50
/var/const/access_mint = 51
/var/const/access_mint_vault = 52
/var/const/access_heads_vault = 53
/var/const/access_mining_station = 54
/var/const/access_xenobiology = 55
/var/const/access_ce = 56
/var/const/access_hop = 57
/var/const/access_hos = 58
/var/const/access_RC_announce = 59 //Request console announcements
/var/const/access_keycard_auth = 60 //Used for events which require at least two people to confirm them
/var/const/access_tcomsat = 61 // has access to the entire telecomms satellite / machinery
/var/const/access_gateway = 62
/var/const/access_sec_doors = 63 // Security front doors
/var/const/access_mineral_storeroom = 64
/var/const/access_minisat = 65
/var/const/access_weapons = 66 //Weapon authorization for secbots
//BEGIN CENTCOM ACCESS
/*Should leave plenty of room if we need to add more access levels.
/var/const/Mostly for admin fun times.*/
/var/const/access_cent_general = 101//General facilities.
/var/const/access_cent_thunder = 102//Thunderdome.
/var/const/access_cent_specops = 103//Special Ops.
/var/const/access_cent_medical = 104//Medical/Research
/var/const/access_cent_living = 105//Living quarters.
/var/const/access_cent_storage = 106//Generic storage areas.
/var/const/access_cent_teleporter = 107//Teleporter.
/var/const/access_cent_captain = 109//Captain's office/ID comp/AI.
/var/const/access_cent_bar = 110 // The non-existent Centcom Bar
//The Syndicate
/var/const/access_syndicate = 150//General Syndicate Access
/var/const/access_syndicate_leader = 151//Nuke Op Leader Access
/obj/var/list/req_access = null
/obj/var/req_access_txt = "0"
/obj/var/list/req_one_access = null
/obj/var/req_one_access_txt = "0"
//returns 1 if this mob has sufficient access to use this object
/obj/proc/allowed(mob/M)
//check if it doesn't require any access at all
if(src.check_access(null))
return 1
if(istype(M, /mob/living/silicon))
//AI can do whatever he wants
return 1
if(IsAdminGhost(M))
//Access can't stop the abuse
return 1
else if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
//if they are holding or wearing a card that has access, that works
if(src.check_access(H.get_active_hand()) || src.check_access(H.wear_id))
return 1
else if(istype(M, /mob/living/carbon/monkey) || istype(M, /mob/living/carbon/alien/humanoid))
var/mob/living/carbon/george = M
//they can only hold things :(
if(src.check_access(george.get_active_hand()))
return 1
else if(isanimal(M))
var/mob/living/simple_animal/A = M
if(check_access(A.access_card))
return 1
return 0
/obj/item/proc/GetAccess()
return list()
/obj/item/proc/GetID()
return null
/obj/proc/check_access(obj/item/I)
//These generations have been moved out of /obj/New() because they were slowing down the creation of objects that never even used the access system.
if(!src.req_access)
src.req_access = list()
if(src.req_access_txt)
var/list/req_access_str = splittext(req_access_txt,";")
for(var/x in req_access_str)
var/n = text2num(x)
if(n)
req_access += n
if(!src.req_one_access)
src.req_one_access = list()
if(src.req_one_access_txt)
var/list/req_one_access_str = splittext(req_one_access_txt,";")
for(var/x in req_one_access_str)
var/n = text2num(x)
if(n)
req_one_access += n
if(!istype(src.req_access, /list)) //something's very wrong
return 1
var/list/L = src.req_access
if(!L.len && (!src.req_one_access || !src.req_one_access.len)) //no requirements
return 1
if(!I)
return 0
for(var/req in src.req_access)
if(!(req in I.GetAccess())) //doesn't have this access
return 0
if(src.req_one_access && src.req_one_access.len)
for(var/req in src.req_one_access)
if(req in I.GetAccess()) //has an access from the single access list
return 1
return 0
return 1
/obj/proc/check_access_list(list/L)
if(!src.req_access && !src.req_one_access)
return 1
if(!istype(src.req_access, /list))
return 1
if(!src.req_access.len && (!src.req_one_access || !src.req_one_access.len))
return 1
if(!L)
return 0
if(!istype(L, /list))
return 0
for(var/req in src.req_access)
if(!(req in L)) //doesn't have this access
return 0
if(src.req_one_access && src.req_one_access.len)
for(var/req in src.req_one_access)
if(req in L) //has an access from the single access list
return 1
return 0
return 1
/proc/get_centcom_access(job)
switch(job)
if("VIP Guest")
return list(access_cent_general)
if("Custodian")
return list(access_cent_general, access_cent_living, access_cent_storage)
if("Thunderdome Overseer")
return list(access_cent_general, access_cent_thunder)
if("Centcom Official")
return list(access_cent_general, access_cent_living)
if("Medical Officer")
return list(access_cent_general, access_cent_living, access_cent_medical)
if("Death Commando")
return list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)
if("Research Officer")
return list(access_cent_general, access_cent_specops, access_cent_medical, access_cent_teleporter, access_cent_storage)
if("Special Ops Officer")
return list(access_cent_general, access_cent_thunder, access_cent_specops, access_cent_living, access_cent_storage)
if("Admiral")
return get_all_centcom_access()
if("Centcom Commander")
return get_all_centcom_access()
if("Emergency Response Team Commander")
return get_ert_access("commander")
if("Security Response Officer")
return get_ert_access("sec")
if("Engineer Response Officer")
return get_ert_access("eng")
if("Medical Response Officer")
return get_ert_access("med")
if("Centcom Bartender")
return list(access_cent_general, access_cent_living, access_cent_bar)
/proc/get_all_accesses()
return list(access_security, access_sec_doors, access_brig, access_armory, access_forensics_lockers, access_court,
access_medical, access_genetics, access_morgue, access_rd,
access_tox, access_tox_storage, access_chemistry, access_engine, access_engine_equip, access_maint_tunnels,
access_external_airlocks, access_change_ids, access_ai_upload,
access_teleporter, access_eva, access_heads, access_captain, access_all_personal_lockers,
access_tech_storage, access_chapel_office, access_atmospherics, access_kitchen,
access_bar, access_janitor, access_crematorium, access_robotics, access_cargo, access_construction,
access_hydroponics, access_library, access_lawyer, access_virology, access_cmo, access_qm, access_surgery,
access_theatre, access_research, access_mining, access_mailsorting, access_weapons,
access_heads_vault, access_mining_station, access_xenobiology, access_ce, access_hop, access_hos, access_RC_announce,
access_keycard_auth, access_tcomsat, access_gateway, access_mineral_storeroom, access_minisat)
/proc/get_all_centcom_access()
return list(access_cent_general, access_cent_thunder, access_cent_specops, access_cent_medical, access_cent_living, access_cent_storage, access_cent_teleporter, access_cent_captain)
/proc/get_ert_access(class)
switch(class)
if("commander")
return get_all_centcom_access()
if("sec")
return list(access_cent_general, access_cent_specops, access_cent_living)
if("eng")
return list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)
if("med")
return list(access_cent_general, access_cent_specops, access_cent_medical, access_cent_living)
/proc/get_all_syndicate_access()
return list(access_syndicate, access_syndicate)
/proc/get_region_accesses(code)
switch(code)
if(0)
return get_all_accesses()
if(1) //station general
return list(access_kitchen,access_bar, access_hydroponics, access_janitor, access_chapel_office, access_crematorium, access_library, access_theatre, access_lawyer)
if(2) //security
return list(access_sec_doors, access_weapons, access_security, access_brig, access_armory, access_forensics_lockers, access_court, access_hos)
if(3) //medbay
return list(access_medical, access_genetics, access_morgue, access_chemistry, access_virology, access_surgery, access_cmo)
if(4) //research
return list(access_research, access_tox, access_tox_storage, access_genetics, access_robotics, access_xenobiology, access_minisat, access_rd)
if(5) //engineering and maintenance
return list(access_construction, access_maint_tunnels, access_engine, access_engine_equip, access_external_airlocks, access_tech_storage, access_atmospherics, access_tcomsat, access_minisat, access_ce)
if(6) //supply
return list(access_mailsorting, access_mining, access_mining_station, access_mineral_storeroom, access_cargo, access_qm)
if(7) //command
return list(access_heads, access_RC_announce, access_keycard_auth, access_change_ids, access_ai_upload, access_teleporter, access_eva, access_gateway, access_all_personal_lockers, access_heads_vault, access_hop, access_captain)
/proc/get_region_accesses_name(code)
switch(code)
if(0)
return "All"
if(1) //station general
return "General"
if(2) //security
return "Security"
if(3) //medbay
return "Medbay"
if(4) //research
return "Research"
if(5) //engineering and maintenance
return "Engineering"
if(6) //supply
return "Supply"
if(7) //command
return "Command"
/proc/get_access_desc(A)
switch(A)
if(access_cargo)
return "Cargo Bay"
if(access_cargo_bot)
return "Delivery Chutes"
if(access_security)
return "Security"
if(access_brig)
return "Holding Cells"
if(access_court)
return "Courtroom"
if(access_forensics_lockers)
return "Forensics"
if(access_medical)
return "Medical"
if(access_genetics)
return "Genetics Lab"
if(access_morgue)
return "Morgue"
if(access_tox)
return "R&D Lab"
if(access_tox_storage)
return "Toxins Lab"
if(access_chemistry)
return "Chemistry Lab"
if(access_rd)
return "RD Office"
if(access_bar)
return "Bar"
if(access_janitor)
return "Custodial Closet"
if(access_engine)
return "Engineering"
if(access_engine_equip)
return "Power Equipment"
if(access_maint_tunnels)
return "Maintenance"
if(access_external_airlocks)
return "External Airlocks"
if(access_emergency_storage)
return "Emergency Storage"
if(access_change_ids)
return "ID Console"
if(access_ai_upload)
return "AI Chambers"
if(access_teleporter)
return "Teleporter"
if(access_eva)
return "EVA"
if(access_heads)
return "Bridge"
if(access_captain)
return "Captain"
if(access_all_personal_lockers)
return "Personal Lockers"
if(access_chapel_office)
return "Chapel Office"
if(access_tech_storage)
return "Technical Storage"
if(access_atmospherics)
return "Atmospherics"
if(access_crematorium)
return "Crematorium"
if(access_armory)
return "Armory"
if(access_construction)
return "Construction"
if(access_kitchen)
return "Kitchen"
if(access_hydroponics)
return "Hydroponics"
if(access_library)
return "Library"
if(access_lawyer)
return "Law Office"
if(access_robotics)
return "Robotics"
if(access_virology)
return "Virology"
if(access_cmo)
return "CMO Office"
if(access_qm)
return "Quartermaster"
if(access_surgery)
return "Surgery"
if(access_theatre)
return "Theatre"
if(access_manufacturing)
return "Manufacturing"
if(access_research)
return "Science"
if(access_mining)
return "Mining"
if(access_mining_office)
return "Mining Office"
if(access_mailsorting)
return "Cargo Office"
if(access_mint)
return "Mint"
if(access_mint_vault)
return "Mint Vault"
if(access_heads_vault)
return "Main Vault"
if(access_mining_station)
return "Mining EVA"
if(access_xenobiology)
return "Xenobiology Lab"
if(access_hop)
return "HoP Office"
if(access_hos)
return "HoS Office"
if(access_ce)
return "CE Office"
if(access_RC_announce)
return "RC Announcements"
if(access_keycard_auth)
return "Keycode Auth."
if(access_tcomsat)
return "Telecommunications"
if(access_gateway)
return "Gateway"
if(access_sec_doors)
return "Brig"
if(access_mineral_storeroom)
return "Mineral Storage"
if(access_minisat)
return "AI Satellite"
if(access_weapons)
return "Weapon Permit"
/proc/get_centcom_access_desc(A)
switch(A)
if(access_cent_general)
return "Code Grey"
if(access_cent_thunder)
return "Code Yellow"
if(access_cent_storage)
return "Code Orange"
if(access_cent_living)
return "Code Green"
if(access_cent_medical)
return "Code White"
if(access_cent_teleporter)
return "Code Blue"
if(access_cent_specops)
return "Code Black"
if(access_cent_captain)
return "Code Gold"
if(access_cent_bar)
return "Code Scotch"
/proc/get_all_jobs()
return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician",
"Shaft Miner", "Clown", "Mime", "Janitor", "Librarian", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer",
"Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist",
"Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer")
/proc/get_all_job_icons() //For all existing HUD icons
return get_all_jobs() + list("Prisoner")
/proc/get_all_centcom_jobs()
return list("VIP Guest","Custodian","Thunderdome Overseer","Centcom Official","Medical Officer","Death Commando","Research Officer","Special Ops Officer","Admiral","Centcom Commander","Emergency Response Team Commander","Security Response Officer","Engineer Response Officer", "Medical Response Officer","Centcom Bartender")
/obj/item/proc/GetJobName() //Used in secHUD icon generation
var/obj/item/weapon/card/id/I = GetID()
if(!I)
return
var/jobName = I.assignment
if(jobName in get_all_job_icons()) //Check if the job has a hud icon
return jobName
if(jobName in get_all_centcom_jobs()) //Return with the NT logo if it is a Centcom job
return "Centcom"
return "Unknown" //Return unknown if none of the above apply
+40
View File
@@ -0,0 +1,40 @@
/*
Assistant
*/
/datum/job/assistant
title = "Assistant"
flag = ASSISTANT
department_flag = CIVILIAN
faction = "Station"
total_positions = -1
spawn_positions = -1
supervisors = "absolutely everyone"
selection_color = "#dddddd"
access = list() //See /datum/job/assistant/get_access()
minimal_access = list() //See /datum/job/assistant/get_access()
outfit = /datum/outfit/job/assistant
/datum/job/assistant/get_access()
if((config.jobs_have_maint_access & ASSISTANTS_HAVE_MAINT_ACCESS) || !config.jobs_have_minimal_access) //Config has assistant maint access set
. = ..()
. |= list(access_maint_tunnels)
else
return ..()
/datum/job/assistant/config_check()
if(config && !(config.assistant_cap == 0))
total_positions = config.assistant_cap
spawn_positions = config.assistant_cap
return 1
return 0
/datum/outfit/job/assistant
name = "Assistant"
/datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/H)
..()
if (config.grey_assistants)
uniform = /obj/item/clothing/under/color/grey
else
uniform = /obj/item/clothing/under/color/random
+110
View File
@@ -0,0 +1,110 @@
/*
Captain
*/
/datum/job/captain
title = "Captain"
flag = CAPTAIN
department_head = list("Centcom")
department_flag = ENGSEC
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "Nanotrasen officials and Space law"
selection_color = "#ccccff"
req_admin_notify = 1
minimal_player_age = 14
outfit = /datum/outfit/job/captain
access = list() //See get_access()
minimal_access = list() //See get_access()
/datum/job/captain/get_access()
return get_all_accesses()
/datum/outfit/job/captain
name = "Captain"
id = /obj/item/weapon/card/id/gold
belt = /obj/item/device/pda/captain
glasses = /obj/item/clothing/glasses/sunglasses
ears = /obj/item/device/radio/headset/heads/captain/alt
gloves = /obj/item/clothing/gloves/color/captain
uniform = /obj/item/clothing/under/rank/captain
suit = /obj/item/clothing/suit/armor/vest/capcarapace
shoes = /obj/item/clothing/shoes/sneakers/brown
head = /obj/item/clothing/head/caphat
backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1, /obj/item/station_charter=1)
backpack = /obj/item/weapon/storage/backpack/captain
satchel = /obj/item/weapon/storage/backpack/satchel_cap
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/captain
/datum/outfit/job/captain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
var/obj/item/clothing/under/U = H.w_uniform
U.attachTie(new /obj/item/clothing/tie/medal/gold/captain())
if(visualsOnly)
return
var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(H)
L.imp_in = H
L.implanted = 1
H.sec_hud_set_implants()
minor_announce("Captain [H.real_name] on deck!")
/*
Head of Personnel
*/
/datum/job/hop
title = "Head of Personnel"
flag = HOP
department_head = list("Captain")
department_flag = CIVILIAN
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the captain"
selection_color = "#ddddff"
req_admin_notify = 1
minimal_player_age = 10
outfit = /datum/outfit/job/hop
access = list(access_security, access_sec_doors, access_court, access_weapons,
access_medical, access_engine, access_change_ids, access_ai_upload, access_eva, access_heads,
access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction, access_morgue,
access_crematorium, access_kitchen, access_cargo, access_cargo_bot, access_mailsorting, access_qm, access_hydroponics, access_lawyer,
access_theatre, 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, access_mineral_storeroom)
minimal_access = list(access_security, access_sec_doors, access_court, access_weapons,
access_medical, access_engine, access_change_ids, access_ai_upload, access_eva, access_heads,
access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction, access_morgue,
access_crematorium, access_kitchen, access_cargo, access_cargo_bot, access_mailsorting, access_qm, access_hydroponics, access_lawyer,
access_theatre, 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, access_mineral_storeroom)
/datum/outfit/job/hop
name = "Head of Personnel"
id = /obj/item/weapon/card/id/silver
belt = /obj/item/device/pda/heads/hop
ears = /obj/item/device/radio/headset/heads/hop
uniform = /obj/item/clothing/under/rank/head_of_personnel
shoes = /obj/item/clothing/shoes/sneakers/brown
head = /obj/item/clothing/head/hopcap
backpack_contents = list(/obj/item/weapon/storage/box/ids=1,\
/obj/item/weapon/melee/classic_baton/telescopic=1)
/datum/outfit/job/hop/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(visualsOnly)
return
announce_head(H, list("Supply", "Service"))
@@ -0,0 +1,230 @@
/*
Quartermaster
*/
/datum/job/qm
title = "Quartermaster"
flag = QUARTERMASTER
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the head of personnel"
selection_color = "#d7b088"
outfit = /datum/outfit/job/quartermaster
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom)
minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom)
/datum/outfit/job/quartermaster
name = "Quartermaster"
belt = /obj/item/device/pda/quartermaster
ears = /obj/item/device/radio/headset/headset_cargo
uniform = /obj/item/clothing/under/rank/cargo
shoes = /obj/item/clothing/shoes/sneakers/brown
glasses = /obj/item/clothing/glasses/sunglasses
l_hand = /obj/item/weapon/clipboard
/*
Cargo Technician
*/
/datum/job/cargo_tech
title = "Cargo Technician"
flag = CARGOTECH
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
total_positions = 3
spawn_positions = 2
supervisors = "the quartermaster and the head of personnel"
selection_color = "#dcba97"
outfit = /datum/outfit/job/cargo_tech
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom)
minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting, access_mineral_storeroom)
/datum/outfit/job/cargo_tech
name = "Cargo Technician"
belt = /obj/item/device/pda/cargo
ears = /obj/item/device/radio/headset/headset_cargo
uniform = /obj/item/clothing/under/rank/cargotech
/*
Shaft Miner
*/
/datum/job/mining
title = "Shaft Miner"
flag = MINER
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
total_positions = 3
spawn_positions = 3
supervisors = "the quartermaster and the head of personnel"
selection_color = "#dcba97"
outfit = /datum/outfit/job/miner
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom)
minimal_access = list(access_mining, access_mining_station, access_mailsorting, access_mineral_storeroom)
/datum/outfit/job/miner
name = "Shaft Miner"
belt = /obj/item/device/pda/shaftminer
ears = /obj/item/device/radio/headset/headset_cargo/mining
shoes = /obj/item/clothing/shoes/workboots/mining
gloves = /obj/item/clothing/gloves/color/black
uniform = /obj/item/clothing/under/rank/miner/lavaland
l_pocket = /obj/item/weapon/reagent_containers/hypospray/medipen/survival
r_pocket = /obj/item/device/flashlight/seclite
backpack_contents = list(
/obj/item/weapon/storage/bag/ore=1,\
/obj/item/weapon/kitchen/knife/combat/survival=1,\
/obj/item/weapon/mining_voucher=1)
backpack = /obj/item/weapon/storage/backpack/explorer
satchel = /obj/item/weapon/storage/backpack/satchel_explorer
dufflebag = /obj/item/weapon/storage/backpack/dufflebag
box = /obj/item/weapon/storage/box/survival_mining
/*
Bartender
*/
/datum/job/bartender
title = "Bartender"
flag = BARTENDER
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the head of personnel"
selection_color = "#bbe291"
outfit = /datum/outfit/job/bartender
access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons)
minimal_access = list(access_bar)
/datum/outfit/job/bartender
name = "Bartender"
glasses = /obj/item/clothing/glasses/sunglasses/reagent
belt = /obj/item/device/pda/bar
ears = /obj/item/device/radio/headset/headset_srv
uniform = /obj/item/clothing/under/rank/bartender
suit = /obj/item/clothing/suit/armor/vest
backpack_contents = list(/obj/item/weapon/storage/box/beanbag=1)
shoes = /obj/item/clothing/shoes/laceup
/*
Cook
*/
/datum/job/cook
title = "Cook"
flag = COOK
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
total_positions = 2
spawn_positions = 1
supervisors = "the head of personnel"
selection_color = "#bbe291"
var/cooks = 0 //Counts cooks amount
outfit = /datum/outfit/job/cook
access = list(access_hydroponics, access_bar, access_kitchen, access_morgue)
minimal_access = list(access_kitchen, access_morgue)
/datum/outfit/job/cook
name = "Cook"
belt = /obj/item/device/pda/cook
ears = /obj/item/device/radio/headset/headset_srv
uniform = /obj/item/clothing/under/rank/chef
suit = /obj/item/clothing/suit/toggle/chef
head = /obj/item/clothing/head/chefhat
/datum/outfit/job/cook/pre_equip(mob/living/carbon/human/H)
..()
var/datum/job/cook/J = SSjob.GetJob(H.job)
if(J) // Fix for runtime caused by invalid job being passed
J.cooks++
if(J.cooks>1)//Cooks
suit = /obj/item/clothing/suit/apron/chef
head = /obj/item/clothing/head/soft/mime
/datum/outfit/job/cook/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
var/list/possible_boxes = subtypesof(/obj/item/weapon/storage/box/ingredients)
var/chosen_box = pick(possible_boxes)
var/obj/item/weapon/storage/box/I = new chosen_box(src)
H.equip_to_slot_or_del(I,slot_in_backpack)
/*
Botanist
*/
/datum/job/hydro
title = "Botanist"
flag = BOTANIST
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
total_positions = 3
spawn_positions = 2
supervisors = "the head of personnel"
selection_color = "#bbe291"
outfit = /datum/outfit/job/botanist
access = list(access_hydroponics, access_bar, access_kitchen, access_morgue) // Removed tox and chem access because STOP PISSING OFF THE CHEMIST GUYS // //Removed medical access because WHAT THE FUCK YOU AREN'T A DOCTOR YOU GROW WHEAT //Given Morgue access because they have a viable means of cloning.
minimal_access = list(access_hydroponics, access_morgue) // Removed tox and chem access because STOP PISSING OFF THE CHEMIST GUYS // //Removed medical access because WHAT THE FUCK YOU AREN'T A DOCTOR YOU GROW WHEAT //Given Morgue access because they have a viable means of cloning.
/datum/outfit/job/botanist
name = "Botanist"
belt = /obj/item/device/pda/botanist
ears = /obj/item/device/radio/headset/headset_srv
uniform = /obj/item/clothing/under/rank/hydroponics
suit = /obj/item/clothing/suit/apron
gloves =/obj/item/clothing/gloves/botanic_leather
suit_store = /obj/item/device/plant_analyzer
backpack = /obj/item/weapon/storage/backpack/botany
satchel = /obj/item/weapon/storage/backpack/satchel_hyd
/*
Janitor
*/
/datum/job/janitor
title = "Janitor"
flag = JANITOR
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
total_positions = 2
spawn_positions = 1
supervisors = "the head of personnel"
selection_color = "#bbe291"
var/global/janitors = 0
outfit = /datum/outfit/job/janitor
access = list(access_janitor, access_maint_tunnels)
minimal_access = list(access_janitor, access_maint_tunnels)
/datum/outfit/job/janitor
name = "Janitor"
belt = /obj/item/device/pda/janitor
ears = /obj/item/device/radio/headset/headset_srv
uniform = /obj/item/clothing/under/rank/janitor
+178
View File
@@ -0,0 +1,178 @@
/*
Clown
*/
/datum/job/clown
title = "Clown"
flag = CLOWN
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the head of personnel"
selection_color = "#dddddd"
outfit = /datum/outfit/job/clown
access = list(access_theatre)
minimal_access = list(access_theatre)
/datum/outfit/job/clown
name = "Clown"
belt = /obj/item/device/pda/clown
uniform = /obj/item/clothing/under/rank/clown
shoes = /obj/item/clothing/shoes/clown_shoes
mask = /obj/item/clothing/mask/gas/clown_hat
l_pocket = /obj/item/weapon/bikehorn
r_pocket = /obj/item/toy/crayon/rainbow
backpack_contents = list(
/obj/item/weapon/stamp/clown = 1,
/obj/item/weapon/reagent_containers/spray/waterflower = 1,
/obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1,
/obj/item/device/megaphone/clown = 1
)
backpack = /obj/item/weapon/storage/backpack/clown
satchel = /obj/item/weapon/storage/backpack/clown
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/clown //strangely has a duffle
/datum/outfit/job/clown/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(visualsOnly)
return
H.fully_replace_character_name(H.real_name, pick(clown_names))
/datum/outfit/job/clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(visualsOnly)
return
var/obj/item/weapon/implant/sad_trombone/S = new/obj/item/weapon/implant/sad_trombone(H)
S.imp_in = H
S.implanted = 1
H.dna.add_mutation(CLOWNMUT)
H.rename_self("clown")
/*
Mime
*/
/datum/job/mime
title = "Mime"
flag = MIME
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the head of personnel"
selection_color = "#dddddd"
outfit = /datum/outfit/job/mime
access = list(access_theatre)
minimal_access = list(access_theatre)
/datum/outfit/job/mime
name = "Mime"
belt = /obj/item/device/pda/mime
uniform = /obj/item/clothing/under/rank/mime
mask = /obj/item/clothing/mask/gas/mime
gloves = /obj/item/clothing/gloves/color/white
head = /obj/item/clothing/head/beret
suit = /obj/item/clothing/suit/suspenders
backpack_contents = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing=1,\
/obj/item/toy/crayon/mime=1)
backpack = /obj/item/weapon/storage/backpack/mime
satchel = /obj/item/weapon/storage/backpack/mime
/datum/outfit/job/mime/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(visualsOnly)
return
if(H.mind)
H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(null))
H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak(null))
H.mind.miming = 1
H.rename_self("mime")
/*
Librarian
*/
/datum/job/librarian
title = "Librarian"
flag = LIBRARIAN
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the head of personnel"
selection_color = "#dddddd"
outfit = /datum/outfit/job/librarian
access = list(access_library)
minimal_access = list(access_library)
/datum/outfit/job/librarian
name = "Librarian"
belt = /obj/item/device/pda/librarian
uniform = /obj/item/clothing/under/rank/librarian
l_hand = /obj/item/weapon/storage/bag/books
r_pocket = /obj/item/weapon/barcodescanner
l_pocket = /obj/item/device/laser_pointer
/*
Lawyer
*/
/datum/job/lawyer
title = "Lawyer"
flag = LAWYER
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the head of personnel"
selection_color = "#dddddd"
var/lawyers = 0 //Counts lawyer amount
outfit = /datum/outfit/job/lawyer
access = list(access_lawyer, access_court, access_sec_doors)
minimal_access = list(access_lawyer, access_court, access_sec_doors)
/datum/outfit/job/lawyer
name = "Lawyer"
belt = /obj/item/device/pda/lawyer
ears = /obj/item/device/radio/headset/headset_sec
uniform = /obj/item/clothing/under/lawyer/bluesuit
suit = /obj/item/clothing/suit/toggle/lawyer
shoes = /obj/item/clothing/shoes/laceup
l_hand = /obj/item/weapon/storage/briefcase/lawyer
l_pocket = /obj/item/device/laser_pointer
/datum/outfit/job/lawyer/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(visualsOnly)
return
var/datum/job/lawyer/J = SSjob.GetJob(H.job)
J.lawyers++
if(J.lawyers>1)
uniform = /obj/item/clothing/under/lawyer/purpsuit
suit = /obj/item/clothing/suit/toggle/lawyer/purple
@@ -0,0 +1,79 @@
//Due to how large this one is it gets its own file
/*
Chaplain
*/
/datum/job/chaplain
title = "Chaplain"
flag = CHAPLAIN
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the head of personnel"
selection_color = "#dddddd"
outfit = /datum/outfit/job/chaplain
access = list(access_morgue, access_chapel_office, access_crematorium, access_theatre)
minimal_access = list(access_morgue, access_chapel_office, access_crematorium, access_theatre)
/datum/outfit/job/chaplain
name = "Chaplain"
belt = /obj/item/device/pda/chaplain
uniform = /obj/item/clothing/under/rank/chaplain
backpack_contents = list(/obj/item/device/camera/spooky = 1)
backpack = /obj/item/weapon/storage/backpack/cultpack
satchel = /obj/item/weapon/storage/backpack/cultpack
/datum/outfit/job/chaplain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(visualsOnly)
return
var/obj/item/weapon/storage/book/bible/B = new /obj/item/weapon/storage/book/bible/booze(H)
var/new_religion = "Christianity"
if(H.client && H.client.prefs.custom_names["religion"])
new_religion = H.client.prefs.custom_names["religion"]
switch(lowertext(new_religion))
if("christianity")
B.name = pick("The Holy Bible","The Dead Sea Scrolls")
if("satanism")
B.name = "The Unholy Bible"
if("cthulu")
B.name = "The Necronomicon"
if("islam")
B.name = "Quran"
if("scientology")
B.name = pick("The Biography of L. Ron Hubbard","Dianetics")
if("chaos")
B.name = "The Book of Lorgar"
if("imperium")
B.name = "Uplifting Primer"
if("toolboxia")
B.name = "Toolbox Manifesto"
if("homosexuality")
B.name = "Guys Gone Wild"
if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks", "meme", "memes")
B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition")
H.setBrainLoss(100) // starts off retarded as fuck
if("science")
B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition")
else
B.name = "The Holy Book of [new_religion]"
feedback_set_details("religion_name","[new_religion]")
ticker.Bible_name = B.name
var/new_deity = "Space Jesus"
if(H.client && H.client.prefs.custom_names["deity"])
new_deity = H.client.prefs.custom_names["deity"]
B.deity_name = new_deity
if(ticker)
ticker.Bible_deity_name = B.deity_name
feedback_set_details("religion_deity","[new_deity]")
H.equip_to_slot_or_del(B, slot_in_backpack)
+126
View File
@@ -0,0 +1,126 @@
/*
Chief Engineer
*/
/datum/job/chief_engineer
title = "Chief Engineer"
flag = CHIEF
department_head = list("Captain")
department_flag = ENGSEC
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the captain"
selection_color = "#ffeeaa"
req_admin_notify = 1
minimal_player_age = 7
outfit = /datum/outfit/job/ce
access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels,
access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva,
access_heads, access_construction, access_sec_doors, access_minisat,
access_ce, access_RC_announce, access_keycard_auth, access_tcomsat, access_mineral_storeroom)
minimal_access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels,
access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva,
access_heads, access_construction, access_sec_doors, access_minisat,
access_ce, access_RC_announce, access_keycard_auth, access_tcomsat, access_mineral_storeroom)
/datum/outfit/job/ce
name = "Chief Engineer"
id = /obj/item/weapon/card/id/silver
belt = /obj/item/weapon/storage/belt/utility/full
l_pocket = /obj/item/device/pda/heads/ce
ears = /obj/item/device/radio/headset/heads/ce
uniform = /obj/item/clothing/under/rank/chief_engineer
shoes = /obj/item/clothing/shoes/sneakers/brown
head = /obj/item/clothing/head/hardhat/white
gloves = /obj/item/clothing/gloves/color/black/ce
backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1)
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel_eng
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/engineering
box = /obj/item/weapon/storage/box/engineer
pda_slot = slot_l_store
/datum/outfit/job/ce/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(visualsOnly)
return
announce_head(H, list("Engineering"))
/*
Station Engineer
*/
/datum/job/engineer
title = "Station Engineer"
flag = ENGINEER
department_head = list("Chief Engineer")
department_flag = ENGSEC
faction = "Station"
total_positions = 5
spawn_positions = 5
supervisors = "the chief engineer"
selection_color = "#fff5cc"
outfit = /datum/outfit/job/engineer
access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels,
access_external_airlocks, access_construction, access_atmospherics, access_tcomsat)
minimal_access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels,
access_external_airlocks, access_construction, access_tcomsat)
/datum/outfit/job/engineer
name = "Station Engineer"
belt = /obj/item/weapon/storage/belt/utility/full
l_pocket = /obj/item/device/pda/engineering
ears = /obj/item/device/radio/headset/headset_eng
uniform = /obj/item/clothing/under/rank/engineer
shoes = /obj/item/clothing/shoes/workboots
head = /obj/item/clothing/head/hardhat
r_pocket = /obj/item/device/t_scanner
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel_eng
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/engineering
box = /obj/item/weapon/storage/box/engineer
pda_slot = slot_l_store
/*
Atmospheric Technician
*/
/datum/job/atmos
title = "Atmospheric Technician"
flag = ATMOSTECH
department_head = list("Chief Engineer")
department_flag = ENGSEC
faction = "Station"
total_positions = 3
spawn_positions = 2
supervisors = "the chief engineer"
selection_color = "#fff5cc"
outfit = /datum/outfit/job/atmos
access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels,
access_external_airlocks, access_construction, access_atmospherics)
minimal_access = list(access_atmospherics, access_maint_tunnels, access_emergency_storage, access_construction)
/datum/outfit/job/atmos
name = "Atmospheric Technician"
belt = /obj/item/weapon/storage/belt/utility/atmostech
l_pocket = /obj/item/device/pda/atmos
ears = /obj/item/device/radio/headset/headset_eng
uniform = /obj/item/clothing/under/rank/atmospheric_technician
r_pocket = /obj/item/device/analyzer
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel_eng
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/engineering
box = /obj/item/weapon/storage/box/engineer
pda_slot = slot_l_store
+194
View File
@@ -0,0 +1,194 @@
/datum/job
//The name of the job
var/title = "NOPE"
//Job access. The use of minimal_access or access is determined by a config setting: config.jobs_have_minimal_access
var/list/minimal_access = list() //Useful for servers which prefer to only have access given to the places a job absolutely needs (Larger server population)
var/list/access = list() //Useful for servers which either have fewer players, so each person needs to fill more than one role, or servers which like to give more access, so players can't hide forever in their super secure departments (I'm looking at you, chemistry!)
//Determines who can demote this position
var/department_head = list()
//Bitflags for the job
var/flag = 0
var/department_flag = 0
//Players will be allowed to spawn in as jobs that are set to "Station"
var/faction = "None"
//How many players can be this job
var/total_positions = 0
//How many players can spawn in as this job
var/spawn_positions = 0
//How many players have this job
var/current_positions = 0
//Supervisors, who this person answers to directly
var/supervisors = ""
//Sellection screen color
var/selection_color = "#ffffff"
//If this is set to 1, a text is printed to the player when jobs are assigned, telling him that he should let admins know that he has to disconnect.
var/req_admin_notify
//If you have the 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/minimal_player_age = 0
var/outfit = null
//Only override this proc
/datum/job/proc/equip_items(mob/living/carbon/human/H)
//But don't override this
/datum/job/proc/equip(mob/living/carbon/human/H, visualsOnly = FALSE)
if(!H)
return 0
//Equip the rest of the gear
H.dna.species.before_equip_job(src, H, visualsOnly)
if(outfit)
H.equipOutfit(outfit, visualsOnly)
H.dna.species.after_equip_job(src, H, visualsOnly)
/datum/job/proc/apply_fingerprints(mob/living/carbon/human/H)
if(!istype(H))
return
if(H.back)
H.back.add_fingerprint(H,1) //The 1 sets a flag to ignore gloves
for(var/obj/item/I in H.back.contents)
I.add_fingerprint(H,1)
if(H.wear_id)
H.wear_id.add_fingerprint(H,1)
if(H.w_uniform)
H.w_uniform.add_fingerprint(H,1)
if(H.wear_suit)
H.wear_suit.add_fingerprint(H,1)
if(H.wear_mask)
H.wear_mask.add_fingerprint(H,1)
if(H.head)
H.head.add_fingerprint(H,1)
if(H.shoes)
H.shoes.add_fingerprint(H,1)
if(H.gloves)
H.gloves.add_fingerprint(H,1)
if(H.ears)
H.ears.add_fingerprint(H,1)
if(H.glasses)
H.glasses.add_fingerprint(H,1)
if(H.belt)
H.belt.add_fingerprint(H,1)
for(var/obj/item/I in H.belt.contents)
I.add_fingerprint(H,1)
if(H.s_store)
H.s_store.add_fingerprint(H,1)
if(H.l_store)
H.l_store.add_fingerprint(H,1)
if(H.r_store)
H.r_store.add_fingerprint(H,1)
return 1
/datum/job/proc/get_access()
if(!config) //Needed for robots.
return src.minimal_access.Copy()
. = list()
if(config.jobs_have_minimal_access)
. = src.minimal_access.Copy()
else
. = src.access.Copy()
if(config.jobs_have_maint_access & EVERYONE_HAS_MAINT_ACCESS) //Config has global maint access set
. |= list(access_maint_tunnels)
//If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1
/datum/job/proc/player_old_enough(client/C)
if(available_in_days(C) == 0)
return 1 //Available in 0 days = available right now = player is old enough to play.
return 0
/datum/job/proc/available_in_days(client/C)
if(!C)
return 0
if(!config.use_age_restriction_for_jobs)
return 0
if(!isnum(C.player_age))
return 0 //This is only a number if the db connection is established, otherwise it is text: "Requires database", meaning these restrictions cannot be enforced
if(!isnum(minimal_player_age))
return 0
return max(0, minimal_player_age - C.player_age)
/datum/job/proc/config_check()
return 1
/datum/outfit/job
name = "Standard Gear"
uniform = /obj/item/clothing/under/color/grey
id = /obj/item/weapon/card/id
ears = /obj/item/device/radio/headset
belt = /obj/item/device/pda
back = /obj/item/weapon/storage/backpack
shoes = /obj/item/clothing/shoes/sneakers/black
var/backpack = /obj/item/weapon/storage/backpack
var/satchel = /obj/item/weapon/storage/backpack/satchel_norm
var/dufflebag = /obj/item/weapon/storage/backpack/dufflebag
var/box = /obj/item/weapon/storage/box/survival
var/pda_slot = slot_belt
/datum/outfit/job/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
switch(H.backbag)
if(GBACKPACK)
back = /obj/item/weapon/storage/backpack //Grey backpack
if(GSATCHEL)
back = /obj/item/weapon/storage/backpack/satchel_norm //Grey satchel
if(GDUFFLEBAG)
back = /obj/item/weapon/storage/backpack/dufflebag //Grey Dufflebag
if(LSATCHEL)
back = /obj/item/weapon/storage/backpack/satchel //Leather Satchel
if(DSATCHEL)
back = satchel //Department satchel
if(DDUFFLEBAG)
back = dufflebag //Department dufflebag
else
back = backpack //Department backpack
if(box)
backpack_contents.Insert(1, box) // Box always takes a first slot in backpack
backpack_contents[box] = 1
/datum/outfit/job/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
if(visualsOnly)
return
var/obj/item/weapon/card/id/C = H.wear_id
if(istype(C))
var/datum/job/J = SSjob.GetJob(H.job) // Not sure the best idea
C.access = J.get_access()
C.registered_name = H.real_name
C.assignment = H.job
C.update_label()
H.sec_hud_set_ID()
var/obj/item/device/pda/PDA = H.get_item_by_slot(pda_slot)
if(istype(PDA))
PDA.owner = H.real_name
PDA.ownjob = H.job
PDA.update_label()
/datum/outfit/job/proc/announce_head(var/mob/living/carbon/human/H, var/channels) //tells the given channel that the given mob is the new department head. See communications.dm for valid channels.
spawn(4) //to allow some initialization
if(H && announcement_systems.len)
var/obj/machinery/announcement_system/announcer = pick(announcement_systems)
announcer.announce("NEWHEAD", H.real_name, H.job, channels)
+183
View File
@@ -0,0 +1,183 @@
/*
Chief Medical Officer
*/
/datum/job/cmo
title = "Chief Medical Officer"
flag = CMO
department_head = list("Captain")
department_flag = MEDSCI
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the captain"
selection_color = "#ffddf0"
req_admin_notify = 1
minimal_player_age = 7
outfit = /datum/outfit/job/cmo
access = list(access_medical, access_morgue, access_genetics, access_heads, access_mineral_storeroom,
access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce,
access_keycard_auth, access_sec_doors, access_maint_tunnels)
minimal_access = list(access_medical, access_morgue, access_genetics, access_heads, access_mineral_storeroom,
access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce,
access_keycard_auth, access_sec_doors, access_maint_tunnels)
/datum/outfit/job/cmo
name = "Chief Medical Officer"
id = /obj/item/weapon/card/id/silver
belt = /obj/item/device/pda/heads/cmo
ears = /obj/item/device/radio/headset/heads/cmo
uniform = /obj/item/clothing/under/rank/chief_medical_officer
shoes = /obj/item/clothing/shoes/sneakers/brown
suit = /obj/item/clothing/suit/toggle/labcoat/cmo
l_hand = /obj/item/weapon/storage/firstaid/regular
suit_store = /obj/item/device/flashlight/pen
backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1)
backpack = /obj/item/weapon/storage/backpack/medic
satchel = /obj/item/weapon/storage/backpack/satchel_med
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
/datum/outfit/job/cmo/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(visualsOnly)
return
announce_head(H, list("Medical")) //tell underlings (medical radio) they have a head
/*
Medical Doctor
*/
/datum/job/doctor
title = "Medical Doctor"
flag = DOCTOR
department_head = list("Chief Medical Officer")
department_flag = MEDSCI
faction = "Station"
total_positions = 5
spawn_positions = 3
supervisors = "the chief medical officer"
selection_color = "#ffeef0"
outfit = /datum/outfit/job/doctor
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_mineral_storeroom)
minimal_access = list(access_medical, access_morgue, access_surgery)
/datum/outfit/job/doctor
name = "Medical Doctor"
belt = /obj/item/device/pda/medical
ears = /obj/item/device/radio/headset/headset_med
uniform = /obj/item/clothing/under/rank/medical
shoes = /obj/item/clothing/shoes/sneakers/white
suit = /obj/item/clothing/suit/toggle/labcoat
l_hand = /obj/item/weapon/storage/firstaid/regular
suit_store = /obj/item/device/flashlight/pen
backpack = /obj/item/weapon/storage/backpack/medic
satchel = /obj/item/weapon/storage/backpack/satchel_med
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
/*
Chemist
*/
/datum/job/chemist
title = "Chemist"
flag = CHEMIST
department_head = list("Chief Medical Officer")
department_flag = MEDSCI
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the chief medical officer"
selection_color = "#ffeef0"
outfit = /datum/outfit/job/chemist
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_mineral_storeroom)
minimal_access = list(access_medical, access_chemistry, access_mineral_storeroom)
/datum/outfit/job/chemist
name = "Chemist"
glasses = /obj/item/clothing/glasses/science
belt = /obj/item/device/pda/chemist
ears = /obj/item/device/radio/headset/headset_med
uniform = /obj/item/clothing/under/rank/chemist
shoes = /obj/item/clothing/shoes/sneakers/white
suit = /obj/item/clothing/suit/toggle/labcoat/chemist
backpack = /obj/item/weapon/storage/backpack/chemistry
satchel = /obj/item/weapon/storage/backpack/satchel_chem
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
/*
Geneticist
*/
/datum/job/geneticist
title = "Geneticist"
flag = GENETICIST
department_head = list("Chief Medical Officer", "Research Director")
department_flag = MEDSCI
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the chief medical officer and research director"
selection_color = "#ffeef0"
outfit = /datum/outfit/job/geneticist
access = list(access_medical, access_morgue, access_chemistry, access_virology, access_genetics, access_research, access_xenobiology, access_robotics, access_mineral_storeroom, access_tech_storage)
minimal_access = list(access_medical, access_morgue, access_genetics, access_research)
/datum/outfit/job/geneticist
name = "Geneticist"
belt = /obj/item/device/pda/geneticist
ears = /obj/item/device/radio/headset/headset_medsci
uniform = /obj/item/clothing/under/rank/geneticist
shoes = /obj/item/clothing/shoes/sneakers/white
suit = /obj/item/clothing/suit/toggle/labcoat/genetics
suit_store = /obj/item/device/flashlight/pen
backpack = /obj/item/weapon/storage/backpack/genetics
satchel = /obj/item/weapon/storage/backpack/satchel_gen
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
/*
Virologist
*/
/datum/job/virologist
title = "Virologist"
flag = VIROLOGIST
department_head = list("Chief Medical Officer")
department_flag = MEDSCI
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the chief medical officer"
selection_color = "#ffeef0"
outfit = /datum/outfit/job/virologist
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_mineral_storeroom)
minimal_access = list(access_medical, access_virology, access_mineral_storeroom)
/datum/outfit/job/virologist
name = "Virologist"
belt = /obj/item/device/pda/viro
ears = /obj/item/device/radio/headset/headset_med
uniform = /obj/item/clothing/under/rank/virologist
mask = /obj/item/clothing/mask/surgical
shoes = /obj/item/clothing/shoes/sneakers/white
suit = /obj/item/clothing/suit/toggle/labcoat/virologist
suit_store = /obj/item/device/flashlight/pen
backpack = /obj/item/weapon/storage/backpack/virology
satchel = /obj/item/weapon/storage/backpack/satchel_vir
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
+116
View File
@@ -0,0 +1,116 @@
/*
Research Director
*/
/datum/job/rd
title = "Research Director"
flag = RD
department_head = list("Captain")
department_flag = MEDSCI
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the captain"
selection_color = "#ffddff"
req_admin_notify = 1
minimal_player_age = 7
outfit = /datum/outfit/job/rd
access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
access_tox_storage, access_teleporter, access_sec_doors,
access_research, access_robotics, access_xenobiology, access_ai_upload,
access_RC_announce, access_keycard_auth, access_gateway, access_mineral_storeroom,
access_tech_storage, access_minisat, access_maint_tunnels)
minimal_access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
access_tox_storage, access_teleporter, access_sec_doors,
access_research, access_robotics, access_xenobiology, access_ai_upload,
access_RC_announce, access_keycard_auth, access_gateway, access_mineral_storeroom,
access_tech_storage, access_minisat, access_maint_tunnels)
/datum/outfit/job/rd
name = "Research Director"
id = /obj/item/weapon/card/id/silver
belt = /obj/item/device/pda/heads/rd
ears = /obj/item/device/radio/headset/heads/rd
uniform = /obj/item/clothing/under/rank/research_director
shoes = /obj/item/clothing/shoes/sneakers/brown
suit = /obj/item/clothing/suit/toggle/labcoat
l_hand = /obj/item/weapon/clipboard
l_pocket = /obj/item/device/laser_pointer
backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1)
backpack = /obj/item/weapon/storage/backpack/science
satchel = /obj/item/weapon/storage/backpack/satchel_tox
/datum/outfit/job/rd/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(visualsOnly)
return
announce_head(H, list("Science")) //tell underlings (science radio) they have a head
/*
Scientist
*/
/datum/job/scientist
title = "Scientist"
flag = SCIENTIST
department_head = list("Research Director")
department_flag = MEDSCI
faction = "Station"
total_positions = 5
spawn_positions = 3
supervisors = "the research director"
selection_color = "#ffeeff"
outfit = /datum/outfit/job/scientist
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_mineral_storeroom, access_tech_storage, access_genetics)
minimal_access = list(access_tox, access_tox_storage, access_research, access_xenobiology, access_mineral_storeroom)
/datum/outfit/job/scientist
name = "Scientist"
belt = /obj/item/device/pda/toxins
ears = /obj/item/device/radio/headset/headset_sci
uniform = /obj/item/clothing/under/rank/scientist
shoes = /obj/item/clothing/shoes/sneakers/white
suit = /obj/item/clothing/suit/toggle/labcoat/science
backpack = /obj/item/weapon/storage/backpack/science
satchel = /obj/item/weapon/storage/backpack/satchel_tox
/*
Roboticist
*/
/datum/job/roboticist
title = "Roboticist"
flag = ROBOTICIST
department_head = list("Research Director")
department_flag = MEDSCI
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "research director"
selection_color = "#ffeeff"
outfit = /datum/outfit/job/roboticist
access = list(access_robotics, access_tox, access_tox_storage, access_tech_storage, access_morgue, access_research, access_mineral_storeroom, access_xenobiology, access_genetics)
minimal_access = list(access_robotics, access_tech_storage, access_morgue, access_research, access_mineral_storeroom)
/datum/outfit/job/roboticist
name = "Roboticist"
belt = /obj/item/weapon/storage/belt/utility/full
l_pocket = /obj/item/device/pda/roboticist
ears = /obj/item/device/radio/headset/headset_sci
uniform = /obj/item/clothing/under/rank/roboticist
suit = /obj/item/clothing/suit/toggle/labcoat
backpack = /obj/item/weapon/storage/backpack/science
satchel = /obj/item/weapon/storage/backpack/satchel_tox
pda_slot = slot_l_store
+325
View File
@@ -0,0 +1,325 @@
//Warden and regular officers add this result to their get_access()
/datum/job/proc/check_config_for_sec_maint()
if(config.jobs_have_maint_access & SECURITY_HAS_MAINT_ACCESS)
return list(access_maint_tunnels)
return list()
/*
Head of Security
*/
/datum/job/hos
title = "Head of Security"
flag = HOS
department_head = list("Captain")
department_flag = ENGSEC
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the captain"
selection_color = "#ffdddd"
req_admin_notify = 1
minimal_player_age = 14
outfit = /datum/outfit/job/hos
access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_weapons,
access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers,
access_research, access_engine, access_mining, access_medical, access_construction, access_mailsorting,
access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_maint_tunnels)
minimal_access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_weapons,
access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers,
access_research, access_engine, access_mining, access_medical, access_construction, access_mailsorting,
access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_maint_tunnels)
/datum/outfit/job/hos
name = "Head of Security"
id = /obj/item/weapon/card/id/silver
belt = /obj/item/device/pda/heads/hos
ears = /obj/item/device/radio/headset/heads/hos/alt
uniform = /obj/item/clothing/under/rank/head_of_security
shoes = /obj/item/clothing/shoes/jackboots
suit = /obj/item/clothing/suit/armor/hos/trenchcoat
gloves = /obj/item/clothing/gloves/color/black/hos
head = /obj/item/clothing/head/HoS/beret
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
suit_store = /obj/item/weapon/gun/energy/gun
r_pocket = /obj/item/device/assembly/flash/handheld
l_pocket = /obj/item/weapon/restraints/handcuffs
backpack_contents = list(/obj/item/weapon/melee/baton/loaded=1)
backpack = /obj/item/weapon/storage/backpack/security
satchel = /obj/item/weapon/storage/backpack/satchel_sec
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/sec
box = /obj/item/weapon/storage/box/security
/datum/outfit/job/hos/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(visualsOnly)
return
var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(H)
L.imp_in = H
L.implanted = 1
H.sec_hud_set_implants()
announce_head(H, list("Security")) //tell underlings (security radio) they have a head
/*
Warden
*/
/datum/job/warden
title = "Warden"
flag = WARDEN
department_head = list("Head of Security")
department_flag = ENGSEC
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the head of security"
selection_color = "#ffeeee"
minimal_player_age = 7
outfit = /datum/outfit/job/warden
access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers)
minimal_access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_weapons) //See /datum/job/warden/get_access()
/datum/job/warden/get_access()
var/list/L = list()
L = ..() | check_config_for_sec_maint()
return L
/datum/outfit/job/warden
name = "Warden"
belt = /obj/item/device/pda/warden
ears = /obj/item/device/radio/headset/headset_sec/alt
uniform = /obj/item/clothing/under/rank/warden
shoes = /obj/item/clothing/shoes/jackboots
suit = /obj/item/clothing/suit/armor/vest/warden/alt
gloves = /obj/item/clothing/gloves/color/black
head = /obj/item/clothing/head/warden
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
r_pocket = /obj/item/device/assembly/flash/handheld
l_pocket = /obj/item/weapon/restraints/handcuffs
suit_store = /obj/item/weapon/gun/energy/gun/advtaser
backpack_contents = list(/obj/item/weapon/melee/baton/loaded=1)
backpack = /obj/item/weapon/storage/backpack/security
satchel = /obj/item/weapon/storage/backpack/satchel_sec
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/sec
box = /obj/item/weapon/storage/box/security
/datum/outfit/job/warden/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(visualsOnly)
return
var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(H)
L.imp_in = H
L.implanted = 1
H.sec_hud_set_implants()
/*
Detective
*/
/datum/job/detective
title = "Detective"
flag = DETECTIVE
department_head = list("Head of Security")
department_flag = ENGSEC
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the head of security"
selection_color = "#ffeeee"
minimal_player_age = 7
outfit = /datum/outfit/job/detective
access = list(access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_court, access_brig, access_weapons)
minimal_access = list(access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_court, access_brig, access_weapons)
/datum/outfit/job/detective
name = "Detective"
belt = /obj/item/device/pda/detective
ears = /obj/item/device/radio/headset/headset_sec/alt
uniform = /obj/item/clothing/under/rank/det
shoes = /obj/item/clothing/shoes/sneakers/brown
suit = /obj/item/clothing/suit/det_suit
gloves = /obj/item/clothing/gloves/color/black
head = /obj/item/clothing/head/det_hat
l_pocket = /obj/item/toy/crayon/white
r_pocket = /obj/item/weapon/lighter
backpack_contents = list(/obj/item/weapon/storage/box/evidence=1,\
/obj/item/device/detective_scanner=1,\
/obj/item/weapon/melee/classic_baton=1,\
/obj/item/weapon/reagent_containers/food/drinks/flask/det)
mask = /obj/item/clothing/mask/cigarette
/datum/outfit/job/detective/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
var/obj/item/clothing/mask/cigarette/cig = H.wear_mask
cig.light("")
if(visualsOnly)
return
var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(H)
L.imp_in = H
L.implanted = 1
H.sec_hud_set_implants()
/*
Security Officer
*/
/datum/job/officer
title = "Security Officer"
flag = OFFICER
department_head = list("Head of Security")
department_flag = ENGSEC
faction = "Station"
total_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions()
spawn_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions()
supervisors = "the head of security, and the head of your assigned department (if applicable)"
selection_color = "#ffeeee"
minimal_player_age = 7
outfit = /datum/outfit/job/security
access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers)
minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_weapons) //But see /datum/job/warden/get_access()
/datum/job/officer/get_access()
var/list/L = list()
L |= ..() | check_config_for_sec_maint()
return L
var/list/sec_departments = list("engineering", "supply", "medical", "science")
/datum/outfit/job/security
name = "Security Officer"
belt = /obj/item/device/pda/security
ears = /obj/item/device/radio/headset/headset_sec/alt
uniform = /obj/item/clothing/under/rank/security
gloves = /obj/item/clothing/gloves/color/black
head = /obj/item/clothing/head/helmet/sec
suit = /obj/item/clothing/suit/armor/vest/alt
shoes = /obj/item/clothing/shoes/jackboots
l_pocket = /obj/item/weapon/restraints/handcuffs
r_pocket = /obj/item/device/assembly/flash/handheld
suit_store = /obj/item/weapon/gun/energy/gun/advtaser
backpack_contents = list(/obj/item/weapon/melee/baton/loaded=1)
backpack = /obj/item/weapon/storage/backpack/security
satchel = /obj/item/weapon/storage/backpack/satchel_sec
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/sec
box = /obj/item/weapon/storage/box/security
var/department = null
var/tie = null
var/list/dep_access = null
var/destination = null
var/spawn_point = null
/datum/outfit/job/security/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(sec_departments.len)
department = pick(sec_departments)
if(!visualsOnly)
sec_departments -= department
switch(department)
if("supply")
ears = /obj/item/device/radio/headset/headset_sec/alt/department/supply
dep_access = list(access_mailsorting, access_mining, access_mining_station)
destination = /area/security/checkpoint/supply
spawn_point = locate(/obj/effect/landmark/start/depsec/supply) in department_security_spawns
tie = /obj/item/clothing/tie/armband/cargo
if("engineering")
ears = /obj/item/device/radio/headset/headset_sec/alt/department/engi
dep_access = list(access_construction, access_engine)
destination = /area/security/checkpoint/engineering
spawn_point = locate(/obj/effect/landmark/start/depsec/engineering) in department_security_spawns
tie = /obj/item/clothing/tie/armband/engine
if("medical")
ears = /obj/item/device/radio/headset/headset_sec/alt/department/med
dep_access = list(access_medical)
destination = /area/security/checkpoint/medical
spawn_point = locate(/obj/effect/landmark/start/depsec/medical) in department_security_spawns
tie = /obj/item/clothing/tie/armband/medblue
if("science")
ears = /obj/item/device/radio/headset/headset_sec/alt/department/sci
dep_access = list(access_research)
destination = /area/security/checkpoint/science
spawn_point = locate(/obj/effect/landmark/start/depsec/science) in department_security_spawns
tie = /obj/item/clothing/tie/armband/science
/datum/outfit/job/security/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
var/obj/item/clothing/under/U = H.w_uniform
if(tie)
U.attachTie(new tie)
if(visualsOnly)
return
var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(H)
L.imp_in = H
L.implanted = 1
H.sec_hud_set_implants()
var/obj/item/weapon/card/id/W = H.wear_id
W.access |= dep_access
var/teleport = 0
if(!config.sec_start_brig)
if(destination || spawn_point)
teleport = 1
if(teleport)
var/turf/T
if(spawn_point)
T = get_turf(spawn_point)
H.Move(T)
else
var/safety = 0
while(safety < 25)
T = safepick(get_area_turfs(destination))
if(T && !H.Move(T))
safety += 1
continue
else
break
if(department)
H << "<b>You have been assigned to [department]!</b>"
else
H << "<b>You have not been assigned to any department. Patrol the halls and help where needed.</b>"
/obj/item/device/radio/headset/headset_sec/department/New()
wires = new(src)
secure_radio_connections = new
initialize()
recalculateChannels()
/obj/item/device/radio/headset/headset_sec/alt/department/engi
keyslot = new /obj/item/device/encryptionkey/headset_sec
keyslot2 = new /obj/item/device/encryptionkey/headset_eng
/obj/item/device/radio/headset/headset_sec/alt/department/supply
keyslot = new /obj/item/device/encryptionkey/headset_sec
keyslot2 = new /obj/item/device/encryptionkey/headset_cargo
/obj/item/device/radio/headset/headset_sec/alt/department/med
keyslot = new /obj/item/device/encryptionkey/headset_sec
keyslot2 = new /obj/item/device/encryptionkey/headset_med
/obj/item/device/radio/headset/headset_sec/alt/department/sci
keyslot = new /obj/item/device/encryptionkey/headset_sec
keyslot2 = new /obj/item/device/encryptionkey/headset_sci
+42
View File
@@ -0,0 +1,42 @@
/*
AI
*/
/datum/job/ai
title = "AI"
flag = AI
department_flag = ENGSEC
faction = "Station"
total_positions = 0
spawn_positions = 1
selection_color = "#ccffcc"
supervisors = "your laws"
req_admin_notify = 1
minimal_player_age = 30
/datum/job/ai/equip(mob/living/carbon/human/H)
if(!H)
return 0
/datum/job/ai/config_check()
if(config && config.allow_ai)
return 1
return 0
/*
Cyborg
*/
/datum/job/cyborg
title = "Cyborg"
flag = CYBORG
department_flag = ENGSEC
faction = "Station"
total_positions = 0
spawn_positions = 1
supervisors = "your laws and the AI" //Nodrak
selection_color = "#ddffdd"
minimal_player_age = 21
/datum/job/cyborg/equip(mob/living/carbon/human/H)
if(!H)
return 0
return H.Robotize()
+139
View File
@@ -0,0 +1,139 @@
var/const/ENGSEC =(1<<0)
var/const/CAPTAIN =(1<<0)
var/const/HOS =(1<<1)
var/const/WARDEN =(1<<2)
var/const/DETECTIVE =(1<<3)
var/const/OFFICER =(1<<4)
var/const/CHIEF =(1<<5)
var/const/ENGINEER =(1<<6)
var/const/ATMOSTECH =(1<<7)
var/const/ROBOTICIST =(1<<8)
var/const/AI =(1<<9)
var/const/CYBORG =(1<<10)
var/const/MEDSCI =(1<<1)
var/const/RD =(1<<0)
var/const/SCIENTIST =(1<<1)
var/const/CHEMIST =(1<<2)
var/const/CMO =(1<<3)
var/const/DOCTOR =(1<<4)
var/const/GENETICIST =(1<<5)
var/const/VIROLOGIST =(1<<6)
var/const/CIVILIAN =(1<<2)
var/const/HOP =(1<<0)
var/const/BARTENDER =(1<<1)
var/const/BOTANIST =(1<<2)
var/const/COOK =(1<<3)
var/const/JANITOR =(1<<4)
var/const/LIBRARIAN =(1<<5)
var/const/QUARTERMASTER =(1<<6)
var/const/CARGOTECH =(1<<7)
var/const/MINER =(1<<8)
var/const/LAWYER =(1<<9)
var/const/CHAPLAIN =(1<<10)
var/const/CLOWN =(1<<11)
var/const/MIME =(1<<12)
var/const/ASSISTANT =(1<<13)
var/list/assistant_occupations = list(
"Assistant",
"Atmospheric Technician",
"Cargo Technician",
"Chaplain",
"Lawyer",
"Librarian"
)
var/list/command_positions = list(
"Captain",
"Head of Personnel",
"Head of Security",
"Chief Engineer",
"Research Director",
"Chief Medical Officer"
)
var/list/engineering_positions = list(
"Chief Engineer",
"Station Engineer",
"Atmospheric Technician",
)
var/list/medical_positions = list(
"Chief Medical Officer",
"Medical Doctor",
"Geneticist",
"Virologist",
"Chemist"
)
var/list/science_positions = list(
"Research Director",
"Scientist",
"Roboticist"
)
var/list/supply_positions = list(
"Head of Personnel",
"Quartermaster",
"Cargo Technician",
"Shaft Miner",
)
var/list/civilian_positions = list(
"Bartender",
"Botanist",
"Cook",
"Janitor",
"Librarian",
"Lawyer",
"Chaplain",
"Clown",
"Mime",
"Assistant"
)
var/list/security_positions = list(
"Head of Security",
"Warden",
"Detective",
"Security Officer"
)
var/list/nonhuman_positions = list(
"AI",
"Cyborg",
"pAI"
)
/proc/guest_jobbans(job)
return ((job in command_positions) || (job in nonhuman_positions) || (job in security_positions))
//this is necessary because antags happen before job datums are handed out, but NOT before they come into existence
//so I can't simply use job datum.department_head straight from the mind datum, laaaaame.
/proc/get_department_heads(var/job_title)
if(!job_title)
return list()
for(var/datum/job/J in SSjob.occupations)
if(J.title == job_title)
return J.department_head //this is a list
+15
View File
@@ -0,0 +1,15 @@
#define WHITELISTFILE "data/whitelist.txt"
var/list/whitelist
/proc/load_whitelist()
whitelist = file2list(WHITELISTFILE)
if(!whitelist.len)
whitelist = null
/proc/check_whitelist(mob/M /*, var/rank*/)
if(!whitelist)
return 0
return ("[M.ckey]" in whitelist)
#undef WHITELISTFILE