anchor.diff:                                    + 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.Routes[Point.Y, Point.X] * GA_PLANNER_FindPlaceForWoodcutter_PolyRoute
  +                                  - gAIFields.Eye.FlatArea[Point.Y, Point.X] * GA_PLANNER_FindPlaceForWoodcutter_FlatArea
  +                                  + gAIFields.Eye.Soil[Point.Y, Point.X] * GA_PLANNER_FindPlaceForWoodcutter_Soil
                                     - gAIFields.Eye.BuildFF.Distance[Point] * GA_PLANNER_FindPlaceForWoodcutter_DistCrit
                                     - gAIFields.Influences.GetOtherOwnerships(fOwner, Point.X, Point.Y) * GA_PLANNER_FindPlaceForWoodcutter_Influence
                                   ));
  
positive.code:     else         Output := False;
    end;
    Result := Output;
  end;      
  
  
  // Find place for woodcutter
  
negative.code:   for HT := HOUSE_MIN to HOUSE_MAX do
    begin
      SaveStream.Write(fPlannedHouses[HT].Count);
      SaveStream.Write(fPlannedHouses[HT].Completed);
      SaveStream.Write(fPlannedHouses[HT].UnderConstruction);
      Len := Length(fPlannedHouses[HT].Plans);
      SaveStream.Write( Len );
      for I := 0 to fPlannedHouses[HT].Count - 1 do
  