anchor.diff:      if    (      fHouseInfluence AND (gAIFields.Influences.Ownership[  fEnemies[I], aPoint.Y, aPoint.X  ] > HOUSE_INFLUENCE_LIMIT)  )
          OR (  not fHouseInfluence AND (gAIFields.Influences.PresenceAllGroups[  fEnemies[I], aIdx  ] > ARMY_INFLUENCE_LIMIT) ) then
       begin
  +      // Mark presence
         with EnemiesStats[fHighStatsIdx] do
         begin
           Player := fEnemies[I];
  
positive.code:   Cnt := Length(aCenterPoints);
    SetLength(InitIdxArray, Cnt);
    for I := 0 to Cnt - 1 do
      InitIdxArray[I] := gAIFields.NavMesh.Point2Polygon[ aCenterPoints[I].Y, aCenterPoints[I].X ];
  
    // Find enemies (indexes)
    SetLength(fEnemies, gHands.Count - 1);
  
negative.code:     function HouseInfluence(aPlayer: TKMHandIndex; aHouseInfluence, aMaxDistance, aMaximalIdx: Word; aInitIdxArray: TKMWordArray): Boolean;
    end;
  
    // Evaluation of terrain (finds large areas without borders)
    TKMWalkableAreasDetector = class(TNavMeshFloodFill)
    private
    protected
      fMaxDistance: Word;
      function CanBeExpanded(const aIdx: Word): Boolean; override;
      procedure MarkAsVisited(const aIdx, aDistance: Word; const aPoint: TKMPoint); override;
    public
      WalkableAreas: TKMByteArray;
      procedure MarkPolygons();
    end;
  
  implementation
  uses
    KM_AIFields, KM_NavMesh, KM_HandsCollection;
  
  
  { TNavMeshInfluenceSearch }
  function TNavMeshInfluenceSearch.CanBeExpanded(const aIdx: Word): Boolean;
  begin
    // Can be visited only in case that we have space in array (and we are not out of enemies)
  