anchor.diff:  				loc = p.loc
   
   			else if(d > 3)
  -				step_towards(src, p)
  +				dir = get_dir(src, p)
  +				loc = get_step_towards(src, p)
   
   			if(light)
   				light.loc = loc
   
   		else
  -			dir = get_dir(loc, oldLoc)
  -			loc = oldLoc
  +			if(item.function & PET_FOLLOW_RIGHT)
  +				dir = p.dir
  +				loc = get_step(p, turn(p.dir, 90))
  +			else if(item.function & PET_FOLLOW_LEFT)
  +				dir = p.dir
  +				loc = get_step(p, turn(p.dir, -90))
  +			else
  +				dir = get_dir(loc, oldLoc)
  +				loc = oldLoc
  +
  +			var/const/stepSize = 16
   
   			var/offset = (iconSize - 1) * -16
   
  -			if(dir & EAST)
  -				pixel_x = offset - (item.currentSize - 1) * 4
  -			else if(dir & WEST)
  -				pixel_x = offset + (item.currentSize - 1) * 4
  +			var/d = get_dir(loc, p)
  +
  +			if(d & EAST)
  +				pixel_x = offset - (item.currentSize - 1) * stepSize
  +			else if(d & WEST)
  +				pixel_x = offset + (item.currentSize - 1) * stepSize
   			else
   				pixel_x = offset
   
  -			if(dir & NORTH)
  -				pixel_y = offset - (item.currentSize - 1) * 4
  -			else if(dir & SOUTH)
  -				pixel_y = offset + (item.currentSize - 1) * 16
  +			if(d & NORTH)
  +				pixel_y = offset - (item.currentSize - 1) * stepSize
  +			else if(d & SOUTH)
  +				pixel_y = offset + (item.currentSize - 1) * stepSize
   			else
   				pixel_y = offset
   
  
positive.code: 			animate(src, color = c2.matrix, time = 15, loop = -1)
  			animate(     color = c1.matrix, time = 15)
  
  
  	proc/follow(turf/oldLoc, mob/Player/p)
  
  		if(item.function & PET_FOLLOW_FAR)
  			var/d = get_dist(src, p)
  
  
negative.code: 		icon_state = "pixie"
  	dog
  		icon_state = "dog"
  	snake
  		icon_state = "snake"
  	wolf
  		icon_state = "wolf"
  	troll
  		icon_state = "troll"
  	acromantula
  