anchor.diff:  	update_icon()
   	return
   
  -/datum/organ/external/proc/fracture()
  -	if(status & ORGAN_BROKEN)
  -		return
  -	owner.visible_message("\red You hear a loud cracking sound coming from \the [owner].","\red <b>Something feels like it shattered in your [display_name]!</b>","You hear a sickening crack.")
  -	owner.emote("scream")
  -	status |= ORGAN_BROKEN
  -	broken_description = pick("broken","fracture","hairline fracture")
  -	perma_injury = brute_dam
  +//Updating wounds. Handles wound natural healing, internal bleedings and infections
  +/datum/organ/external/proc/update_wounds()
  +	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)
  +			wounds -= W
  +			// let the GC handle the deletion of the wound
  +
  +		// Internal wounds get worse over time. Low temperatures (cryo) stop them.
  +		if(W.internal && !W.is_treated() && owner.bodytemperature >= 170)
  +			W.open_wound(0.1 * wound_update_accuracy)
  +			owner.vessel.remove_reagent("blood",0.07 * W.damage * wound_update_accuracy)
  +			if(prob(1 * wound_update_accuracy))
  +				owner.custom_pain("You feel a stabbing pain in your [display_name]!",1)
  +
  +		if(W.bandaged || W.salved)
  +			// slow healing
  +			var/amount = 0.2
  +			if(W.is_treated())
  +				amount += 10
  +			// amount of healing is spread over all the wounds
  +			W.heal_damage((wound_update_accuracy * amount * W.amount * config.organ_regeneration_multiplier) / (20*owner.number_wounds+1))
  +
  +		if(W.germ_level > 100 && prob(10))
  +			owner.adjustToxLoss(1 * wound_update_accuracy)
  +		if(W.germ_level > 1000)
  +			owner.adjustToxLoss(1 * wound_update_accuracy)
  +
  +		// Salving also helps against infection
  +		if(W.germ_level > 0 && W.salved && prob(2))
  +			W.germ_level = 0
  +
  +	// sync the organ's damage with its wounds
  +	src.update_damages()
  +
  +//Updates brute_damn and burn_damn from wound damages. Updates BLEEDING status.
  +/datum/organ/external/proc/update_damages()
  +	number_wounds = 0
  +	brute_dam = 0
  +	burn_dam = 0
  +	status &= ~ORGAN_BLEEDING
  +	for(var/datum/wound/W in wounds)
  +		if(W.damage_type == CUT || W.damage_type == BRUISE)
  +			brute_dam += W.damage
  +		else if(W.damage_type == BURN)
  +			burn_dam += W.damage
  +
  +		if(!(status & ORGAN_ROBOT) && W.bleeding())
  +			status |= ORGAN_BLEEDING
  +
  +		number_wounds += W.amount
  +
  +
  +// new damage icon system
  +// adjusted to set damage_state to brute/burn code only (without r_name0 as before)
  +/datum/organ/external/proc/update_icon()
  +	var/n_is = damage_state_text()
  +	if (n_is != damage_state)
  +		damage_state = n_is
  +		owner.update_body(1)
  +		return 1
  +	return 0
   
   // new damage icon system
   // returns just the brute/burn damage code
  
positive.code: 				owner.visible_message("\red [owner.name]'s [display_name] flies off in an arc.",\
  				"<span class='moderate'><b>Your [display_name] goes flying off!</b></span>",\
  				"You hear a terrible sound of ripping tendons and flesh.")
  			var/lol = pick(cardinal)
  			step(organ,lol)
  			// force the icon to rebuild
  			owner.regenerate_icons()
  
  /datum/organ/external/proc/createwound(var/type = CUT, var/damage)
  	if(damage == 0) return
  
  	// first check whether we can widen an existing wound
  	if(wounds.len > 0 && prob(max(50+owner.number_wounds*10,100)))
  		if((type == CUT || type == BRUISE) && damage >= 5)
  			var/datum/wound/W = pick(wounds)
  			if(W.amount == 1 && W.started_healing())
  				W.open_wound(damage)
  				if(prob(25))
  					owner.visible_message("\red The wound on [owner.name]'s [display_name] widens with a nasty ripping voice.",\
  					"\red The wound on your [display_name] widens with a nasty ripping voice.",\
  					"You hear a nasty ripping noise, as if flesh is being torn apart.")
  				return
  
  	// the wound we will create
  	var/datum/wound/W
  	var/wound_type
  	var/size = min( max( 1, damage/10 ) , 6)
  
  	switch(type)
  		if(CUT)
  			var/list/size_names = typesof(/datum/wound/cut/) - /datum/wound/cut/
  			wound_type = size_names[size]
  
  		if(BRUISE)
  			var/list/size_names = typesof(/datum/wound/bruise/) - /datum/wound/bruise/
  			wound_type = size_names[size]
  
  		if(BURN)
  			var/list/size_names = typesof(/datum/wound/burn/) - /datum/wound/burn/
  			wound_type = size_names[size]
  
  	W = new wound_type(damage)
  
  	// Possibly trigger an internal wound, too.
  	var/local_damage = brute_dam + burn_dam + damage
  	if(damage > 10 && type != BURN && local_damage > 20 && prob(damage) && !(status & ORGAN_ROBOT))
  		var/datum/wound/internal_bleeding/I = new (15)
  		wounds += I
  		owner.custom_pain("You feel something rip in your [display_name]!", 1)
  
  	// check whether we can add the wound to an existing wound
  	for(var/datum/wound/other in wounds)
  		if(other.desc == W.desc)
  			// okay, add it!
  			other.damage += W.damage
  			other.amount += 1
  			W = null // to signify that the wound was added
  			break
  
  	// if we couldn't add the wound to another wound, ignore
  	if(W)
  		wounds += W
  
  /datum/organ/external/proc/emp_act(severity)
  	if(!(status & ORGAN_ROBOT))
  		return
  	var/probability = 30
  	var/damage = 15
  	if(severity == 2)
  		probability = 1
  		damage = 3
  	if(prob(probability))
  		droplimb(1)
  	else
  		take_damage(damage, 0, 1, used_weapon = "EMP")
  
  /datum/organ/external/proc/robotize()
  	src.status &= ~ORGAN_BROKEN
  
negative.code: 		tbrute = 3
  	return "[tbrute][tburn]"
  
  /****************************************************
  			   DISMEMBERMENT
  ****************************************************/
  
  //Recursive setting of all child organs to amputated
  /datum/organ/external/proc/setAmputatedTree()
  	for(var/datum/organ/external/O in children)
  		O.amputated=amputated
  		O.setAmputatedTree()
  
  //Handles dismemberment
  /datum/organ/external/proc/droplimb(var/override = 0,var/no_explode = 0)
  	if(destspawn) return
  	if(override)
  