anchor.diff:                                          aSilent: Boolean = False);
   var
     errorStr: String;
  -  RouteWasBuilt: Boolean; //Check if route was built, otherwise return nil
  +  routeWasBuilt: Boolean; //Check if route was built, otherwise return nil
   begin
     inherited Create(aUnit, aActionType, False);
   
  
positive.code:     if CanWalkToTarget(fWalkFrom, tpWalk) then
        gGame.Pathfinding.Route_ReturnToWalkable(fWalkFrom, fWalkTo, wcRoad, gTerrain.GetRoadConnectID(fWalkTo), [tpWalk], NodeList);
  
    AvoidLocked := palNoAvoid;
    if (fUnit is TKMUnitWarrior)
      and (TKMUnitWarrior(fUnit).Task <> nil)
      and (TKMUnitWarrior(fUnit).Task.TaskType = uttAttackHouse) then
    begin
      if fAvoidLockedAsMovementCost then
        AvoidLocked := palAvoidByMovementCost
      else
        AvoidLocked := palAvoidAsUnwalkable;
    end;
  
    //Build a route A*
    if NodeList.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
    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 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])
        else
          NodeList.Clear; //Clear NodeList so we return false
      finally
        NodeList2.Free;
      end;
    end;
  
  
negative.code: function TKMUnitActionWalkTo.CheckAllTilesAroundHouseLocked: Boolean;
  var
    I: Integer;
    cellsAround: TKMPointDirList;
  begin
    Result := (fTargetHouse <> nil) and not fTargetHouse.IsDestroyed;
    if not Result then
      Exit;
  
    cellsAround := TKMPointDirList.Create;
    try
      fTargetHouse.GetListOfCellsAround(cellsAround, fPass);
  
      for I := 0 to cellsAround.Count - 1 do
        if not gTerrain.TileIsLocked(cellsAround[I].Loc) then
          Exit(False);
    finally
      cellsAround.Free;
    end;
  end;
  
  