anchor.diff:  					blinking = FALSE
   			return
   
  -	if(prob(10 + (anger_modifier * 0.5)) && get_dist(src, target) > 2)
  -		blink(target)
  -
  -	else if(prob(70 - anger_modifier)) //a cross blast of some type
  -		if(prob(anger_modifier)) //at us?
  -			if(prob(anger_modifier * 2) && health < maxHealth * 0.5) //we're super angry do it at all dirs
  -				INVOKE_ASYNC(src, .proc/alldir_blasts, src)
  -			else if(prob(60))
  -				INVOKE_ASYNC(src, .proc/cardinal_blasts, src)
  -			else
  -				INVOKE_ASYNC(src, .proc/diagonal_blasts, src)
  -		else //at them?
  -			if(prob(anger_modifier * 2) && health < maxHealth * 0.5 && !target_is_slow) //we're super angry do it at all dirs
  -				INVOKE_ASYNC(src, .proc/alldir_blasts, target)
  -			else if(prob(60))
  -				INVOKE_ASYNC(src, .proc/cardinal_blasts, target)
  -			else
  -				INVOKE_ASYNC(src, .proc/diagonal_blasts, target)
  -	else if(chaser_cooldown < world.time) //if chasers are off cooldown, fire some!
  +	if(chaser_cooldown < world.time) //if chasers are off cooldown, fire some!
   		var/obj/effect/temp_visual/hierophant/chaser/C = new /obj/effect/temp_visual/hierophant/chaser(loc, src, target, chaser_speed, FALSE)
   		chaser_cooldown = world.time + initial(chaser_cooldown)
   		if((prob(anger_modifier) || target.Adjacent(src)) && target != src)
  -			var/obj/effect/temp_visual/hierophant/chaser/OC = new /obj/effect/temp_visual/hierophant/chaser(loc, src, target, max(1.5, 5 - anger_modifier * 0.07), FALSE)
  +			var/obj/effect/temp_visual/hierophant/chaser/OC = new /obj/effect/temp_visual/hierophant/chaser(loc, src, target, chaser_speed * 1.5, FALSE)
   			OC.moving = 4
   			OC.moving_dir = pick(GLOB.cardinal - C.moving_dir)
  +
  +	else if(prob(10 + (anger_modifier * 0.5)) && get_dist(src, target) > 2)
  +		blink(target)
  +
  +	else if(prob(70 - anger_modifier)) //a cross blast of some type
  +		if(prob(anger_modifier * (2 / target_slowness)) && health < maxHealth * 0.5) //we're super angry do it at all dirs
  +			INVOKE_ASYNC(src, .proc/alldir_blasts, target)
  +		else if(prob(60))
  +			INVOKE_ASYNC(src, .proc/cardinal_blasts, target)
  +		else
  +			INVOKE_ASYNC(src, .proc/diagonal_blasts, target)
   	else //just release a burst of power
   		INVOKE_ASYNC(src, .proc/burst, get_turf(src))
   
  
positive.code: 
  /mob/living/simple_animal/hostile/megafauna/hierophant/OpenFire()
  	calculate_rage()
  	var/target_is_slow = FALSE
  	if(isliving(target))
  		var/mob/living/L = target
  		if(!blinking && L.stat == DEAD && get_dist(src, L) > 2)
  			blink(L)
  			return
  		if(L.movement_delay() > 1.5)
  			target_is_slow = TRUE
  	chaser_speed = max(1, (3 - anger_modifier * 0.04) + target_is_slow * 0.5)
  	if(blinking)
  		return
  
  	arena_trap(target)
  	ranged_cooldown = world.time + max(5, ranged_cooldown_time - anger_modifier * 0.75) //scale cooldown lower with high anger.
  
negative.code: 			var/blink_counter = 1 + round(anger_modifier * 0.08)
  			switch(pick(possibilities))
  				if("blink_spam") //blink either once or multiple times.
  					if(health < maxHealth * 0.5 && blink_counter > 1)
  						visible_message("<span class='hierophant'>\"Mx ampp rsx iwgeti.\"</span>")
  						var/oldcolor = color
  						animate(src, color = "#660099", time = 6)
  						sleep(6)
  						while(health && !QDELETED(target) && blink_counter)
  							if(loc == target.loc || loc == target) //we're on the same tile as them after about a second we can stop now
  								break
  							blink_counter--
  							blinking = FALSE
  							blink(target)
  							blinking = TRUE
  							sleep(4 + target_slowness)
  						animate(src, color = oldcolor, time = 8)
  						addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
  						sleep(8)
  