anchor.diff:    end;
   
     //Build a route A*
  -  if NodeList.Count = 0 then //Build a route from scratch
  +  if fNodeList.Count = 0 then //Build a route from scratch
     begin
       if CanWalkToTarget(fWalkFrom, fPass) then
  -      gGame.Pathfinding.Route_Make(fWalkFrom, fWalkTo, [fPass], fDistance, fTargetHouse, NodeList, avoidLocked) //Try to make the route with fPass
  +      gGame.Pathfinding.Route_Make(fWalkFrom, fWalkTo, [fPass], fDistance, fTargetHouse, fNodeList, avoidLocked) //Try to make the route with fPass
     end
     else //Append route to existing part
     begin
       nodeList2 := TKMPointList.Create;
       try
         //Make a route
  -      if CanWalkToTarget(NodeList[NodeList.Count-1], fPass) then
  -        gGame.Pathfinding.Route_Make(NodeList.Last, fWalkTo, [fPass], fDistance, fTargetHouse, nodeList2, avoidLocked); //Try to make the route with fPass
  +      if CanWalkToTarget(fNodeList[fNodeList.Count-1], fPass) then
  +        gGame.Pathfinding.Route_Make(fNodeList.Last, fWalkTo, [fPass], fDistance, fTargetHouse, nodeList2, avoidLocked); //Try to make the route with fPass
   
         //If this part of the route fails, the whole route has failed
         //At minimum Route_Make returns Count = 1 (fWalkTo)
         if nodeList2.Count > 0 then
           for I := 1 to nodeList2.Count - 1 do
  -          NodeList.Add(nodeList2[I])
  +          fNodeList.Add(nodeList2[I])
         else
  -        NodeList.Clear; //Clear NodeList so we return False
  +        fNodeList.Clear; //Clear NodeList so we return False
       finally
         nodeList2.Free;
       end;
     end;
   
  -  Result := NodeList.Count > 0;
  +  Result := fNodeList.Count > 0;
   end;
   
   
  
positive.code: 
  function TKMUnitActionWalkTo.RouteBuilt: Boolean;
  begin
    Result := NodeList.Count > 0;
  end;
  
  
  
negative.code:         begin
            fDestBlocked := True; //When in this mode we are zero priority as we cannot reach our destination. This allows serfs with stone to get through and clear our path.
            fInteractionStatus := kisWaiting; //If route cannot be made it means our destination is currently not available (workers in the way) So allow us to be pushed.
            fExplanation := 'Our destination is blocked by busy units';
            ExplanationLogAdd;
          end
          else
          begin
            //NodeList has now been re-routed, so we need to re-init everything else and start walk again
            fNodeList.Free; //Free our current node list and swap in this new one
            fNodeList := newNodeList;
            newNodeList := nil; //So we don't FreeAndNil it at the end (it's now our main node list)
            SetInitValues;
            fExplanation := 'Unit in the way is working so we will re-route around it';
            ExplanationLogAdd;
            fDestBlocked := False;
            //Exit, then on next tick new walk will start
  