anchor.diff:  		owner.visible_message("<span class='danger'>[owner] is hit by [attack_text] in the chest!</span>") //We pretend to be hit, since blocking it would stop the message otherwise
   		spawn(40)
   			owner.alpha = initial(owner.alpha)
  +		reactivearmor_semicd = world.time + reactivearmor_cooldown
   		return 1
   
   /obj/item/clothing/suit/armor/reactive/tesla
   	name = "reactive tesla armor"
  +	desc = "An experimental suit of armor with sensitive detectors hooked up to a huge capacitor grid, with emitters strutting out of it. Zap."
   
   /obj/item/clothing/suit/armor/reactive/tesla/hit_reaction(mob/living/carbon/human/owner, attack_text)
   	if(!active)
   		return 0
   	if(prob(hit_reaction_chance))
  +		if(world.time < reactivearmor_semicd)
  +			var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
  +			sparks.set_up(1, 1, src)
  +			sparks.start()
  +			owner.visible_message("<span class='danger'>The tesla capacitors on [owner]'s reactive telsa armor are still recharging and the armor fails to activate and only sparks!</spawn>")
  +			return
   		owner.visible_message("<span class='danger'>The [src] blocks the [attack_text], sending out arcs of lightning!</span>")
   		for(var/mob/living/M in view(6, owner))
   			if(M == owner)
  
positive.code: 
  /obj/item/clothing/suit/armor/reactive/fire
  	name = "reactive incendiary armor"
  
  
  /obj/item/clothing/suit/armor/reactive/fire/hit_reaction(mob/living/carbon/human/owner, attack_text)
  	if(!active)
  		return 0
  	if(prob(hit_reaction_chance))
  		owner.visible_message("<span class='danger'>The [src] blocks the [attack_text], sending out jets of flame!</span>")
  		for(var/mob/living/carbon/C in range(6, owner))
  			if(C != owner)
  				C.fire_stacks += 8
  				C.IgniteMob()
  		owner.fire_stacks = -20
  		return 1
  	return 0
  
  
  /obj/item/clothing/suit/armor/reactive/stealth
  	name = "reactive stealth armor"
  
  /obj/item/clothing/suit/armor/reactive/stealth/hit_reaction(mob/living/carbon/human/owner, attack_text)
  	if(!active)
  		return 0
  	if(prob(hit_reaction_chance))
  		var/mob/living/simple_animal/hostile/illusion/escape/E = new(owner.loc)
  		E.Copy_Parent(owner, 50)
  		E.GiveTarget(owner) //so it starts running right away
  
negative.code: 	desc = "Someone seperated our Research Director from his own head!"
  	var/tele_range = 6
  	var/rad_amount= 15
  	var/nospace = 0
  	reactivearmor_cooldown = 100
  
  /obj/item/clothing/suit/armor/reactive/teleport/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance)
  	if(!active)
  		return 0
  	if(prob(hit_reaction_chance))
  		var/mob/living/carbon/human/H = owner
  		if(world.time < reactivearmor_semicd)
  			owner.visible_message("<span class='danger'>The reactive teleport system is still recharging! It fails to teleport [H]!</span>")
  			return
  		owner.visible_message("<span class='danger'>The reactive teleport system flings [H] clear of [attack_text], shutting itself off in the process!</span>")
  		var/list/turfs = new/list()
  		for(var/turf/T in orange(tele_range, H))
  			if(istype(T,/turf/open/space)||nospace == 1)
  				continue
  			if(T.density)
  				continue
  			if(T.x>world.maxx-tele_range || T.x<tele_range)
  