anchor.diff:  			droplimb()
   		return
   	if(!(status & ORGAN_BROKEN))
  -		perma_dmg = 0
  +		perma_injury = 0
   	if(parent)
   		if(parent.status & ORGAN_DESTROYED)
   			status |= ORGAN_DESTROYED
  
positive.code: 			if(O.parent == src)
  				O.droplimb(1)
  
  		var/obj/organ
  		switch(body_part)
  			if(LOWER_TORSO)
  				owner << "\red You are now sterile."
  
negative.code: 		parent.children.Add(src)
  	return ..()
  
  /datum/organ/external/proc/add_autopsy_data(var/used_weapon, var/damage)
  	var/datum/autopsy_data/W = autopsy_data[used_weapon]
  	if(!W)
  		W = new()
  		W.weapon = used_weapon
  		autopsy_data[used_weapon] = W
  
  	W.hits += 1
  	W.damage += damage
  	W.time_inflicted = world.time
  
  /****************************************************
  			   DAMAGE PROCS
  ****************************************************/
  
  /datum/organ/external/proc/emp_act(severity)
  	if(!(status & ORGAN_ROBOT))	//meatbags do not care about EMP
  		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/take_damage(brute, burn, sharp, used_weapon = null, list/forbidden_limbs = list())
  	if((brute <= 0) && (burn <= 0))
  		return 0
  
  	if(status & ORGAN_DESTROYED)
  		return 0
  	if(status & ORGAN_ROBOT)
  		brute *= 0.66 //~2/3 damage for ROBOLIMBS
  		burn *= 0.66 //~2/3 damage for ROBOLIMBS
  
  	//If limb took enough damage, try to cut or tear it off
  	if(config.limbs_can_break && brute_dam >= max_damage * config.organ_health_multiplier)
  		if( (sharp && prob(5 * brute)) || (brute > 20 && prob(2 * brute)) )
  			droplimb(1)
  			return
  
  	if(status & ORGAN_BROKEN && prob(40) && brute)
  		owner.emote("scream")	//getting hit on broken hand hurts
  	if(used_weapon)
  		add_autopsy_data(used_weapon, brute + burn)
  
  	var/can_cut = (prob(brute*2) || sharp) && !(status & ORGAN_ROBOT)
  	// If the limbs can break, make sure we don't exceed the maximum damage a limb can take before breaking
  	if((brute_dam + burn_dam + brute + burn) < max_damage || !config.limbs_can_break)
  		if(brute)
  			if(can_cut)
  				createwound( CUT, brute )
  			else
  				createwound( BRUISE, brute )
  		if(burn)
  			createwound( BURN, burn )
  	else
  		//If we can't inflict the full amount of damage, spread the damage in other ways
  		//How much damage can we actually cause?
  		var/can_inflict = max_damage * config.organ_health_multiplier - (brute_dam + burn_dam)
  		if(can_inflict)
  			if (brute > 0)
  				//Inflict all burte damage we can
  				if(can_cut)
  					createwound( CUT, min(brute,can_inflict) )
  				else
  					createwound( BRUISE, min(brute,can_inflict) )
  				var/temp = can_inflict
  				//How much mroe damage can we inflict
  				can_inflict = max(0, can_inflict - brute)
  				//How much brute damage is left to inflict
  				brute = max(0, brute - temp)
  
  			if (burn > 0 && can_inflict)
  				//Inflict all burn damage we can
  				createwound(BURN, min(burn,can_inflict))
  				//How much burn damage is left to inflict
  				burn = max(0, burn - can_inflict)
  		//If there are still hurties to dispense
  		if (burn || brute)
  			if (status & ORGAN_ROBOT)
  				droplimb(1) //Robot limbs just kinda fail at full damage.
  			else
  				//List organs we can pass it to
  				var/list/datum/organ/external/possible_points = list()
  				if(parent)
  					possible_points += parent
  				if(children)
  					possible_points += children
  				if(forbidden_limbs.len)
  					possible_points -= forbidden_limbs
  				if(possible_points.len)
  					//And pass the pain around
  					var/datum/organ/external/target = pick(possible_points)
  					target.take_damage(brute, burn, sharp, used_weapon, forbidden_limbs + src)
  
  	// sync the organ's damage with its wounds
  	src.update_damages()
  	owner.updatehealth()
  
  	var/result = update_icon()
  	return result
  
  /datum/organ/external/proc/heal_damage(brute, burn, internal = 0, robo_repair = 0)
  	if(status & ORGAN_ROBOT && !robo_repair)
  		return
  
  	//Heal damage on the individual wounds
  	for(var/datum/wound/W in wounds)
  		if(brute == 0 && burn == 0)
  			break
  