syntax = "proto2";
message GameCommand {
    enum GameCommandType {
        KICK_FROM_GAME = 1000;
        LEAVE_GAME = 1001;
        GAME_SAY = 1002;
        SHUFFLE = 1003;
        MULLIGAN = 1004;
        ROLL_DIE = 1005;
        DRAW_CARDS = 1006;
        UNDO_DRAW = 1007;
        FLIP_CARD = 1008;
        ATTACH_CARD = 1009;
        CREATE_TOKEN = 1010;
        CREATE_ARROW = 1011;
        DELETE_ARROW = 1012;
        SET_CARD_ATTR = 1013;
        SET_CARD_COUNTER = 1014;
        INC_CARD_COUNTER = 1015;
        READY_START = 1016;
        CONCEDE = 1017;
        INC_COUNTER = 1018;
        CREATE_COUNTER = 1019;
        SET_COUNTER = 1020;
        DEL_COUNTER = 1021;
        NEXT_TURN = 1022;
        SET_ACTIVE_PHASE = 1023;
        DUMP_ZONE = 1024;
        // STOP_DUMP_ZONE = 1025; // obsolete
        REVEAL_CARDS = 1026;
        MOVE_CARD = 1027;
        SET_SIDEBOARD_PLAN = 1028;
        DECK_SELECT = 1029;
        SET_SIDEBOARD_LOCK = 1030;
        CHANGE_ZONE_PROPERTIES = 1031;
        UNCONCEDE = 1032;
        JUDGE = 1033;
        REVERSE_TURN = 1034;
    }
    extensions 100 to max;
}

message Command_Judge {
    extend GameCommand {
        optional Command_Judge ext = 1033;
    }
    optional sint32 target_id = 1 [default = -1];
    repeated GameCommand game_command = 2;
}
