From 0bf1f7ce146e69750c792bc1d7d708b2bd84cd07 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 15 Mar 2018 20:50:10 -0500 Subject: [PATCH] [MIRROR] Refactors some trauma code, fixes some trauma heals not working (#5955) * Refactors some trauma code, fixes some trauma heals not working (#36093) * Refactors some trauma code, fixes some trauma heals not working * that too * fix indent * antur comments * Refactors some trauma code, fixes some trauma heals not working --- code/datums/brain_damage/brain_trauma.dm | 8 ------- code/datums/brain_damage/phobia.dm | 2 +- code/datums/datumvars.dm | 2 +- code/modules/clothing/head/misc_special.dm | 14 +++++++++++-- code/modules/mob/living/brain/brain_item.dm | 21 ++++++++++++------- code/modules/mob/living/carbon/carbon.dm | 2 +- .../chemistry/reagents/drug_reagents.dm | 10 ++++----- .../chemistry/reagents/medicine_reagents.dm | 2 +- 8 files changed, 34 insertions(+), 27 deletions(-) diff --git a/code/datums/brain_damage/brain_trauma.dm b/code/datums/brain_damage/brain_trauma.dm index 508dccef4a..f6a09601dd 100644 --- a/code/datums/brain_damage/brain_trauma.dm +++ b/code/datums/brain_damage/brain_trauma.dm @@ -12,14 +12,6 @@ var/can_gain = TRUE //can this be gained through random traumas? var/resilience = TRAUMA_RESILIENCE_BASIC //how hard is this to cure? -/datum/brain_trauma/New(obj/item/organ/brain/B, _resilience) - brain = B - owner = B.owner - if(_resilience) - resilience = _resilience - if(owner) - on_gain() - /datum/brain_trauma/Destroy() brain.traumas -= src if(owner) diff --git a/code/datums/brain_damage/phobia.dm b/code/datums/brain_damage/phobia.dm index 7557e8fd9c..24efb013c8 100644 --- a/code/datums/brain_damage/phobia.dm +++ b/code/datums/brain_damage/phobia.dm @@ -14,7 +14,7 @@ var/list/trigger_turfs var/list/trigger_species -/datum/brain_trauma/mild/phobia/New(mob/living/carbon/C, _permanent, specific_type) +/datum/brain_trauma/mild/phobia/New(specific_type) phobia_type = specific_type if(!phobia_type) phobia_type = pick(SStraumas.phobia_types) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 4e9aab7b4c..3158a2660e 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -1026,7 +1026,7 @@ to_chat(usr, "This can only be done to instances of type /mob/living/carbon") return - C.cure_all_traumas(TRUE, TRAUMA_RESILIENCE_ABSOLUTE) + C.cure_all_traumas(TRAUMA_RESILIENCE_ABSOLUTE) href_list["datumrefresh"] = href_list["curetraumas"] diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 2d12b450b7..b58c9fc414 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -236,16 +236,26 @@ item_state = "foilhat" armor = list("melee" = 0, "bullet" = 0, "laser" = -5,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = -5, "fire" = 0, "acid" = 0) equip_delay_other = 140 + var/datum/brain_trauma/mild/phobia/paranoia /obj/item/clothing/head/foilhat/equipped(mob/living/carbon/human/user, slot) + ..() if(slot == slot_head) - user.gain_trauma(/datum/brain_trauma/mild/phobia, FALSE, "conspiracies") + if(paranoia) + QDEL_NULL(paranoia) + paranoia = new() + user.gain_trauma(paranoia, TRAUMA_RESILIENCE_MAGIC, "conspiracies") to_chat(user, "As you don the foiled hat, an entire world of conspiracy theories and seemingly insane ideas suddenly rush into your mind. What you once thought unbelievable suddenly seems.. undeniable. Everything is connected and nothing happens just by accident. You know too much and now they're out to get you. ") +/obj/item/clothing/head/foilhat/dropped(mob/user) + ..() + if(paranoia) + QDEL_NULL(paranoia) + /obj/item/clothing/head/foilhat/attack_hand(mob/user) if(iscarbon(user)) var/mob/living/carbon/C = user if(src == C.head) - to_chat(user, "Why would you want to take this off? Do you want them to get into your mind?!") + to_chat(user, "Why would you want to take this off? Do you want them to get into your mind?!") return ..() diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 2131cbffec..671685a95a 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -222,16 +222,21 @@ /obj/item/organ/brain/proc/gain_trauma(datum/brain_trauma/trauma, resilience, list/arguments) if(!can_gain_trauma(trauma, resilience)) return - var/trauma_type if(ispath(trauma)) - trauma_type = trauma - SSblackbox.record_feedback("tally", "traumas", 1, trauma_type) - traumas += new trauma_type(arglist(list(src, resilience) + arguments)) + trauma = new(arglist(arguments)) else - SSblackbox.record_feedback("tally", "traumas", 1, trauma.type) - traumas += trauma - if(resilience) - trauma.resilience = resilience + if(trauma.brain) //we don't accept used traumas here + WARNING("gain_trauma was given an already active trauma.") + return + + traumas += trauma + trauma.brain = src + if(owner) + trauma.owner = owner + trauma.on_gain() + if(resilience) + trauma.resilience = resilience + SSblackbox.record_feedback("tally", "traumas", 1, trauma.type) //Add a random trauma of a certain subtype /obj/item/organ/brain/proc/gain_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index ac905ff827..33d50bcd6f 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -789,7 +789,7 @@ update_handcuffed() if(reagents) reagents.addiction_list = list() - cure_all_traumas(TRUE, TRAUMA_RESILIENCE_MAGIC) + cure_all_traumas(TRAUMA_RESILIENCE_MAGIC) ..() // heal ears after healing traits, since ears check TRAIT_DEAF trait // when healing. diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index adcf7996d6..22d638ea20 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -264,6 +264,7 @@ overdose_threshold = 20 addiction_threshold = 10 taste_description = "salt" // because they're bathsalts? + var/datum/brain_trauma/special/psychotic_brawling/bath_salts/rage /datum/reagent/drug/bath_salts/on_mob_add(mob/M) ..() @@ -273,17 +274,16 @@ L.add_trait(TRAIT_SLEEPIMMUNE, id) if(iscarbon(L)) var/mob/living/carbon/C = L - C.gain_trauma(/datum/brain_trauma/special/psychotic_brawling/bath_salts, TRAUMA_RESILIENCE_ABSOLUTE) + rage = new() + C.gain_trauma(rage, TRAUMA_RESILIENCE_ABSOLUTE) /datum/reagent/drug/bath_salts/on_mob_delete(mob/M) if(isliving(M)) var/mob/living/L = M L.remove_trait(TRAIT_STUNIMMUNE, id) L.remove_trait(TRAIT_SLEEPIMMUNE, id) - if(iscarbon(L)) - var/mob/living/carbon/C = L - for(var/datum/brain_trauma/special/psychotic_brawling/bath_salts/T in C.get_traumas()) - qdel(T) + if(rage) + QDEL_NULL(rage) ..() /datum/reagent/drug/bath_salts/on_mob_life(mob/living/M) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 2f7f9eaa08..92d73e2ccf 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -59,7 +59,7 @@ M.confused = 0 M.SetSleeping(0, 0) M.jitteriness = 0 - M.cure_all_traumas(TRUE, TRAUMA_RESILIENCE_MAGIC) + M.cure_all_traumas(TRAUMA_RESILIENCE_MAGIC) for(var/thing in M.diseases) var/datum/disease/D = thing if(D.severity == DISEASE_SEVERITY_POSITIVE)