anchor.diff:    begin
       // Get count of available group types
       FillChar(GTArr, SizeOf(GTArr), #0);
  -    //for GT in TKMGroupType do
  -    //  GTArr[GT] := 0;
  -
       for I := 0 to aAGCnt - 1 do
         Inc(  GTArr[ aAvailableGroups[I].GroupType ]  );
   
  
positive.code:       if (DP <> nil) then
        begin
          AG.Price[AG.Count] := DP.Weight; // Change weight
          Inc(AG.Count,1); // Confirm that the group should be in array GroupArr
        end;
      end;
    end;
  
negative.code:   // 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
    for I := 0 to gHands[fOwner].UnitGroups.Count - 1 do
    begin
      Group := gHands[fOwner].UnitGroups[I];
      if Group.IsDead
        OR not Group.IsIdleToAI([wtokFlagPoint, wtokHaltOrder])
        OR (not TakeAllIn AND (Group.Count < MIN_TROOPS_IN_GROUP)) then
        Continue;
      // Add grop pointer to array (but dont increase count now so it will be ignored)
      with AG do
      begin
        if (Length(GroupArr) <= Count) then
        begin
          SetLength(GroupArr, Count + 16);
          SetLength(Price, Count + 16);
        end;
        GroupArr[Count] := Group;
        Price[Count] := 0;
      end;
      // Check if group can be in array
      if ForceToAttack then
      begin
        // Take all groups out of attack class
        if not fAttack.IsGroupInAction(Group) then
          Inc(AG.Count); // Confirm that the group should be in array GroupArr
      end
      else
      begin
  