anchor.diff:  			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)
  +/proc/AStar_new(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
   	var/astar_id = next_astar_id++
   
  
positive.code: 	weight = pg + ph
  	depth = pnt
  
  
  //////////////////////
  //A* procs
  //////////////////////
  
  //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)
  
negative.code: 	var/cost					//g A* movement cost variable
  	var/heuristic				//h A* heuristic variable = h
  	var/depth					//ht count the number of Nodes traversed
  	var/PathNode/next			//next node in the linked stack.
  
  /datum/PathNode/New(s, id, p, pg, ph, pnt)
  	source = s
  