anchor.diff:    KM_Defaults, KM_Pics;
   
   type
  +  TKMMapEdPlayerType = (mptDefault, mptHuman, mptClassicAI, mptAdvancedAI);
  +
     TKMMapEdMissionPlayers = class
     private
       fPlayerIdToDelete: TKMHandID;
  
positive.code: 
  procedure TKMMapEdMissionPlayers.Mission_PlayerTypesAllClick(Sender: TObject);
  var
    I, K: Integer;
    checked: Boolean;
  begin
    K := TKMCheckBox(Sender).Tag;
  
    for I := 0 to MAX_HANDS - 1 do
    begin
      if not ChkBox_PlayerTypes[I, K].IsClickable then
        Continue;
  
      checked := TKMCheckBox(Sender).Checked;
  
      ChkBox_PlayerTypes[I, K].SetChecked(checked);
      case K of
        1:  gGame.MapEditor.PlayerHuman[I] := checked;
        2:  gGame.MapEditor.PlayerClassicAI[I] := checked;
        3:  gGame.MapEditor.PlayerAdvancedAI[I] := checked;
      end;
    end;
  
  
negative.code:     procedure PlayerDeleteConfirm(aVisible: Boolean);
    protected
      Panel_PlayerTypes: TKMPopUpPanel;
        ChkBox_PlayerTypes: array [0..MAX_HANDS-1, TKMMapEdPlayerType] of TKMCheckBox;
        ChkBox_PlayerTypesAll: array [mptHuman..mptAdvancedAI] of TKMCheckBox;
        Label_PlayerTypesAll: TKMLabel;
        Label_PlayerId: array [0..MAX_HANDS-1] of TKMLabel;
        Button_Close: TKMButton;
  