diff --git a/code/datums/diseases/roanoke.dm b/code/datums/diseases/roanoke.dm index 905122a632..809f6ec1f8 100644 --- a/code/datums/diseases/roanoke.dm +++ b/code/datums/diseases/roanoke.dm @@ -82,6 +82,8 @@ var/obj/item/organ/external/E = O.parent_organ var/datum/wound/W = new /datum/wound/internal_bleeding(5) E.wounds += W + E.update_damages() + M.handle_organs(TRUE) //Force an update so we start processing the internal bleeding. if(M.stat == DEAD || M.allow_spontaneous_tf) M.LoadComponent(/datum/component/xenochimera) diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index a75c2c47ae..dd2179d4ad 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -17,11 +17,11 @@ last_dam = damage_this_tick // Takes care of organ related updates, such as broken and missing limbs -/mob/living/carbon/human/proc/handle_organs() +/mob/living/carbon/human/proc/handle_organs(force = FALSE) var/force_process = recheck_bad_external_organs() - if(force_process) + if(force_process || force) bad_external_organs.Cut() for(var/obj/item/organ/external/Ex in organs) bad_external_organs += Ex //VOREStation Edit - Silly and slow to |= this diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 58903bc24b..8e0ca19544 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1072,6 +1072,8 @@ if(prob(selection.w_class * 5) && (affected.robotic < ORGAN_ROBOT)) //I'M SO ANEMIC I COULD JUST -DIE-. var/datum/wound/internal_bleeding/I = new (min(selection.w_class * 5, 15)) affected.wounds += I + affected.update_damages() + H.handle_organs(TRUE) //Force an update so we start processing the internal bleeding. H.custom_pain("Something tears wetly in your [affected] as [selection] is pulled free!", 50) if (ishuman(U)) diff --git a/code/modules/organs/internal/appendix.dm b/code/modules/organs/internal/appendix.dm index 1f53326fb5..d8092dad21 100644 --- a/code/modules/organs/internal/appendix.dm +++ b/code/modules/organs/internal/appendix.dm @@ -41,6 +41,8 @@ var/datum/wound/W = new /datum/wound/internal_bleeding(20) owner.adjustToxLoss(25) groin.wounds += W + groin.update_damages() + owner.handle_organs(TRUE) //Force an update so we start processing the internal bleeding. inflamed = 1 */ /obj/item/organ/internal/appendix/removed() diff --git a/code/modules/organs/internal/spleen.dm b/code/modules/organs/internal/spleen.dm index 08fdbdc967..d9fc3b6b68 100644 --- a/code/modules/organs/internal/spleen.dm +++ b/code/modules/organs/internal/spleen.dm @@ -17,13 +17,15 @@ //High toxins levels are dangerous if(owner.getToxLoss() >= 30 && !owner.reagents.has_reagent(REAGENT_ID_ANTITOXIN)) //Healthy liver suffers on its own - if (src.damage < min_broken_damage) + if(src.damage < min_broken_damage) src.damage += 0.2 * spleen_tick + owner.adjustToxLoss(-0.2) //The spleen takes damage but reduces toxins, up until it's broken. //Damaged one shares the fun else var/obj/item/organ/internal/O = pick(owner.internal_organs) if(O) O.damage += 0.2 * spleen_tick + owner.adjustToxLoss(-0.1) //Only half as effective. else if(!src.is_broken()) // If the spleen isn't severely damaged, it can help fight infections. Key word, can. var/obj/item/organ/external/OEx = pick(owner.organs) @@ -66,10 +68,12 @@ ..() if(owner) owner.add_modifier(/datum/modifier/trait/haemophilia, round(15 MINUTES * spleen_efficiency)) - var/obj/item/organ/external/Target = owner.get_organ(parent_organ) + var/obj/item/organ/external/target = owner.get_organ(parent_organ) var/datum/wound/W = new /datum/wound/internal_bleeding(round(20 * spleen_efficiency)) owner.adjustToxLoss(15 * spleen_efficiency) - Target.wounds += W + target.wounds += W + target.update_damages() + owner.handle_organs(TRUE) //Force an update so we start processing the internal bleeding. /obj/item/organ/internal/spleen/minor name = "vestigial spleen" diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm index 1158409ae3..93e6ae34db 100644 --- a/code/modules/surgery/implant.dm +++ b/code/modules/surgery/implant.dm @@ -176,6 +176,8 @@ to_chat(user, span_danger(" You tear some blood vessels trying to fit such a big object in this cavity.")) var/datum/wound/internal_bleeding/I = new (10) affected.wounds += I + affected.update_damages() + affected.owner.handle_organs(TRUE) //Force an update so we start processing the internal bleeding. affected.owner.custom_pain("You feel something rip in your [affected.name]!", 1) affected.implants += tool tool.loc = affected