anchor.diff:  procedure TKMArmyManagement.UpdateState(aTick: Cardinal);
   const
     PERF_TIME_LIMIT = MAX_HANDS * 10 * 10;
  +  //PERF_TIME_LIMIT = 10;
   begin
     if (aTick mod MAX_HANDS = fOwner) then
     begin
  
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:     GTArr: array[TKMGroupType] of Integer;
      Groups: TKMUnitGroupArray;
    begin
      // Get count of available group types
      FillChar(GTArr, SizeOf(GTArr), #0);
      for I := 0 to Length(aAvailableGroups) - 1 do
        Inc(  GTArr[ aAvailableGroups[I].GroupType ]  );
  
      CompaniesCnt := Max(1, Ceil(Length(aAvailableGroups) / MAX_GROUPS_IN_COMPANY));
      HighAG := Length(aAvailableGroups) - 1;
      for I := 0 to CompaniesCnt - 1 do
      begin
        GCnt := 0;
  