Files
Bubberstation/code/modules/lost_crew/character/_assignment.dm
Time-Green fe17cd1b96 Three Recovered Crew QoL's (#91983)
Three quality of life additions for recovered crew:
1. Jumpsuits are spawned in the crate, and no longer in the lockbox
2. Formaldehyde will no longer metabolize during the "soul pending" fase
so you don't have to constantly re-up them with it
3. Gives them 200cr starting money instead of 100. Also get a headset in
their lockbox now

## Why It's Good For The Game
1. This lets the reviver know what job they can expect to have, and make
more informed choices about which organs, implants and surgeries are
most beneficial to them. They can still change their mind, but it's
something I've always missed having and can help to tailor the
experience a bit
2. This is just annoying. Trying to revive them and not realizing the
formaldehyde is gone, and then realizing absolutely everything decayed,
is super fucking ass.
3. They get barely any starting gear, so some more money to help them
buy gear is really needed. The headset is just there to make it easier
to communicate with the department head or the HoP, it just gets you
going faster.
2025-07-15 14:56:34 +00:00

150 lines
5.2 KiB
Plaintext

/// Possible assignments corpses can have, both for flavor and to push them towards contributing to the round
/datum/corpse_assignment
/// Message we send to the player upon revival concerning their job
var/job_lore
/// Gear to give to the crewie in a special locked box
var/list/protected_job_stuffs
/// Gear that arrives with the crewie in the crate
var/list/recovered_job_stuffs
/// Trim on the ID we give to the revived person (no trim = no id)
var/datum/id_trim/trim
/// Job datum to apply to the human
var/datum/job/job_datum
/datum/corpse_assignment/proc/apply_assignment(mob/living/carbon/human/working_dead, list/protected_job_gear, list/recovered_job_gear, list/datum/callback/on_revive_and_player_occupancy)
if(!protected_job_gear && !recovered_job_gear && !trim)
return
for(var/item in protected_job_stuffs)
protected_job_gear += new item ()
for(var/item in recovered_job_stuffs)
recovered_job_gear += new item ()
if(job_datum)
on_revive_and_player_occupancy += CALLBACK(src, PROC_REF(assign_job), working_dead) //this needs to happen once the body has been successfully occupied and revived
if(trim)
var/obj/item/card/id/advanced/card = new()
card.registered_name = working_dead.name
card.registered_age = working_dead.age
SSid_access.apply_trim_to_card(card, trim)
protected_job_gear += card
/datum/corpse_assignment/proc/assign_job(mob/living/carbon/human/working_undead)
working_undead.mind.set_assigned_role_with_greeting(new job_datum (), working_undead.client)
/datum/corpse_assignment/engineer
job_lore = "I was employed as an engineer"
protected_job_stuffs = list(/obj/item/radio/headset/headset_eng)
recovered_job_stuffs = list(/obj/item/clothing/under/rank/engineering/engineer)
trim = /datum/id_trim/job/visiting_engineer
job_datum = /datum/job/recovered_crew/engineer
/datum/id_trim/job/visiting_engineer
assignment = JOB_LOSTCREW_ENGINEER
trim_state = "trim_stationengineer"
department_color = COLOR_ENGINEERING_ORANGE
subdepartment_color = COLOR_ENGINEERING_ORANGE
sechud_icon_state = SECHUD_STATION_ENGINEER
minimal_access = list(
ACCESS_CONSTRUCTION,
ACCESS_EXTERNAL_AIRLOCKS,
ACCESS_MAINT_TUNNELS,
)
/datum/corpse_assignment/medical
job_lore = "I was employed as a doctor"
protected_job_stuffs = list(/obj/item/radio/headset/headset_med)
recovered_job_stuffs = list(/obj/item/clothing/under/rank/medical/doctor)
trim = /datum/id_trim/job/visiting_doctor
job_datum = /datum/job/recovered_crew/doctor
/datum/id_trim/job/visiting_doctor
assignment = JOB_LOSTCREW_MEDICAL
trim_state = "trim_medicaldoctor"
department_color = COLOR_MEDICAL_BLUE
subdepartment_color = COLOR_MEDICAL_BLUE
sechud_icon_state = SECHUD_MEDICAL_DOCTOR
minimal_access = list(
ACCESS_MEDICAL,
)
/datum/corpse_assignment/security
job_lore = "I was employed as security"
protected_job_stuffs = list(/obj/item/radio/headset/headset_sec)
recovered_job_stuffs = list(/obj/item/clothing/under/rank/security/officer)
trim = /datum/id_trim/job/visiting_security
job_datum = /datum/job/recovered_crew/security
/datum/corpse_assignment/security/apply_assignment(mob/living/carbon/human/working_dead, list/job_gear)
. = ..()
var/obj/item/implant/mindshield/shield = new()
shield.implant(working_dead)
/datum/id_trim/job/visiting_security
assignment = JOB_LOSTCREW_SECURITY
trim_state = "trim_securityofficer"
department_color = COLOR_SECURITY_RED
subdepartment_color = COLOR_SECURITY_RED
sechud_icon_state = SECHUD_SECURITY_OFFICER
minimal_access = list(
ACCESS_BRIG_ENTRANCE,
)
/datum/corpse_assignment/science
job_lore = "I was employed as a scientist"
protected_job_stuffs = list(/obj/item/radio/headset/headset_sci)
recovered_job_stuffs = list(/obj/item/clothing/under/rank/rnd/scientist)
trim = /datum/id_trim/job/visiting_scientist
job_datum = /datum/job/recovered_crew/scientist
/datum/id_trim/job/visiting_scientist
assignment = JOB_LOSTCREW_SCIENCE
trim_state = "trim_scientist"
department_color = COLOR_SCIENCE_PINK
subdepartment_color = COLOR_SCIENCE_PINK
sechud_icon_state = SECHUD_SCIENTIST
minimal_access = list(
ACCESS_AUX_BASE,
ACCESS_SCIENCE,
)
/datum/corpse_assignment/cargo
job_lore = "I was employed as a technician"
protected_job_stuffs = list(/obj/item/radio/headset/headset_cargo)
recovered_job_stuffs = list(/obj/item/clothing/under/rank/cargo/tech)
trim = /datum/id_trim/job/visiting_technician
job_datum = /datum/job/recovered_crew/cargo
/datum/id_trim/job/visiting_technician
assignment = JOB_LOSTCREW_CARGO
trim_state = "trim_cargotechnician"
department_color = COLOR_CARGO_BROWN
subdepartment_color = COLOR_CARGO_BROWN
sechud_icon_state = SECHUD_CARGO_TECHNICIAN
minimal_access = list(
ACCESS_CARGO,
ACCESS_MAINT_TUNNELS,
)
/datum/corpse_assignment/civillian
job_lore = "I was employed as a civllian"
protected_job_stuffs = list(/obj/item/radio/headset)
recovered_job_stuffs = list(/obj/item/clothing/under/color/grey)
trim = /datum/id_trim/job/visiting_civillian
job_datum = /datum/job/recovered_crew/civillian
/datum/id_trim/job/visiting_civillian
assignment = JOB_LOSTCREW_CIVILLIAN
trim_state = "trim_assistant"
sechud_icon_state = SECHUD_ASSISTANT
minimal_access = list()
extra_access = list(
ACCESS_MAINT_TUNNELS,
ACCESS_SERVICE,
)