diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index de146fd9d1..ffc145bd72 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -56,9 +56,9 @@ var/mob/living/carbon/C = M if(prob(10)) if(trauma_heal_severe) - C.cure_trauma_type(TRAUMA_RESILIENCE_LOBOTOMY) + C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_LOBOTOMY) else - C.cure_trauma_type(TRAUMA_RESILIENCE_BASIC) + C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 89ff6328c7..184b4ec151 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -179,12 +179,19 @@ ////////////////////////////////////TRAUMAS//////////////////////////////////////// -/obj/item/organ/brain/proc/has_trauma_type(brain_trauma_type, resilience = TRAUMA_RESILIENCE_ABSOLUTE) +/obj/item/organ/brain/proc/has_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE) for(var/X in traumas) var/datum/brain_trauma/BT = X if(istype(BT, brain_trauma_type) && (BT.resilience <= resilience)) return BT +/obj/item/organ/brain/proc/get_traumas_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE) + . = list() + for(var/X in traumas) + var/datum/brain_trauma/BT = X + if(istype(BT, brain_trauma_type) && (BT.resilience <= resilience)) + . += BT + /obj/item/organ/brain/proc/can_gain_trauma(datum/brain_trauma/trauma, resilience) if(!ispath(trauma)) trauma = trauma.type @@ -267,13 +274,12 @@ gain_trauma(trauma_type, resilience) //Cure a random trauma of a certain resilience level -/obj/item/organ/brain/proc/cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) - var/datum/brain_trauma/trauma = has_trauma_type(resilience) - if(trauma) - qdel(trauma) +/obj/item/organ/brain/proc/cure_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_BASIC) + var/list/traumas = get_traumas_type(brain_trauma_type, resilience) + if(LAZYLEN(traumas)) + qdel(pick(traumas)) /obj/item/organ/brain/proc/cure_all_traumas(resilience = TRAUMA_RESILIENCE_BASIC) + var/list/traumas = get_traumas_type(resilience = resilience) for(var/X in traumas) - var/datum/brain_trauma/trauma = X - if(trauma.resilience <= resilience) - qdel(trauma) + qdel(X) diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm index 7472d5f058..1d619364e0 100644 --- a/code/modules/mob/living/carbon/status_procs.dm +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -93,10 +93,10 @@ if(B) . = B.gain_trauma_type(brain_trauma_type, resilience) -/mob/living/carbon/proc/cure_trauma_type(resilience) +/mob/living/carbon/proc/cure_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience) var/obj/item/organ/brain/B = getorganslot(ORGAN_SLOT_BRAIN) if(B) - . = B.cure_trauma_type(resilience) + . = B.cure_trauma_type(brain_trauma_type, resilience) /mob/living/carbon/proc/cure_all_traumas(resilience) var/obj/item/organ/brain/B = getorganslot(ORGAN_SLOT_BRAIN) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 66c341a7a8..f6000873f8 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -833,7 +833,7 @@ if(iscarbon(M)) var/mob/living/carbon/C = M if(prob(10)) - C.cure_trauma_type(TRAUMA_RESILIENCE_BASIC) + C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) ..() /datum/reagent/medicine/mutadone