anchor.diff:        end;
       end;
     end;
  +
  +  // Determine first line (divided by count of allies - it is rought because allies can have different size of defensive line but better than nothing)
  +  aFirstLine := Round(aFirstLine / AllianceCnt);
  +
     SetLength(DefPosArr, Cnt);
     Result := True;
   end;
  
positive.code:         Polygon := Idx;
          Direction := KMGetDirection( fQueueArray[Idx].DistPoint, fDefInfo[Idx].PointInDir );
          DirPoint := KMPointDir( fQueueArray[Idx].DistPoint, Direction );
          if (Cnt < aFirstLine) then
            Weight := High(Word) // First line, max importance
          else
            Weight := Min(High(Word),  Max( 0,(High(Word) shr 1) - fDefInfo[Idx].Distance + fDefInfo[Idx].EnemyInfluence )  );
        end;
        if (Direction <> dir_NA) then
          Cnt := Cnt + 1;
  
negative.code:   // Execute FF
    SetLength(DefPosArr, aBaseCnt);
    Cnt := 0;
    ScannedCnt := 0;
    while RemoveFromQueue(Idx) AND (Cnt < aBaseCnt) do
    begin
      ScannedCnt := ScannedCnt + 1;
      // Add only defence points with specicific distance
      Check := True;
      for I := 0 to Cnt - 1 do
  