anchor.diff:  
   
   var
  +
  +  GA_BUILDER_BuildHouse_RoadMaxWork     : Single = 15;
     GA_BUILDER_BuildHouse_FieldMaxWork    : Single = 1;
     GA_BUILDER_BuildHouse_RTPMaxWork      : Single = 10;
  -  GA_BUILDER_BuildHouse_RoadMaxWork     : Single = 10.94186592;
  -  GA_BUILDER_CreateShortcuts_MaxWork    : Single = 10.81381607;
  -  //GA_BUILDER_ChHTB_FractionCoef         : Single = 20.06742477;
  -  GA_BUILDER_ChHTB_FractionCoef         : Single = 40;//11.58820248;
  -  //GA_BUILDER_ChHTB_TrunkFactor          : Single = 8.568861008;
  -  //GA_BUILDER_ChHTB_TrunkBalance         : Single = 5.72991991;
  -  GA_BUILDER_ChHTB_TrunkFactor          : Single = 5.920251846;
  -  GA_BUILDER_ChHTB_TrunkBalance         : Single = 3.946866512;
  +  GA_BUILDER_CreateShortcuts_MaxWork    : Single = 9.321095646;
  +  GA_BUILDER_ChHTB_FractionCoef         : Single = 9.673275352;
  +  GA_BUILDER_ChHTB_TrunkFactor          : Single = 5.370502472;
  +  GA_BUILDER_ChHTB_TrunkBalance         : Single = 9.370810389;
     GA_BUILDER_ChHTB_AllWorkerCoef        : Single = 9.645618439;
     GA_BUILDER_ChHTB_FreeWorkerCoef       : Single = 1;
  -  GA_BUILDER_TRUNK_SHORTAGE             : Single = 0;
  -  GA_BUILDER_STONE_SHORTAGE             : Single = 10.40034485;
  +  GA_BUILDER_TRUNK_SHORTAGE             : Single = 1;
  +  GA_BUILDER_STONE_SHORTAGE             : Single = 5.60124576; //10.40034485;
     GA_BUILDER_WOOD_SHORTAGE              : Single = 10.05567646;
  -  GA_BUILDER_GOLD_SHORTAGE              : Single = 23.72795486;
  +  GA_BUILDER_GOLD_SHORTAGE              : Single = 32.64543295;
   
   
   type
  
positive.code:     RequiredHouses[htWoodcutters] := 0;
    end;
  
    RequiredStones := gHands[fOwner].BuildList.HousePlanList.GetPlansStoneDemands();
    RequiredWood := gHands[fOwner].BuildList.HousePlanList.GetPlansWoodDemands();
    for I := 0 to gHands[fOwner].Houses.Count - 1 do
  
negative.code:         begin
            MaxPlans := 0; // This house is critical so dont plan anything else
            Exit;
          end;
        end;
      end;
    end;
  
    procedure CheckHouseReservation();
    const
      // Reservation sets must be able to unlock specific houses!!!
      RESERVATION_FullSet: array[0..28] of TKMHouseType = (
        htSchool, htQuary, htMarketplace, htWoodcutters, htSawmill,
        htGoldMine, htCoalMine, htMetallurgists, htBarracks, htInn,
        htFarm, htMill, htBakery, htSwine, htButchers, htStables, htFisherHut,
        htIronMine, htIronSmithy, htArmorSmithy, htWeaponSmithy,
        htTannery, htArmorWorkshop, htWeaponWorkshop,
        htSiegeWorkshop, htTownHall, htWineyard, htStore, htWatchTower
      );
      STONE_SHORTAGE_IDX = 2;
      TRUNK_SHORTAGE_IDX = 3;
      WOOD_SHORTAGE_IDX = 4;
      GOLD_SHORTAGE_IDX = 7;
      FULL_SET = 28;
    var
      I,K, MaxIdx: Integer;
      HT: TKMHouseType;
    begin
      if fStoneShortage then
        MaxIdx := STONE_SHORTAGE_IDX
      else if fTrunkShortage then
        MaxIdx := TRUNK_SHORTAGE_IDX
      else if fWoodShortage then
        MaxIdx := WOOD_SHORTAGE_IDX
      else if fGoldShortage then
        MaxIdx := GOLD_SHORTAGE_IDX
      else
        MaxIdx := FULL_SET;
      for I := 0 to MaxIdx do
      begin
        HT := RESERVATION_FullSet[I];
        for K := 0 to fPlanner.PlannedHouses[HT].Count - 1 do
          with fPlanner.PlannedHouses[HT].Plans[K] do
            if not Placed
               AND (HouseReservation OR RemoveTreeInPlanProcedure)
               AND (cs_HousePlaced = AddToConstruction(HT,False,True)) then
            begin
              MaxPlace := MaxPlace - 1;
              RequiredHouses[HT] := 0;
              if (MaxPlace <= 0) then
                Exit;
            end;
      end;
    end;
  
    function GetChopOnlyCnt(): Word;
  