anchor.diff:  		return
   
   	var/atom/A = O
  -
  +
   	for (var/i = 0, ++i <= 20)
   		if (isturf(A))
   			return A
  
positive.code: /proc/getPixelDistance(var/atom/A, var/atom/B)
  	if(!istype(A)||!istype(B))
  		return 0
  	
  	var/_x1 = A.x
  	var/_x2 = B.x
  	var/_y1 = A.y
  	var/_y2 = B.y
  	
  	//Ensure _x1 is bigger, simplicity
  	if(_x2 > _x1)
  		var/tx = _x1
  		_x1 = _x2
  		_x2 = tx
  	
  	//Ensure _y1 is bigger, simplicity
  	if(_y2 > _y1)
  		var/ty = _y1
  		_y1 = _y2
  		_y2 = ty
  	
  	//DY/DX
  	var/dx = _x1 - _x2 + A.pixel_x + B.pixel_x
  	var/dy = _y1 - _y2 + A.pixel_y + B.pixel_y
  	
  	//Distance check
  	if(dx == 0 && dy == 0) //No distance, don't bother calculating
  		return 0
  
  	. = sqrt(((dx**2) + (dy**2)))
  
  
  /proc/get(atom/loc, type)
  	while(loc)
  
negative.code: 		if(prob(chance))
  			step(AM, pick(alldirs))
  		chance = max(chance - (initial_chance / steps), 0)
  		steps--