From 6402581595d1655549b001e956a3d1e29e00fe26 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Mon, 4 Nov 2013 05:16:04 +0400 Subject: [PATCH] Itty bitty antilag bits. -If wound disappears, do not process it. -Moved reagents checks so they are only done when wound is internal. They have no effects on non-internal wounds anyway. -Calling update_body only when losing limbs, other times UpdateDamageIcon(] is right proc --- code/modules/organs/organ_external.dm | 31 ++++++++++++++------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index bbf1728084..b97a4b98ac 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -181,7 +181,7 @@ var/result = update_icon() return result - + /* This function completely restores a damaged organ to perfect condition. */ @@ -191,21 +191,21 @@ This function completely restores a damaged organ to perfect condition. perma_injury = 0 brute_dam = 0 burn_dam = 0 - + // handle internal organs for(var/datum/organ/internal/current_organ in internal_organs) current_organ.rejuvenate() - + // remove embedded objects and drop them on the floor for(var/obj/implanted_object in implants) if(!istype(implanted_object,/obj/item/weapon/implant)) // We don't want to remove REAL implants. Just shrapnel etc. implanted_object.loc = owner.loc implants -= implanted_object - + owner.updatehealth() update_icon() - - + + /datum/organ/external/proc/createwound(var/type = CUT, var/damage) if(damage == 0) return @@ -338,8 +338,9 @@ This function completely restores a damaged organ to perfect condition. for(var/datum/wound/W in wounds) // wounds can disappear after 10 minutes at the earliest - if(W.damage == 0 && W.created + 10 * 10 * 60 <= world.time) + if(W.damage <= 0 && W.created + 10 * 10 * 60 <= world.time) wounds -= W + continue // let the GC handle the deletion of the wound // Internal wounds get worse over time. Low temperatures (cryo) stop them. @@ -347,17 +348,14 @@ This function completely restores a damaged organ to perfect condition. if(!owner.reagents.has_reagent("bicaridine")) //bicard stops internal wounds from growing bigger with time, and also stop bleeding W.open_wound(0.1 * wound_update_accuracy) owner.vessel.remove_reagent("blood",0.05 * W.damage * wound_update_accuracy) + owner.vessel.remove_reagent("blood",0.02 * W.damage * wound_update_accuracy)//Bicaridine slows Internal Bleeding if(prob(1 * wound_update_accuracy)) owner.custom_pain("You feel a stabbing pain in your [display_name]!",1) - //overdose of bicaridine begins healing IB - if(owner.reagents.has_reagent("bicaridine") && (owner.reagents.get_reagent_amount("bicaridine") >= 30)) - var/healinternal = 0.2 - if(W.damage <= healinternal) - W.damage = 0 - else - W.damage -= healinternal + //overdose of bicaridine begins healing IB + if(owner.reagents.get_reagent_amount("bicaridine") >= 30) + W.damage = max(0, W.damage - 0.2) // slow healing var/heal_amt = 0 @@ -417,7 +415,10 @@ This function completely restores a damaged organ to perfect condition. var/n_is = damage_state_text() if (n_is != damage_state) damage_state = n_is - owner.update_body(1) + if(status & ORGAN_DESTROYED) + owner.update_body(1) + else + UpdateDamageIcon(1) return 1 return 0