anchor.diff:        if not (HT in [htWatchTower, htWoodcutters, htCoalMine, htIronMine, htGoldMine])
           AND not (HT in HOUSE_DEPENDENCE[aHT]) then
           for I := fPlannedHouses[HT].Count - 1 downto 0 do
  -          if (HouseCnt = 0) OR (KaMRandom('TKMCityPlanner.FindPlaceForHouse') < PROBABILITY) then
  +          if (HouseCnt = 0) OR (KaMRandom() < PROBABILITY) then
             begin
               if (HouseCnt >= MAX_RND_HOUSES) then
                 break;
  
positive.code:                                   + 1000000 // Base price
                                    + fForestsNearby.Tag2[I] * GA_PLANNER_FindPlaceForWoodcutter_TreeCnt
                                    + Byte(PartOfForest) * GA_PLANNER_FindPlaceForWoodcutter_ExistForest
                                    - gAIFields.Eye.PolygonRoutes[ gAIFields.NavMesh.KMPoint2Polygon[Point] ] * GA_PLANNER_FindPlaceForWoodcutter_PolyRoute
                                    - gAIFields.Influences.EvalArea[Point.Y, Point.X] * GA_PLANNER_FindPlaceForWoodcutter_EvalArea
                                    - gAIFields.Eye.BuildFF.Distance[Point] * GA_PLANNER_FindPlaceForWoodcutter_DistCrit
                                    - gAIFields.Influences.GetOtherOwnerships(fOwner, Point.X, Point.Y) * GA_PLANNER_FindPlaceForWoodcutter_Influence
                                  ));
  
negative.code: const
    WOODCUT_CHOP_ONLY_CHECK = MAX_HANDS * 100;
  var
    CheckChopOnly, CheckExistHouse, HouseExist: Boolean;
    CompletedHouses,HousesUnderConstruction: Word;
    I,K: Integer;
    HT: TKMHouseType;
    H: TKMHouse;
  