anchor.diff:  
     if (fUnit is TKMUnitWorker) then
     begin
  -    DistNext := gHands.DistanceToEnemyTowers(T, fUnit.Owner);
  -    if (DistNext <= RANGE_WATCHTOWER_MAX)
  -      and (DistNext < gHands.DistanceToEnemyTowers(fUnit.Position, fUnit.Owner)) then
  +    distNext := gHands.DistanceToEnemyTowers(T, fUnit.Owner);
  +    if (distNext <= RANGE_WATCHTOWER_MAX)
  +      and (distNext < gHands.DistanceToEnemyTowers(fUnit.Position, fUnit.Owner)) then
       begin
         //Cancel the plan if we cant approach it
         if TKMUnitWorker(fUnit).Task is TKMTaskBuild then
  
positive.code: procedure TKMUnitActionWalkTo.Save(SaveStream: TKMemoryStream);
  begin
    inherited;
    SaveStream.PlaceMarker('UnitActionWalkTo');
    SaveStream.Write(fWalkFrom);
    SaveStream.Write(fWalkTo);
  
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;
  
  