anchor.diff:        // Take all groups out of attack class
         if not fAttack.IsGroupInAction(Group) then
         begin
  -        if (Length(AvaiableGroups) <= Cnt) then
  -          SetLength(AvaiableGroups, Length(AvaiableGroups) + 16);
  -        AvaiableGroups[Cnt] := Group;
  +        if (Length(AvailableGroups) <= Cnt) then
  +          SetLength(AvailableGroups, Length(AvailableGroups) + 16);
  +        AvailableGroups[Cnt] := Group;
           Cnt := Cnt + 1;
         end;
       end
  
positive.code: 
    if fAttack.FindBestTarget(TargetOwner, TargetPoint, ForceToAttack) then
    begin
      SetLength(AvaiableGroups, Cnt);
      for I := Low(AvaiableGroups) to High(AvaiableGroups) do
        fDefence.ReleaseGroup(AvaiableGroups[I]);
      OrderAttack(TargetPoint, AvaiableGroups);
      //if ForceToAttack OR (gAIFields.Eye.ArmyEvaluation.CompareAllianceStrength(TargetOwner, AvaiableGroups) > COMPANY_MIN_ATTACK_CHANCE) then
    end;
  
    //Comparison := gAIFields.Eye.ArmyEvaluation.CompareAllianceStrength(fOwner, EnemyStats[I].Player) - (EnemyStats[I].Distance / MinDist - 1) * DISTANCE_COEF;
    //fAttack.AttackChance(AvaiableGroups);
  end;
  
  
  
negative.code:   end;
    // ForceToAttack := ForceToAttack OR (gGame.MissionMode = mm_Tactic); // Maybe force attack in mm_Tactic map? But some of mm_Tactic map are also defensive...
  
    // Get array of pointers to available groups
    Cnt := 0;
    for I := 0 to gHands[fOwner].UnitGroups.Count - 1 do
    begin
  