package dota; import "dota_client_enums.proto"; option optimize_for = SPEED; option cc_generic_services = false; enum ETournamentEvent { k_ETournamentEvent_None = 0; k_ETournamentEvent_TournamentCreated = 1; k_ETournamentEvent_TournamentsMerged = 2; k_ETournamentEvent_GameOutcome = 3; k_ETournamentEvent_TeamGivenBye = 4; k_ETournamentEvent_TournamentCanceledByAdmin = 5; k_ETournamentEvent_TeamAbandoned = 6; k_ETournamentEvent_ScheduledGameStarted = 7; k_ETournamentEvent_Canceled = 8; k_ETournamentEvent_TeamParticipationTimedOut_EntryFeeRefund = 9; k_ETournamentEvent_TeamParticipationTimedOut_EntryFeeForfeit = 10; } message CMsgDOTATournamentInfo { message PhaseGroup { optional uint32 group_id = 1; optional string group_name = 2; } message Phase { optional uint32 phase_id = 1; optional string phase_name = 2; optional uint32 type_id = 3; optional uint32 iterations = 4; optional uint32 min_start_time = 5; optional uint32 max_start_time = 6; repeated CMsgDOTATournamentInfo.PhaseGroup group_list = 7; } message Team { optional uint32 team_id = 1; optional string name = 2; optional string tag = 3; optional uint64 team_logo = 4; optional bool eliminated = 5; } message UpcomingMatch { optional uint32 series_id = 1; optional uint32 team1_id = 2; optional uint32 team2_id = 3; optional uint32 bo = 4; optional string stage_name = 5; optional uint32 start_time = 6; optional string winner_stage = 7; optional string loser_stage = 8; optional string team1_tag = 9; optional string team2_tag = 10; optional string team1_prev_opponent_tag = 11; optional string team2_prev_opponent_tag = 12; optional uint64 team1_logo = 13; optional uint64 team2_logo = 14; optional uint64 team1_prev_opponent_logo = 15; optional uint64 team2_prev_opponent_logo = 16; optional uint32 team1_prev_opponent_id = 17; optional uint32 team2_prev_opponent_id = 18; optional uint32 team1_prev_match_score = 19; optional uint32 team1_prev_match_opponent_score = 20; optional uint32 team2_prev_match_score = 21; optional uint32 team2_prev_match_opponent_score = 22; optional uint32 phase_type = 23; optional uint32 team1_score = 24; optional uint32 team2_score = 25; } message News { optional string link = 1; optional string title = 2; optional string image = 3; optional uint32 timestamp = 4; } optional uint32 league_id = 1; repeated CMsgDOTATournamentInfo.Phase phase_list = 2; repeated CMsgDOTATournamentInfo.Team teams_list = 3; repeated CMsgDOTATournamentInfo.UpcomingMatch upcoming_matches_list = 4; repeated CMsgDOTATournamentInfo.News news_list = 5; } message CMsgRequestWeekendTourneySchedule { } message CMsgWeekendTourneySchedule { message Division { optional uint32 division_code = 1; optional uint32 time_window_open = 2; optional uint32 time_window_close = 3; optional uint32 time_window_open_next = 4; } repeated CMsgWeekendTourneySchedule.Division divisions = 1; } message CMsgWeekendTourneyOpts { optional bool participating = 1; optional uint32 division_id = 2; optional uint32 buyin = 3; optional uint32 skill_level = 4; optional uint32 match_groups = 5; optional uint32 team_id = 6; optional string pickup_team_name = 7; optional uint64 pickup_team_logo = 8; } message CMsgWeekendTourneyLeave { } message CMsgDOTATournament { message Team { optional fixed64 team_gid = 1; optional uint32 node_or_state = 2; repeated uint32 players = 3 [packed = true]; repeated uint32 player_buyin = 9 [packed = true]; repeated uint32 player_skill_level = 10 [packed = true]; optional uint32 match_group_mask = 12; optional uint32 team_id = 4; optional string team_name = 5; optional uint64 team_base_logo = 7; optional uint64 team_ui_logo = 8; optional uint32 team_date = 11; } message Game { optional uint32 node_idx = 1; optional fixed64 lobby_id = 2; optional uint64 match_id = 3; optional bool team_a_good = 4; optional ETournamentGameState state = 5 [default = k_ETournamentGameState_Unknown]; optional uint32 start_time = 6; } message Node { optional uint32 node_id = 1; optional uint32 team_idx_a = 2; optional uint32 team_idx_b = 3; optional ETournamentNodeState node_state = 4 [default = k_ETournamentNodeState_Unknown]; } optional uint32 tournament_id = 1; optional uint32 division_id = 2; optional uint32 schedule_time = 3; optional uint32 skill_level = 4; optional ETournamentTemplate tournament_template = 5 [default = k_ETournamentTemplate_None]; optional ETournamentState state = 6 [default = k_ETournamentState_Unknown]; optional uint32 state_seq_num = 10; optional uint32 season_trophy_id = 11; repeated CMsgDOTATournament.Team teams = 7; repeated CMsgDOTATournament.Game games = 8; repeated CMsgDOTATournament.Node nodes = 9; } message CMsgDOTATournamentStateChange { message GameChange { optional uint64 match_id = 1; optional ETournamentGameState new_state = 2 [default = k_ETournamentGameState_Unknown]; } message TeamChange { optional uint64 team_gid = 1; optional uint32 new_node_or_state = 2; optional uint32 old_node_or_state = 3; } optional uint32 new_tournament_id = 1; optional ETournamentEvent event = 2 [default = k_ETournamentEvent_None]; optional ETournamentState new_tournament_state = 3 [default = k_ETournamentState_Unknown]; repeated CMsgDOTATournamentStateChange.GameChange game_changes = 4; repeated CMsgDOTATournamentStateChange.TeamChange team_changes = 5; repeated uint32 merged_tournament_ids = 6 [packed = true]; optional uint32 state_seq_num = 7; } message CMsgDOTATournamentRequest { optional uint32 tournament_id = 1; optional uint64 client_tournament_gid = 2; } message CMsgDOTATournamentResponse { optional uint32 result = 1 [default = 2]; optional CMsgDOTATournament tournament = 2; } message CMsgDOTAClearTournamentGame { optional uint32 tournament_id = 1; optional uint32 game_id = 2; } message CMsgDOTAWeekendTourneyPlayerSkillLevelStats { optional uint32 skill_level = 1; optional uint32 times_won_0 = 2; optional uint32 times_won_1 = 3; optional uint32 times_won_2 = 4; optional uint32 times_won_3 = 5; optional uint32 times_bye_and_lost = 6; optional uint32 times_bye_and_won = 7; optional uint32 total_games_won = 8; optional uint32 score = 9; } message CMsgDOTAWeekendTourneyPlayerStats { optional uint32 account_id = 1; optional uint32 season_trophy_id = 2; repeated CMsgDOTAWeekendTourneyPlayerSkillLevelStats skill_levels = 3; optional uint32 current_tier = 4; } message CMsgDOTAWeekendTourneyPlayerStatsRequest { optional uint32 account_id = 1; optional uint32 season_trophy_id = 2; } message CMsgDOTAWeekendTourneyPlayerHistoryRequest { optional uint32 account_id = 1; optional uint32 season_trophy_id = 2; } message CMsgDOTAWeekendTourneyPlayerHistory { message Tournament { optional uint32 tournament_id = 1; optional uint32 start_time = 2; optional uint32 tournament_tier = 3; optional uint32 team_id = 4; optional uint32 team_date = 5; optional uint32 team_result = 6; repeated uint32 account_id = 7; optional string team_name = 8; } optional uint32 account_id = 1; optional uint32 season_trophy_id = 2; repeated CMsgDOTAWeekendTourneyPlayerHistory.Tournament tournaments = 3; } message CMsgDOTAWeekendTourneyParticipationDetails { message Tier { optional uint32 tier = 1; optional uint32 players = 2; optional uint32 teams = 3; optional uint32 winning_teams = 4; optional uint32 players_streak_2 = 5; optional uint32 players_streak_3 = 6; optional uint32 players_streak_4 = 7; optional uint32 players_streak_5 = 8; } message Division { optional uint32 division_id = 1; optional uint32 schedule_time = 2; repeated CMsgDOTAWeekendTourneyParticipationDetails.Tier tiers = 3; } repeated CMsgDOTAWeekendTourneyParticipationDetails.Division divisions = 1; }