anchor.diff:    sqr_RANGE = 12*12;
     sqr_INTEREST_DISTANCE_Group = 30*30;
     sqr_INTEREST_DISTANCE_House = 20*20;
  +  sqr_MAX_DISTANCE_FROM_HOUSE = 10*10;
  +  MAX_ATTACKERS_PER_HOUSE = 12;
     WarriorPrice: array [utMilitia..utHorseman] of Single = (
       1.5,2.0,2.5,2.0,2.5, // utMilitia,utAxeFighter,utSwordsman,utBowman,utArbaletman,
       2.0,2.5,2.0,2.5,     // utPikeman,utHallebardman,utHorseScout,utCavalry
  
positive.code:   CG: TKMCombatGroup;
    U: TKMUnit;
    UW: TKMUnitWarrior;
    Dist: array of Single;
    Threat: array of record
      DistRanged, Distance, Risk, WeightedCount: Single;
    end;
  begin
    // Init variables for compiler
    BestIdxA := 0;
    BestIdxE := 0;
    CntA := Length(A);
    CntE := Length(E);
    if aAttack AND (Length(E) > 0) then
    begin
  
  
negative.code:         IdxPL2 := 0;
          BestPrice := High(Word);
          for IdxPL := 0 to Length(aPlayers) - 1 do
            if (gAIFields.Influences.OwnPoint[aPlayers[IdxPL], Mines[K].pPoint^] > 0)
              AND (PLPossibleMines[IdxPL] + PLMines[IdxPL] < BestPrice) then
            begin
              BestPrice := PLPossibleMines[IdxPL] + PLMines[IdxPL];
  