anchor.diff:  		path = list()
   	return path
   
  +/*/proc/AStar(...)
  +	var/static/const/num = 3
  +	var/static/cur = rand(0, num-1)
  +	if (prob(33))
  +		cur = ((cur + 1) % num)
  +
  +
  +	switch(cur)
  +		if(0)
  +			return AStar_new(arglist(args))
  +		if(1)
  +			return AStar_old(arglist(args))
  +		if(2)
  +			return AStar_goof(arglist(args))
  +		else
  +			throw EXCEPTION("invalid chain state")
  +*/
   //the actual algorithm
   /proc/AStar(caller, end, dist, maxnodes, maxnodedepth = 30, mintargetdist, adjacent = /turf/proc/reachableAdjacentTurfs, id=null, list/exclude=null, simulated_only = 1)
   	var/static/next_astar_id = 1
  
positive.code: /datum/PathNode
  	var/turf/source 			//turf associated with the PathNode
  	var/astar_id				//Id of the astar operation we belong to
  	var/closed = FALSE			//has this node been already eliminated?
  	var/datum/PathNode/parent	//link to the parent PathNode
  	var/weight					//f A* Node weight (f = g + h)
  	var/cost					//g A* movement cost variable
  	var/heuristic				//h A* heuristic variable = h
  	var/depth					//ht count the number of Nodes traversed
  
  /datum/PathNode/New(s, id, p, pg, ph, pnt)
  	source = s
  
negative.code: //////////////////////
  
  //the weighting function, used in the A* algorithm
  ///proc/PathWeightCompare(datum/PathNode/a, datum/PathNode/b)
  //	return a.weight - b.weight
  
  //reversed so that the Heap is a MinHeap rather than a MaxHeap
  /proc/HeapPathWeightCompare(datum/PathNode/a, datum/PathNode/b)
  