anchor.diff:  			if(AIShouldSleep(possible_targets))	// we try to acquire a new one
   				toggle_ai(AI_IDLE)			// otherwise we go idle
   	return 1
  +
  +/mob/living/simple_animal/hostile/handle_automated_movement()
  +	. = ..()
  +	if(dodging && target && in_melee && isturf(loc) && isturf(target.loc))
  +		var/datum/cb = CALLBACK(src,.proc/sidestep)
  +		if(sidestep_per_cycle > 1) //For more than one just spread them equally - this could changed to some sensible distribution later
  +			var/sidestep_delay = SSnpcpool.wait / sidestep_per_cycle
  +			for(var/i in 1 to sidestep_per_cycle)
  +				addtimer(cb, (i - 1)*sidestep_delay)
  +		else //Otherwise randomize it to make the players guessing.
  +			addtimer(cb,rand(1,SSnpcpool.wait))
  +
  +/mob/living/simple_animal/hostile/proc/sidestep()
  +	if(!target || !isturf(target.loc) || !isturf(loc) || stat == DEAD)
  +		return
  +	var/target_dir = get_dir(src,target)
  +	
  +	var/static/list/cardinal_sidestep_directions = list(-90,-45,0,45,90)
  +	var/static/list/diagonal_sidestep_directions = list(-45,0,45)
  +	var/chosen_dir = 0
  +	if (target_dir & (target_dir - 1))
  +		chosen_dir = pick(diagonal_sidestep_directions)
  +	else
  +		chosen_dir = pick(cardinal_sidestep_directions)
  +	if(chosen_dir)
  +		chosen_dir = turn(target_dir,chosen_dir)
  +		Move(get_step(src,chosen_dir))
  +		face_atom(target) //Looks better if they keep looking at you when dodging
   
   /mob/living/simple_animal/hostile/attacked_by(obj/item/I, mob/living/user)
   	if(stat == CONSCIOUS && !target && AIStatus != AI_OFF && !client && user)
  
positive.code: 
  /mob/living/simple_animal/hostile/proc/LoseTarget()
  	target = null
  	walk(src, 0)
  	LoseAggro()
  
  
negative.code: 	var/lose_patience_timer_id //id for a timer to call LoseTarget(), used to stop mobs fixating on a target they can't reach
  	var/lose_patience_timeout = 300 //30 seconds by default, so there's no major changes to AI behaviour, beyond actually bailing if stuck forever
  
  /mob/living/simple_animal/hostile/Initialize()
  	. = ..()
  
  