Merge pull request #158 from Be1aya/refactor/rookieroles

Intern job code refactor
This commit is contained in:
evilew
2025-05-23 21:25:29 +02:00
committed by GitHub
5 changed files with 4 additions and 4 deletions
@@ -1,79 +0,0 @@
/datum/job/junior_engineer
title = "Engineering Intern"
flag = JR_ENGINEER
department_head = list("Chief Engineer")
department_flag = ENGSEC
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the chief engineer, and any other more experienced engineers"
selection_color = "#ff9b3d"
exp_requirements = 60
exp_type = EXP_TYPE_CREW
outfit = /datum/outfit/job/engineer/junior
plasma_outfit = /datum/outfit/plasmaman/engineering
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
paycheck = PAYCHECK_EASY
paycheck_department = ACCOUNT_ENG
bounty_types = CIV_JOB_ENG
departments = DEPARTMENT_BITFLAG_ENGINEERING
starting_modifiers = list(/datum/skill_modifier/job/level/wiring, /datum/skill_modifier/job/affinity/wiring)
display_order = JOB_DISPLAY_ORDER_STATION_ENGINEER
threat = 1
family_heirlooms = list(
/obj/item/clothing/head/hardhat,
/obj/item/screwdriver/brass/family,
/obj/item/wrench/brass/family,
/obj/item/weldingtool/mini, // No brass family variant
/obj/item/crowbar/brass/family,
/obj/item/wirecutters/brass/family
)
mail_goodies = list(
/obj/item/storage/box/lights/mixed = 20,
/obj/item/lightreplacer = 10,
/obj/item/holosign_creator/engineering = 8,
/obj/item/clothing/head/hardhat/red/upgraded = 1
)
/datum/outfit/job/engineer/junior
name = "Engineering Intern"
jobtype = /datum/job/junior_engineer
belt = /obj/item/storage/belt/utility/full/engi
l_pocket = /obj/item/pda/engineering
ears = /obj/item/radio/headset/headset_eng
uniform = /obj/item/clothing/under/rank/engineering/engineer
shoes = /obj/item/clothing/shoes/workboots
head = /obj/item/clothing/head/hardhat
r_pocket = /obj/item/t_scanner
backpack = /obj/item/storage/backpack/industrial
satchel = /obj/item/storage/backpack/satchel/eng
duffelbag = /obj/item/storage/backpack/duffelbag/engineering
box = /obj/item/storage/box/survival/engineer
pda_slot = ITEM_SLOT_LPOCKET
backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1)
/datum/outfit/job/engineer/gloved
name = "Station Engineer (Gloves)"
gloves = /obj/item/clothing/gloves/color/yellow
/datum/outfit/job/engineer/gloved/rig
name = "Station Engineer (Hardsuit)"
mask = /obj/item/clothing/mask/breath
suit = /obj/item/clothing/suit/space/hardsuit/engine
suit_store = /obj/item/tank/internals/oxygen
head = null
internals_slot = ITEM_SLOT_SUITSTORE
@@ -1,52 +0,0 @@
/datum/job/junior_doctor
title = "Medical Resident"
flag = JR_DOCTOR
department_head = list("Chief Medical Officer")
department_flag = MEDSCI
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the chief medical officer, and any other senior medical staff"
selection_color = "#74b5e0"
outfit = /datum/outfit/job/doctor/junior
departments = DEPARTMENT_BITFLAG_MEDICAL
plasma_outfit = /datum/outfit/plasmaman/medical
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM)
paycheck = PAYCHECK_EASY
paycheck_department = ACCOUNT_MED
bounty_types = CIV_JOB_MED
display_order = JOB_DISPLAY_ORDER_MEDICAL_DOCTOR
threat = 0.5
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
family_heirlooms = list(
/obj/item/storage/firstaid/ancient/heirloom
)
mail_goodies = list(
/obj/effect/spawner/lootdrop/organ_spawner = 5,
// /obj/effect/spawner/lootdrop/memeorgans = 1
)
/datum/outfit/job/doctor/junior
name = "Medical Resident"
jobtype = /datum/job/junior_doctor
belt = /obj/item/pda/medical
ears = /obj/item/radio/headset/headset_med
uniform = /obj/item/clothing/under/rank/medical/doctor
shoes = /obj/item/clothing/shoes/sneakers/white
suit = /obj/item/clothing/suit/toggle/labcoat
l_hand = /obj/item/storage/firstaid/regular
suit_store = /obj/item/flashlight/pen
backpack = /obj/item/storage/backpack/medic
satchel = /obj/item/storage/backpack/satchel/med
duffelbag = /obj/item/storage/backpack/duffelbag/med
chameleon_extras = /obj/item/gun/syringe
@@ -1,51 +0,0 @@
/datum/job/junior_scientist
title = "Research Student"
flag = SCIENTIST
department_head = list("Research Director")
department_flag = MEDSCI
faction = "Station"
total_positions = 2
spawn_positions = 1
supervisors = "the research director, and any other senior science staff"
selection_color = "#9574cd"
exp_requirements = 60
exp_type = EXP_TYPE_CREW
outfit = /datum/outfit/job/scientist/junior
plasma_outfit = /datum/outfit/plasmaman/science
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)
paycheck = PAYCHECK_EASY
paycheck_department = ACCOUNT_SCI
bounty_types = CIV_JOB_SCI
departments = DEPARTMENT_BITFLAG_SCIENCE
starting_modifiers = list(/datum/skill_modifier/job/level/wiring/basic)
display_order = JOB_DISPLAY_ORDER_SCIENTIST
threat = 1.2
family_heirlooms = list(
/obj/item/toy/plush/slimeplushie
)
mail_goodies = list(
// /obj/item/raw_anomaly_core/random = 10, no free cores for probies
// /obj/item/disk/tech_disk/spaceloot = 2,
/obj/item/camera_bug = 1
)
/datum/outfit/job/scientist/junior
name = "Research Student"
jobtype = /datum/job/junior_scientist
belt = /obj/item/pda/toxins
ears = /obj/item/radio/headset/headset_sci
uniform = /obj/item/clothing/under/rank/rnd/scientist
shoes = /obj/item/clothing/shoes/sneakers/white
suit = /obj/item/clothing/suit/toggle/labcoat/science
backpack = /obj/item/storage/backpack/science
satchel = /obj/item/storage/backpack/satchel/tox
@@ -1,178 +0,0 @@
/datum/job/junior_officer
title = "Security Cadet"
flag = JR_OFFICER
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
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), and any other senior officer"
selection_color = "#c02f2f"
minimal_player_age = 3
exp_requirements = 300
exp_type = EXP_TYPE_CREW
considered_combat_role = TRUE
outfit = /datum/outfit/job/security/junior
plasma_outfit = /datum/outfit/plasmaman/security
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_MINERAL_STOREROOM) // See /datum/job/officer/get_access()
paycheck = PAYCHECK_MEDIUM
paycheck_department = ACCOUNT_SEC
bounty_types = CIV_JOB_SEC
departments = DEPARTMENT_BITFLAG_SECURITY
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
display_order = JOB_DISPLAY_ORDER_SECURITY_OFFICER
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia)
threat = 2
family_heirlooms = list(
/obj/item/book/manual/gato_spacelaw
)
mail_goodies = list(
/obj/item/reagent_containers/food/snacks/donut/caramel = 10,
/obj/item/reagent_containers/food/snacks/donut/matcha = 10,
/obj/item/reagent_containers/food/snacks/donut/blumpkin = 5,
// /obj/item/clothing/mask/whistle = 5,
// /obj/item/melee/baton/boomerang/loaded = 1
)
/datum/job/junior_officer/get_access()
var/list/L = list()
L |= ..() | check_config_for_sec_maint()
return L
/datum/job/junior_officer/after_spawn(mob/living/spawned, client/player_client, latejoin = FALSE)
. = ..()
if(!ishuman(spawned))
return
var/mob/living/carbon/human/H = spawned
// Assign department security
var/department
if(player_client?.prefs)
department = player_client.prefs.prefered_security_department
if(!LAZYLEN(GLOB.available_depts) || department == "None")
return
else if(department in GLOB.available_depts)
LAZYREMOVE(GLOB.available_depts, department)
else
department = pick_n_take(GLOB.available_depts)
var/ears = null
var/accessory = null
var/list/dep_access = null
var/destination = null
var/spawn_point = null
switch(department)
if(SEC_DEPT_SUPPLY)
ears = /obj/item/radio/headset/headset_sec/alt/department/supply
dep_access = list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_CARGO)
destination = /area/security/checkpoint/supply
spawn_point = locate(/obj/effect/landmark/start/depsec/supply) in GLOB.department_security_spawns
accessory = /obj/item/clothing/accessory/armband/cargo
if(SEC_DEPT_ENGINEERING)
ears = /obj/item/radio/headset/headset_sec/alt/department/engi
dep_access = list(ACCESS_CONSTRUCTION, ACCESS_ENGINE, ACCESS_ATMOSPHERICS)
destination = /area/security/checkpoint/engineering
spawn_point = locate(/obj/effect/landmark/start/depsec/engineering) in GLOB.department_security_spawns
accessory = /obj/item/clothing/accessory/armband/engine
if(SEC_DEPT_MEDICAL)
ears = /obj/item/radio/headset/headset_sec/alt/department/med
dep_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING)
destination = /area/security/checkpoint/medical
spawn_point = locate(/obj/effect/landmark/start/depsec/medical) in GLOB.department_security_spawns
accessory = /obj/item/clothing/accessory/armband/medblue
if(SEC_DEPT_SCIENCE)
ears = /obj/item/radio/headset/headset_sec/alt/department/sci
dep_access = list(ACCESS_RESEARCH, ACCESS_TOX)
destination = /area/security/checkpoint/science
spawn_point = locate(/obj/effect/landmark/start/depsec/science) in GLOB.department_security_spawns
accessory = /obj/item/clothing/accessory/armband/science
if(accessory)
var/obj/item/clothing/under/U = H.w_uniform
U.attach_accessory(new accessory)
if(ears)
if(H.ears)
qdel(H.ears)
H.equip_to_slot_or_del(new ears(H),ITEM_SLOT_EARS)
var/obj/item/card/id/W = H.wear_id
W.access |= dep_access
var/teleport = 0
if(!CONFIG_GET(flag/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)
to_chat(H, "<b>You have been assigned to [department]!</b>")
else
to_chat(H, "<b>You have not been assigned to any department. Patrol the halls and help where needed.</b>")
/datum/outfit/job/security/junior
name = "Security Cadet"
jobtype = /datum/job/junior_officer
belt = /obj/item/pda/security
ears = /obj/item/radio/headset/headset_sec/alt
uniform = /obj/item/clothing/under/rank/security/officer
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/sec
l_pocket = /obj/item/restraints/handcuffs
r_pocket = /obj/item/assembly/flash/handheld
suit_store = /obj/item/gun/energy/e_gun/advtaser
backpack_contents = list(/obj/item/melee/baton/loaded=1)
backpack = /obj/item/storage/backpack/security
satchel = /obj/item/storage/backpack/satchel/sec
duffelbag = /obj/item/storage/backpack/duffelbag/sec
box = /obj/item/storage/box/survival/security
implants = list(/obj/item/implant/mindshield)
chameleon_extras = list(/obj/item/gun/energy/disabler, /obj/item/clothing/glasses/hud/security/sunglasses, /obj/item/clothing/head/helmet)
//The helmet is necessary because /obj/item/clothing/head/helmet/sec is overwritten in the chameleon list by the standard helmet, which has the same name and icon state
/obj/item/radio/headset/headset_sec/alt/department/Initialize(mapload)
. = ..()
wires = new/datum/wires/radio(src)
secure_radio_connections = new
recalculateChannels()
/obj/item/radio/headset/headset_sec/alt/department/engi
keyslot = new /obj/item/encryptionkey/headset_sec
keyslot2 = new /obj/item/encryptionkey/headset_eng
/obj/item/radio/headset/headset_sec/alt/department/supply
keyslot = new /obj/item/encryptionkey/headset_sec
keyslot2 = new /obj/item/encryptionkey/headset_cargo
/obj/item/radio/headset/headset_sec/alt/department/med
keyslot = new /obj/item/encryptionkey/headset_sec
keyslot2 = new /obj/item/encryptionkey/headset_med
/obj/item/radio/headset/headset_sec/alt/department/sci
keyslot = new /obj/item/encryptionkey/headset_sec
keyslot2 = new /obj/item/encryptionkey/headset_sci