mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 05:30:05 +01:00
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.
This commit is contained in:
@@ -1539,6 +1539,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
|
||||
/// Trait that signals to objects on this turf that its open (has UNDERFLOOR_INTERACTIBLE) but still covers them
|
||||
#define TRAIT_UNCOVERED_TURF "uncovered_turf"
|
||||
|
||||
/// A trait that blocks the metabolism of formaldehyde
|
||||
#define TRAIT_BLOCK_FORMALDEHYDE_METABOLISM "block_formaldehyde_metabolism"
|
||||
|
||||
///Attached to objects currently on tables and such, allowing them to walk on other objects without the climbing delay
|
||||
#define TRAIT_ON_CLIMBABLE "on_climbable"
|
||||
|
||||
|
||||
@@ -194,6 +194,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
|
||||
"TRAIT_BIRTHDAY_BOY" = TRAIT_BIRTHDAY_BOY,
|
||||
"TRAIT_BLOB_ALLY" = TRAIT_BLOB_ALLY,
|
||||
"TRAIT_BLOCKING_PROJECTILES" = TRAIT_BLOCKING_PROJECTILES,
|
||||
"TRAIT_BLOCK_FORMALDEHYDE_METABOLISM" = TRAIT_BLOCK_FORMALDEHYDE_METABOLISM,
|
||||
"TRAIT_BLOCK_SHUTTLE_MOVEMENT" = TRAIT_BLOCK_SHUTTLE_MOVEMENT,
|
||||
"TRAIT_BLOODSHOT_EYES" = TRAIT_BLOODSHOT_EYES,
|
||||
"TRAIT_BLOODY_MESS" = TRAIT_BLOODY_MESS,
|
||||
|
||||
@@ -81,6 +81,10 @@
|
||||
soul_eyes = new /datum/bodypart_overlay/simple/soul_pending_eyes()
|
||||
head.add_bodypart_overlay(soul_eyes)
|
||||
|
||||
// So during the potentially short period of time we're revived, we don't metabolize formaldehyde
|
||||
// Really just a QOL for coroners, so we dont suddenly start decaying
|
||||
ADD_TRAIT(aliver, TRAIT_BLOCK_FORMALDEHYDE_METABOLISM, type)
|
||||
|
||||
var/mob/dead/observer/chosen_one = SSpolling.poll_ghosts_for_target(
|
||||
question = "Would you like to play as a recovered crewmember?",
|
||||
role = null,
|
||||
@@ -91,6 +95,9 @@
|
||||
alert_pic = aliver,
|
||||
role_name_text = "recovered crew",
|
||||
)
|
||||
|
||||
REMOVE_TRAIT(aliver, TRAIT_BLOCK_FORMALDEHYDE_METABOLISM, type)
|
||||
|
||||
if(head)
|
||||
head.remove_bodypart_overlay(soul_eyes)
|
||||
|
||||
|
||||
@@ -3,19 +3,23 @@
|
||||
/// 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/job_stuffs
|
||||
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/job_gear, list/datum/callback/on_revive_and_player_occupancy)
|
||||
if(!job_gear)
|
||||
/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 job_stuffs)
|
||||
job_gear += new item ()
|
||||
job_gear += job_stuffs
|
||||
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
|
||||
@@ -25,14 +29,15 @@
|
||||
card.registered_name = working_dead.name
|
||||
card.registered_age = working_dead.age
|
||||
SSid_access.apply_trim_to_card(card, trim)
|
||||
job_gear += card
|
||||
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"
|
||||
job_stuffs = list(/obj/item/clothing/under/rank/engineering/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
|
||||
|
||||
@@ -50,7 +55,8 @@
|
||||
|
||||
/datum/corpse_assignment/medical
|
||||
job_lore = "I was employed as a doctor"
|
||||
job_stuffs = list(/obj/item/clothing/under/rank/medical/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
|
||||
|
||||
@@ -67,7 +73,8 @@
|
||||
|
||||
/datum/corpse_assignment/security
|
||||
job_lore = "I was employed as security"
|
||||
job_stuffs = list(/obj/item/clothing/under/rank/security/officer)
|
||||
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
|
||||
|
||||
@@ -90,7 +97,8 @@
|
||||
|
||||
/datum/corpse_assignment/science
|
||||
job_lore = "I was employed as a scientist"
|
||||
job_stuffs = list(/obj/item/clothing/under/rank/rnd/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
|
||||
|
||||
@@ -107,7 +115,8 @@
|
||||
|
||||
/datum/corpse_assignment/cargo
|
||||
job_lore = "I was employed as a technician"
|
||||
job_stuffs = list(/obj/item/clothing/under/rank/cargo/tech)
|
||||
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
|
||||
|
||||
@@ -124,7 +133,8 @@
|
||||
|
||||
/datum/corpse_assignment/civillian
|
||||
job_lore = "I was employed as a civllian"
|
||||
job_stuffs = list(/obj/item/clothing/under/color/grey)
|
||||
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
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
var/datum/corpse_assignment/assignment = pick_weight(possible_character_assignments)
|
||||
if(ispath(assignment))
|
||||
assignment = new assignment()
|
||||
assignment.apply_assignment(fashion_corpse, protected_objects, on_revive_and_player_occupancy)
|
||||
assignment.apply_assignment(fashion_corpse, protected_objects, recovered_items, on_revive_and_player_occupancy)
|
||||
body_data += assignment.type
|
||||
|
||||
var/datum/corpse_flavor/flavor = pick_weight(possible_flavor_types)
|
||||
|
||||
@@ -8,7 +8,7 @@ GLOBAL_DATUM_INIT(lost_crew_manager, /datum/lost_crew_manager, new)
|
||||
/// How long after successful revival we check to see if theyre still alive, and give rewards
|
||||
var/succes_check_time = 3 MINUTES
|
||||
/// How much the revived crew start with on their cards
|
||||
var/starting_funds = 100
|
||||
var/starting_funds = 200
|
||||
|
||||
/**
|
||||
* Creates a body with random background and injuries
|
||||
|
||||
@@ -713,11 +713,17 @@
|
||||
if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) //it counteracts its own toxin damage.
|
||||
return UPDATE_MOB_HEALTH
|
||||
return
|
||||
else if(SPT_PROB(2.5, seconds_per_tick))
|
||||
else if(SPT_PROB(2.5, seconds_per_tick) && !HAS_TRAIT(affected_mob, TRAIT_BLOCK_FORMALDEHYDE_METABOLISM))
|
||||
holder.add_reagent(/datum/reagent/toxin/histamine, pick(5,15))
|
||||
holder.remove_reagent(/datum/reagent/toxin/formaldehyde, 1.2)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/toxin/formaldehyde/metabolize_reagent(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
|
||||
if(HAS_TRAIT(affected_mob, TRAIT_BLOCK_FORMALDEHYDE_METABOLISM))
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/reagent/toxin/venom
|
||||
name = "Venom"
|
||||
description = "An exotic poison extracted from highly toxic fauna. Causes scaling amounts of toxin damage and bruising depending and dosage. Often decays into Histamine."
|
||||
|
||||
Reference in New Issue
Block a user