package dota; import "steammessages.proto"; import "dota_shared_enums.proto"; import "dota_gcmessages_common.proto"; import "gcsdk_gcmessages.proto"; import "dota_gcmessages_common_match_management.proto"; option optimize_for = SPEED; option cc_generic_services = false; enum DOTA_WatchReplayType { DOTA_WATCH_REPLAY_NORMAL = 0; DOTA_WATCH_REPLAY_HIGHLIGHTS = 1; } enum EItemEditorReservationResult { k_EItemEditorReservationResult_OK = 1; k_EItemEditorReservationResult_AlreadyExists = 2; k_EItemEditorReservationResult_Reserved = 3; k_EItemEditorReservationResult_TimedOut = 4; } enum EFeaturedHeroTextField { k_EFeaturedHeroTextField_NewHero = 0; k_EFeaturedHeroTextField_NewItem = 1; k_EFeaturedHeroTextField_ItemSetDescription = 2; k_EFeaturedHeroTextField_ItemDescription = 3; k_EFeaturedHeroTextField_Hype = 4; k_EFeaturedHeroTextField_HeroWinLoss = 5; k_EFeaturedHeroTextField_FrequentlyPlayedHero = 6; k_EFeaturedHeroTextField_FeaturedItem = 7; k_EFeaturedHeroTextField_PopularItem = 8; k_EFeaturedHeroTextField_SaleItem = 9; k_EFeaturedHeroTextField_SaleDiscount = 10; k_EFeaturedHeroTextField_Container = 11; } enum EFeaturedHeroDataType { k_EFeaturedHeroDataType_HeroID = 0; k_EFeaturedHeroDataType_ItemDef = 1; k_EFeaturedHeroDataType_HypeString = 2; k_EFeaturedHeroDataType_StartTimestamp = 3; k_EFeaturedHeroDataType_ExpireTimestamp = 4; k_EFeaturedHeroDataType_HeroWins = 5; k_EFeaturedHeroDataType_HeroLosses = 6; k_EFeaturedHeroDataType_SaleDiscount = 7; k_EFeaturedHeroDataType_ContainerItemDef = 8; } enum EWeekendTourneyRichPresenceEvent { k_EWeekendTourneyRichPresenceEvent_None = 0; k_EWeekendTourneyRichPresenceEvent_StartedMatch = 1; k_EWeekendTourneyRichPresenceEvent_WonMatch = 2; k_EWeekendTourneyRichPresenceEvent_Eliminated = 3; } message CMsgClientSuspended { optional uint32 time_end = 1; } message CMsgRequestInternationalTicket { } message CMsgBalancedShuffleLobby { } message CMsgInitialQuestionnaireResponse { optional uint32 initial_skill = 1; } message CMsgDOTAPlayerMatchHistory { repeated uint64 match_ids = 1; } message CMsgDOTAMatchHistoryFilter { repeated uint64 match_ids = 1; optional uint64 newest_match_id_at_last_query = 2; optional uint32 time_last_query = 3; } message CMsgDOTARequestMatches { enum SkillLevel { Any = 0; Normal = 1; High = 2; VeryHigh = 3; } optional uint32 hero_id = 2; optional uint32 game_mode = 3; optional fixed32 date_min = 6; optional fixed32 date_max = 7; optional uint32 matches_requested = 10; optional uint64 start_at_match_id = 11; optional fixed32 min_players = 12; optional uint32 request_id = 13; optional bool tournament_games_only = 14; optional uint32 account_id = 15; optional uint32 league_id = 16; optional CMsgDOTARequestMatches.SkillLevel skill = 17 [default = Any]; optional uint32 team_id = 18; optional uint64 custom_game_id = 20; } message CMsgDOTARequestMatchesResponse { message Series { repeated CMsgDOTAMatch matches = 1; optional uint32 series_id = 2; optional uint32 series_type = 3; } repeated CMsgDOTAMatch matches = 1; repeated CMsgDOTARequestMatchesResponse.Series series = 2; optional uint32 request_id = 3; optional uint32 total_results = 4; optional uint32 results_remaining = 5; } message CMsgDOTAPopup { enum PopupID { NONE = -1; KICKED_FROM_LOBBY = 0; KICKED_FROM_PARTY = 1; KICKED_FROM_TEAM = 2; TEAM_WAS_DISBANDED = 3; TEAM_MATCHMAKE_ALREADY_MATCH = 4; TEAM_MATCHMAKE_ALREADY_FINDING = 5; TEAM_MATCHMAKE_FULL = 6; TEAM_MATCHMAKE_FAIL_ADD = 7; TEAM_MATCHMAKE_FAIL_ADD_CURRENT = 8; TEAM_MATCHMAKE_FAILED_TEAM_MEMBER = 9; TEAM_MATCHMAKE_ALREADY_GAME = 10; TEAM_MATCHMAKE_FAIL_GET_PARTY = 11; MATCHMAKING_DISABLED = 12; INVITE_DENIED = 13; PARTY_FULL = 14; MADE_ADMIN = 15; NEED_TO_PURCHASE = 16; SIGNON_MESSAGE = 17; GUILD_KICKED = 18; MATCHMAKING_REGION_OFFLINE = 19; TOURNAMENT_GAME_NOT_FOUND = 21; TOURNAMENT_GAME_HAS_LOBBY_ID = 22; TOURNAMENT_GAME_HAS_MATCH_ID = 23; TOURNAMENT_GAME_HAS_NO_RADIANT_TEAM = 24; TOURNAMENT_GAME_HAS_NO_DIRE_TEAM = 25; TOURNAMENT_GAME_SQL_UPDATE_FAILED = 26; NOT_LEAGUE_ADMIN = 27; IN_ANOTHER_GAME = 29; PARTY_MEMBER_IN_ANOTHER_GAME = 30; PARTY_MEMBER_IN_LOW_PRIORITY = 31; CLIENT_OUT_OF_DATE = 32; SAVE_GAME_CORRUPT = 38; INSUFFICIENT_INGOTS = 39; COMPETITIVE_MM_NOT_ENOUGH_SKILL_DATA_PLAY_MORE_CASUAL = 42; PARTY_LEADER_JOINED_LOBBY = 44; WEEKEND_TOURNEY_UNMATCHED = 48; POST_MATCH_SURVEY = 49; TROPHY_AWARDED = 50; TROPHY_LEVEL_UP = 51; ALL_HERO_CHALLENGE_PROGRESS = 52; NEED_INITIAL_SKILL = 53; NEED_INITIAL_SKILL_IN_PARTY = 54; TARGET_ENGINE_MISMATCH = 55; VAC_NOT_VERIFIED = 56; KICKED_FROM_QUEUE_EVENT_STARTING = 57; KICKED_FROM_QUEUE_EVENT_ENDING = 58; LOBBY_FULL = 62; EVENT_POINTS_EARNED = 63; CUSTOM_GAME_INCORRECT_VERSION = 64; LIMITED_USER_CHAT = 66; EVENT_PREMIUM_POINTS_EARNED = 67; LOBBY_MVP_AWARDED = 68; GENERIC_INFO = 69; GENERIC_ERROR = 70; } optional CMsgDOTAPopup.PopupID id = 1 [default = NONE]; optional string custom_text = 2; optional sint32 int_data = 3; optional bytes popup_data = 4; optional string loc_token_header = 5; optional string loc_token_msg = 6; repeated string var_names = 7; repeated string var_values = 8; optional string debug_text = 9; } message CMsgDOTAReportsRemainingRequest { } message CMsgDOTAReportsRemainingResponse { optional uint32 num_positive_reports_remaining = 1; optional uint32 num_negative_reports_remaining = 2; optional uint32 num_positive_reports_total = 3; optional uint32 num_negative_reports_total = 4; } message CMsgDOTASubmitPlayerReport { optional uint32 target_account_id = 1; optional uint32 report_flags = 2; optional uint64 lobby_id = 4; optional string comment = 5; } message CMsgDOTASubmitPlayerReportResponse { optional uint32 target_account_id = 1; optional uint32 report_flags = 2; optional uint32 result = 3; optional string debug_message = 4; } message CMsgDOTAReportCountsRequest { optional uint32 target_account_id = 1; } message CMsgDOTAReportCountsResponse { optional uint32 target_account_id = 1; optional uint32 leadership_count = 2; optional uint32 teaching_count = 3; optional uint32 friendly_count = 4; optional uint32 forgiving_count = 5; } message CMsgDOTASubmitLobbyMVPVote { optional uint32 target_account_id = 1; } message CMsgDOTASubmitLobbyMVPVoteResponse { optional uint32 target_account_id = 1; optional uint32 eresult = 2; } message CMsgDOTALobbyMVPNotifyRecipient { optional uint32 voter_account_id = 1; optional uint32 recipient_account_id = 2; optional uint32 num_votes = 3; } message CMsgDOTALobbyMVPAwarded { optional uint32 mvp_account_id = 1; } message CMsgDOTAKickedFromMatchmakingQueue { optional MatchType match_type = 1 [default = MATCH_TYPE_CASUAL]; } message CMsgDOTARequestSaveGames { optional uint32 server_region = 1; } message CMsgDOTARequestSaveGamesResponse { optional fixed64 steam_id = 1; repeated CDOTASaveGame save_games = 2; } message CMsgGCMatchDetailsRequest { optional uint64 match_id = 1; } message CMsgGCMatchDetailsResponse { optional uint32 result = 1; optional CMsgDOTAMatch match = 2; optional DOTAMatchVote vote = 3 [default = DOTAMatchVote_INVALID]; } message CMsgServerToGCMatchDetailsRequest { repeated uint64 match_ids = 1; } message CMsgGCToServerMatchDetailsResponse { repeated CMsgDOTAMatch matches = 1; } message CMsgDOTAProfileRequest { optional uint32 account_id = 1; optional bool request_name = 2; optional ESourceEngine engine = 3 [default = k_ESE_Source1]; } message CMsgDOTAProfileResponse { message PlayedHero { optional uint32 hero_id = 1; optional uint32 wins = 2; } message ShowcaseHero { optional uint32 hero_id = 1; repeated bytes object_data = 2; } message LeaguePass { optional uint32 league_id = 1; optional uint32 item_def = 2; } message EventTicket { optional uint32 event_id = 1; } message FeaturedItem { optional uint64 item_id = 1; optional bytes object_data = 2; optional uint32 slot_index = 3; } optional uint32 result = 1; optional CSODOTAGameAccountClient game_account_client = 2; repeated CMsgDOTAMatch latest_matches = 3; repeated CMsgDOTAProfileResponse.PlayedHero heroes = 4; optional string player_name = 5; optional string team_name = 6; optional string team_tag = 7; optional uint64 team_logo = 8; optional CMsgDOTAProfileResponse.ShowcaseHero showcase_hero = 9; repeated CMsgDOTAProfileResponse.LeaguePass league_passes = 10; repeated CMsgDOTAProfileResponse.EventTicket event_tickets = 11; optional uint32 team_id = 12; optional bool has_passport = 13; repeated CMsgDOTAProfileResponse.FeaturedItem featured_items = 14; optional uint32 abandon_percent = 15; } message CMsgDOTAProfileTickets { message LeaguePass { optional uint32 league_id = 1; optional uint32 item_def = 2; } message EventTicket { optional uint32 event_id = 1; } optional uint32 result = 1; optional uint32 account_id = 2; repeated CMsgDOTAProfileTickets.LeaguePass league_passes = 3; repeated CMsgDOTAProfileTickets.EventTicket event_tickets = 4; } message CMsgClientToGCGetProfileTickets { optional uint32 account_id = 1; } message CMsgGCSteamProfileRequest { optional uint32 account_id = 1; } message CMsgGCSteamProfileRequestResponse { optional uint32 result = 1; } message CMsgDOTAClearNotifySuccessfulReport { } message CMsgDOTAWelcome { message LocalizationDigest { optional string context = 1; optional CMsgSHA1Digest english_language_file_sha1 = 2; optional CMsgSHA1Digest client_language_file_sha1 = 3; } message CExtraMsg { optional uint32 id = 1; optional bytes contents = 2; } optional uint32 store_item_hash = 5; optional uint32 timeplayedconsecutively = 6; optional bool allow_3rd_party_match_history = 7; optional PartnerAccountType partner_account_type = 8 [default = PARTNER_NONE]; optional uint32 banned_word_list_word_id = 9; optional uint32 partner_account_state = 11; optional uint32 last_time_played = 12; optional uint32 last_ip_address = 13; optional uint32 shutdownlawterminateminutes = 15; optional uint32 banned_word_list_version = 16; optional bool profile_private = 17; optional uint32 currency = 18; optional uint32 bang_no = 19; optional bool should_request_player_origin = 20; optional uint64 compendium_unlocks = 21; optional uint32 gc_socache_file_version = 22; repeated CMsgDOTAWelcome.LocalizationDigest localization_digests = 23; optional bool is_perfect_world_test_account = 24; repeated EEvent active_events = 25; repeated CMsgDOTAWelcome.CExtraMsg extra_messages = 26; optional uint64 minimum_recent_item_id = 27; } message CSODOTAGameHeroFavorites { optional uint32 account_id = 1 [(key_field) = true]; optional uint32 hero_id = 2 [(key_field) = true]; } message CMsgDOTAHeroFavoritesAdd { optional uint32 hero_id = 1; } message CMsgDOTAHeroFavoritesRemove { optional uint32 hero_id = 1; } message CMsgSetShowcaseHero { optional uint32 showcase_hero_id = 1; } message CMsgSetFeaturedItems { repeated uint64 featured_item_id = 1; } message CMsgDOTAFeaturedItems { optional uint32 account_id = 1; repeated uint64 featured_item_id = 2; repeated bytes object_data = 3; } message CMsgRequestLeagueInfo { } message CDynamicLeagueData { optional uint32 league_id = 1; optional fixed32 last_match_time = 2; optional uint32 prize_pool_usd = 3; optional bool has_live_matches = 4; optional bool is_compendium_public = 5; optional uint32 compendium_version = 6; optional uint32 compendium_content_version = 7; } message CStaticLeagueData { optional uint32 league_id = 1; optional string name = 2; optional string description = 3; optional string banner_name = 4; optional string itemdef_name = 5; optional string url = 6; optional uint32 item_def_index = 7; optional uint32 hud_skin_item_def_index = 8; optional string loading_screen_name = 9; optional uint32 base_prize_pool = 10; optional bool is_major = 11; optional uint32 sort_order = 12; optional uint32 tier = 13; optional uint32 amateur_region = 14; optional string organizer = 15; optional uint32 start_date = 16; optional uint32 end_date = 17; optional string location = 18; optional string inventory_image = 19; optional string square_image = 20; } message CLeagueData { optional CDynamicLeagueData dynamic_data = 1; optional CStaticLeagueData static_data = 2; optional bool is_owned = 3; } message CMsgResponseLeagueInfo { repeated CDynamicLeagueData leagues = 1; } message CMsgDOTAMatchVotes { message PlayerVote { optional uint32 account_id = 1; optional uint32 vote = 2; } optional uint64 match_id = 1; repeated CMsgDOTAMatchVotes.PlayerVote votes = 2; } message CMsgCastMatchVote { optional uint64 match_id = 1; optional DOTAMatchVote vote = 2 [default = DOTAMatchVote_INVALID]; } message CMsgRetrieveMatchVote { optional uint64 match_id = 1; optional uint32 incremental = 2; } message CMsgMatchVoteResponse { optional uint32 eresult = 1 [default = 2]; optional DOTAMatchVote vote = 2 [default = DOTAMatchVote_INVALID]; optional uint32 positive_votes = 3; optional uint32 negative_votes = 4; } message CMsgDOTAHallOfFame { message FeaturedPlayer { optional uint32 account_id = 1; optional uint32 hero_id = 2; optional float average_scaled_metric = 3; optional uint32 num_games = 4; } message FeaturedFarmer { optional uint32 account_id = 1; optional uint32 hero_id = 2; optional uint32 gold_per_min = 3; optional uint64 match_id = 4; } optional uint32 week = 1; repeated CMsgDOTAHallOfFame.FeaturedPlayer featured_players = 2; optional CMsgDOTAHallOfFame.FeaturedFarmer featured_farmer = 3; } message CMsgDOTAHallOfFameRequest { optional uint32 week = 1; } message CMsgDOTAHallOfFameResponse { optional CMsgDOTAHallOfFame hall_of_fame = 1; optional uint32 eresult = 2 [default = 2]; } message CMsgDOTAHalloweenHighScoreRequest { optional int32 round = 1 [default = -1]; } message CMsgDOTAHalloweenHighScoreResponse { optional uint32 score = 1; optional CMsgDOTAMatch match = 2; optional uint32 eresult = 3; optional int32 round = 4; } message CMsgDOTAStorePromoPagesRequest { optional uint32 version_seen = 1; } message CMsgDOTAStorePromoPagesResponse { message PromoPage { optional uint32 promo_id = 1; optional string title = 2; optional string url = 3; } repeated CMsgDOTAStorePromoPagesResponse.PromoPage pages = 1; } message CMsgLeagueScheduleBlockTeamInfo { optional uint32 team_id = 1; optional string name = 2; optional uint64 logo = 4; } message CMsgLeagueScheduleBlock { optional uint32 block_id = 1; optional uint32 start_time = 2; optional bool finals = 4; optional string comment = 5; repeated CMsgLeagueScheduleBlockTeamInfo teams = 6; } message CMsgDOTALeague { optional uint32 league_id = 1; repeated CMsgLeagueScheduleBlock schedule = 2; } message CMsgDOTALeagueScheduleRequest { optional uint32 league_id = 1; } message CMsgDOTALeagueScheduleResponse { optional CMsgDOTALeague league = 1; optional uint32 eresult = 2 [default = 2]; } message CMsgDOTALeagueScheduleEdit { optional uint32 league_id = 1; optional CMsgLeagueScheduleBlock schedule = 2; optional bool delete_block = 3; } message CMsgDOTALeagueScheduleEditResponse { optional CMsgDOTALeague league = 1; optional uint32 eresult = 2 [default = 2]; } message CMsgDOTALeaguesInMonthRequest { optional uint32 month = 1; optional uint32 year = 2; optional uint32 tier = 3; } message CMsgDOTALeaguesInMonthResponse { optional uint32 eresult = 1 [default = 2]; optional uint32 month = 2; optional uint32 year = 3; repeated CMsgDOTALeague leagues = 4; } message CMsgMatchmakingMatchGroupInfo { optional uint32 players_searching = 1; optional sint32 auto_region_select_ping_penalty = 2; optional EMatchGroupServerStatus status = 3 [default = k_EMatchGroupServerStatus_OK]; } message CMsgDOTAMatchmakingStatsRequest { } message CMsgDOTAMatchmakingStatsResponse { optional uint32 matchgroups_version = 1; repeated uint32 legacy_searching_players_by_group_source2 = 7; repeated CMsgMatchmakingMatchGroupInfo match_groups = 8; } message CMsgDOTAUpdateMatchmakingStats { optional CMsgDOTAMatchmakingStatsResponse stats = 1; } message CMsgDOTAUpdateMatchManagementStats { optional CMsgDOTAMatchmakingStatsResponse stats = 1; } message CMsgDOTASetMatchHistoryAccess { optional bool allow_3rd_party_match_history = 1; } message CMsgDOTASetMatchHistoryAccessResponse { optional uint32 eresult = 1 [default = 2]; } message CMsgDOTANotifyAccountFlagsChange { optional uint32 accountid = 1; optional uint32 account_flags = 2; } message CMsgDOTASetProfilePrivacy { optional bool profile_private = 1; } message CMsgDOTASetProfilePrivacyResponse { optional uint32 eresult = 1; } message CMsgUpgradeLeagueItem { optional uint64 match_id = 1; optional uint32 league_id = 2; } message CMsgUpgradeLeagueItemResponse { } message CMsgGCWatchDownloadedReplay { optional uint64 match_id = 1; optional DOTA_WatchReplayType watch_type = 2 [default = DOTA_WATCH_REPLAY_NORMAL]; } message CMsgSetMapLocationState { optional int32 location_id = 1; optional bool completed = 2; } message CMsgSetMapLocationStateResponse { optional uint32 eresult = 1 [default = 2]; } message CMsgResetMapLocations { } message CMsgResetMapLocationsResponse { optional uint32 eresult = 1 [default = 2]; } message CMsgRefreshPartnerAccountLink { optional int32 partner_type = 1; } message CMsgClientsRejoinChatChannels { } message CMsgDOTASendFriendRecruits { repeated uint32 recruits = 1; } message CMsgDOTAFriendRecruitsRequest { repeated uint32 account_ids = 1; } message CMsgDOTAFriendRecruitsResponse { message FriendRecruitStatus { optional uint32 account_id = 1; optional uint32 status = 2; optional uint32 levels_earned = 3; optional bool bonus = 4; } enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; } optional CMsgDOTAFriendRecruitsResponse.EResult result = 1 [default = SUCCESS]; repeated CMsgDOTAFriendRecruitsResponse.FriendRecruitStatus recruits = 2; repeated CMsgDOTAFriendRecruitsResponse.FriendRecruitStatus recruiters = 3; } message CMsgDOTAFriendRecruitInviteAcceptDecline { optional bool accepted = 1; optional uint32 account_id = 2; } message CMsgRequestLeaguePrizePool { optional uint32 league_id = 1; } message CMsgRequestLeaguePrizePoolResponse { optional uint32 league_id = 1; optional uint32 prize_pool = 2; } message CMsgGCGetHeroStandings { } message CMsgGCGetHeroStandingsResponse { message Hero { optional uint32 hero_id = 1; optional uint32 wins = 2; optional uint32 losses = 3; optional uint32 win_streak = 4; optional uint32 best_win_streak = 5; optional float avg_kills = 6; optional float avg_deaths = 7; optional float avg_assists = 8; optional float avg_gpm = 9; optional float avg_xpm = 10; optional uint32 best_kills = 11; optional uint32 best_assists = 12; optional uint32 best_gpm = 13; optional uint32 best_xpm = 14; optional float performance = 15; } repeated CMsgGCGetHeroStandingsResponse.Hero standings = 1; } message CMsgGCItemEditorReservationsRequest { } message CMsgGCItemEditorReservation { optional uint32 def_index = 1; optional string name = 2; } message CMsgGCItemEditorReservationsResponse { repeated CMsgGCItemEditorReservation reservations = 1; } message CMsgGCItemEditorReserveItemDef { optional uint32 def_index = 1; optional string username = 2; } message CMsgGCItemEditorReserveItemDefResponse { optional uint32 def_index = 1; optional string username = 2; optional uint32 result = 3; } message CMsgGCItemEditorReleaseReservation { optional uint32 def_index = 1; optional string username = 2; } message CMsgGCItemEditorReleaseReservationResponse { optional uint32 def_index = 1; optional bool released = 2; } message CMsgGCItemEditorRequestLeagueInfo { optional uint32 league_id = 1; } message CMsgGCItemEditorLeagueInfoResponse { optional uint32 league_id = 1; optional string league_name = 2; optional string league_desc = 3; optional string league_url = 4; optional string revenue_url = 5; optional uint32 tier = 6; optional uint32 location = 7; optional uint32 result = 8; } message CMsgDOTARewardTutorialPrizes { optional uint32 location_id = 1; optional bool tracking_only = 2; } message CMsgDOTALastHitChallengeHighScorePost { optional uint32 hero_id = 1; optional uint32 high_score = 2; } message CMsgDOTALastHitChallengeHighScoreRequest { optional uint32 hero_id = 1; } message CMsgDOTALastHitChallengeHighScoreResponse { optional uint32 score = 1; optional uint32 eresult = 2; } message CMsgFlipLobbyTeams { } message CMsgPresentedClientTerminateDlg { } message CMsgGCLobbyUpdateBroadcastChannelInfo { optional uint32 channel_id = 1; optional string country_code = 2; optional string description = 3; optional string language_code = 4; } message CMsgDOTARedeemEventPrize { optional uint32 prize_id = 1; optional uint32 event_id = 2; optional uint32 quantity = 3 [default = 1]; } message CMsgDOTARedeemEventPrizeResponse { enum ResultCode { Success = 0; ServerError = 1; InsufficientPoints = 2; PointsHeld = 3; } optional CMsgDOTARedeemEventPrizeResponse.ResultCode result = 1 [default = Success]; optional uint32 remaining_points = 2; optional uint32 remaining_premium_points = 3; optional uint32 event_id = 4; } message CMsgDOTAGetEventPoints { optional uint32 event_id = 1; optional uint32 account_id = 2; } message CMsgDOTAGetEventPointsResponse { message Action { optional uint32 action_id = 1; optional uint32 times_completed = 2 [default = 1]; } optional uint32 total_points = 1; optional uint32 total_premium_points = 2; optional uint32 event_id = 3; optional uint32 points = 4; optional uint32 premium_points = 5; repeated CMsgDOTAGetEventPointsResponse.Action completed_actions = 6; optional uint32 account_id = 7; optional bool owned = 8; optional uint32 audit_action = 9; optional uint32 wager_tokens_remaining = 10; } message CMsgDOTALiveLeagueGameUpdate { optional uint32 live_league_games = 1; } message CMsgDOTACompendiumSelection { optional uint32 selection_index = 1; optional uint32 selection = 2; optional uint32 leagueid = 3; } message CMsgDOTACompendiumSelectionResponse { optional uint32 eresult = 1 [default = 2]; repeated CMsgDOTACompendiumSelection extra_selections = 2; } message CMsgDOTACompendiumData { repeated CMsgDOTACompendiumSelection selections = 1; } message CMsgDOTACompendiumDataRequest { optional uint32 account_id = 1; optional uint32 leagueid = 2; } message CMsgDOTACompendiumDataResponse { optional uint32 account_id = 1; optional uint32 leagueid = 2; optional uint32 result = 3 [default = 2]; optional CMsgDOTACompendiumData compendium_data = 4; } message CMsgDOTAGetPlayerMatchHistory { optional uint32 account_id = 1; optional uint64 start_at_match_id = 2; optional uint32 matches_requested = 3; optional uint32 hero_id = 4; optional uint32 request_id = 5; optional bool include_practice_matches = 7; optional bool include_custom_games = 8; } message CMsgDOTAGetPlayerMatchHistoryResponse { message Match { optional uint64 match_id = 1; optional uint32 start_time = 2; optional uint32 hero_id = 3; optional bool winner = 4; optional uint32 game_mode = 5; optional int32 rank_change = 6; optional uint32 previous_rank = 7; optional uint32 lobby_type = 8; optional bool solo_rank = 9; optional bool abandon = 10; optional uint32 duration = 11; optional uint32 engine = 12; optional bool active_battle_pass = 13; optional bool seasonal_rank = 14; optional uint32 tourney_id = 15; optional uint32 tourney_round = 16; optional uint32 tourney_tier = 17; optional uint32 tourney_division = 18; optional uint32 team_id = 19; optional string team_name = 20; optional uint64 ugc_team_ui_logo = 21; } repeated CMsgDOTAGetPlayerMatchHistoryResponse.Match matches = 1; optional uint32 request_id = 2; } message CMsgDOTAStartDailyHeroChallenge { } message CMsgGCNotificationsRequest { } message CMsgGCNotificationsResponse { message Notification { optional uint64 id = 1; optional uint32 type = 2; optional uint32 timestamp = 3; optional uint32 reference_a = 4; optional uint32 reference_b = 5; optional uint32 reference_c = 6; optional string message = 7; optional bool unread = 8; } enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; } optional CMsgGCNotificationsResponse.EResult result = 1 [default = SUCCESS]; repeated CMsgGCNotificationsResponse.Notification notifications = 2; } message CMsgGCNotificationsMarkReadRequest { } message CMsgClientToGCMarkNotificationListRead { repeated uint64 notification_ids = 1; } message CMsgGCLeagueAdminState { message PrivateLeagueKeys { optional uint32 leagueid = 1; optional uint32 privatekey = 2; } repeated uint32 leagues = 1; repeated CMsgGCLeagueAdminState.PrivateLeagueKeys keys = 2; } message CMsgGCPlayerInfoRequest { message PlayerInfo { optional uint32 account_id = 1; optional uint32 timestamp = 2; } repeated CMsgGCPlayerInfoRequest.PlayerInfo player_infos = 1; } message CMsgGCPlayerInfoSubmit { optional string name = 1; optional string country_code = 2; optional uint32 fantasy_role = 3; optional uint32 team_id = 4; optional string sponsor = 5; } message CMsgGCPlayerInfoSubmitResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_INFO_LOCKED = 2; } optional CMsgGCPlayerInfoSubmitResponse.EResult result = 1 [default = SUCCESS]; } message CMsgClientProvideSurveyResult { message Response { optional uint32 question_id = 1; optional uint32 survey_value = 2; } repeated CMsgClientProvideSurveyResult.Response responses = 1; optional uint64 survey_key = 2; } message CMsgDOTAEmoticonAccessSDO { optional uint32 account_id = 1; optional bytes unlocked_emoticons = 2; } message CMsgClientToGCEmoticonDataRequest { } message CMsgGCToClientEmoticonData { optional CMsgDOTAEmoticonAccessSDO emoticon_access = 1; } message CMsgClientToGCTrackDialogResult { optional uint32 dialog_id = 1; optional uint32 value = 2; } message CMsgGCToClientTournamentItemDrop { optional uint32 item_def = 1; optional uint32 event_type = 2; } message CMsgClientToGCSetAdditionalEquips { repeated CAdditionalEquipSlot equips = 1; } message CMsgClientToGCSetAdditionalEquipsResponse { } message CMsgClientToGCGetAdditionalEquips { } message CMsgClientToGCGetAdditionalEquipsResponse { repeated CAdditionalEquipSlot equips = 1; } message CMsgClientToGCGetAllHeroOrder { } message CMsgClientToGCGetAllHeroOrderResponse { repeated uint32 hero_ids = 1; } message CMsgClientToGCGetAllHeroProgress { optional uint32 account_id = 1; } message CMsgClientToGCGetAllHeroProgressResponse { optional uint32 account_id = 1; optional uint32 curr_hero_id = 2; optional uint32 laps_completed = 3; optional uint32 curr_hero_games = 4; optional uint32 curr_lap_time_started = 5; optional uint32 curr_lap_games = 6; optional uint32 best_lap_games = 7; optional uint32 best_lap_time = 8; optional uint32 lap_heroes_completed = 9; optional uint32 lap_heroes_remaining = 10; optional uint32 next_hero_id = 11; optional uint32 prev_hero_id = 12; optional uint32 prev_hero_games = 13; optional float prev_avg_tries = 14; optional float curr_avg_tries = 15; optional float next_avg_tries = 16; optional float full_lap_avg_tries = 17; optional float curr_lap_avg_tries = 18; optional string profile_name = 19; optional uint32 start_hero_id = 20; } message CMsgClientToGCGetTrophyList { optional uint32 account_id = 1; } message CMsgClientToGCGetTrophyListResponse { message Trophy { optional uint32 trophy_id = 1; optional uint32 trophy_score = 2; optional uint32 last_updated = 3; } optional uint32 account_id = 1; repeated CMsgClientToGCGetTrophyListResponse.Trophy trophies = 2; optional string profile_name = 3; } message CMsgGCToClientTrophyAwarded { optional uint32 trophy_id = 1; optional uint32 trophy_score = 2; optional uint32 trophy_old_score = 3; optional uint32 last_updated = 4; } message CMsgClientToGCGetProfileCard { optional uint32 account_id = 1; } message CMsgClientToGCSetProfileCardSlots { message CardSlot { optional uint32 slot_id = 1; optional EProfileCardSlotType slot_type = 2 [default = k_EProfileCardSlotType_Empty]; optional uint64 slot_value = 3; } repeated CMsgClientToGCSetProfileCardSlots.CardSlot slots = 1; } message CMsgClientToGCGetProfileCardStats { } message CMsgClientToGCCreateHeroStatue { optional uint64 source_item = 1; optional uint32 hero_id = 3; optional string sequence_name = 4; optional float cycle = 5; repeated uint32 wearables = 6; optional string inscription = 7; repeated uint32 styles = 8; optional uint64 reforger_item = 9; optional bool tournament_drop = 10; } message CMsgGCToClientHeroStatueCreateResult { optional uint64 resulting_item = 1; } message CMsgClientToGCRecordCompendiumStats { optional uint32 league_id = 1; optional uint32 view_duration_s = 2; optional uint32 videos_viewed = 3; optional uint32 page_turns = 4; optional uint32 links_followed = 5; } message CMsgGCToClientEventStatusChanged { repeated EEvent active_events = 1; } message CMsgClientToGCPlayerStatsRequest { optional uint32 account_id = 1; } message CMsgGCToClientPlayerStatsResponse { optional uint32 account_id = 1; repeated float player_stats = 2; optional uint32 match_count = 3; optional float mean_gpm = 4; optional float mean_xppm = 5; optional float mean_lasthits = 6; optional uint32 rampages = 7; optional uint32 triple_kills = 8; optional uint32 first_blood_claimed = 9; optional uint32 first_blood_given = 10; optional uint32 couriers_killed = 11; optional uint32 aegises_snatched = 12; optional uint32 cheeses_eaten = 13; optional uint32 creeps_stacked = 14; optional float fight_score = 15; optional float farm_score = 16; optional float support_score = 17; optional float push_score = 18; optional float versatility_score = 19; } message CMsgClientToGCCustomGamePlayerCountRequest { optional uint64 custom_game_id = 1; } message CMsgGCToClientCustomGamePlayerCountResponse { optional uint64 custom_game_id = 1; optional uint64 player_count = 2; optional uint64 spectator_count = 3; } message CMsgClientToGCCustomGamesFriendsPlayedRequest { } message CMsgGCToClientCustomGamesFriendsPlayedResponse { message CustomGame { optional uint64 custom_game_id = 1; repeated uint32 account_ids = 2; } optional uint32 account_id = 1; repeated CMsgGCToClientCustomGamesFriendsPlayedResponse.CustomGame games = 2; } message CMsgClientToGCSocialFeedPostCommentRequest { optional uint64 event_id = 1; optional string comment = 2; } message CMsgGCToClientSocialFeedPostCommentResponse { optional bool success = 1; } message CMsgClientToGCSocialFeedPostMessageRequest { optional string message = 1; optional uint64 match_id = 2; optional uint32 match_timestamp = 3; } message CMsgGCToClientSocialFeedPostMessageResponse { optional bool success = 1; } message CMsgClientToGCFriendsPlayedCustomGameRequest { optional uint64 custom_game_id = 1; } message CMsgGCToClientFriendsPlayedCustomGameResponse { optional uint64 custom_game_id = 1; repeated uint32 account_ids = 2; } message CMsgClientToGCFeaturedHeroesRequest { } message CMsgGCToClientFeaturedHeroesResponse { message DataField { optional EFeaturedHeroDataType data_type = 1 [default = k_EFeaturedHeroDataType_HeroID]; optional uint32 uint32_value = 2; optional uint64 uint64_value = 3; optional string string_value = 4; optional float float_value = 5; } message FeaturedHero { repeated CMsgGCToClientFeaturedHeroesResponse.DataField data_fields = 1; } message Category { optional int32 category_weight = 1; repeated EFeaturedHeroTextField text_fields = 2; repeated CMsgGCToClientFeaturedHeroesResponse.FeaturedHero featured_heroes = 3; } repeated CMsgGCToClientFeaturedHeroesResponse.Category categories = 1; } message CMsgClientToGCSocialMatchPostCommentRequest { optional uint64 match_id = 1; optional string comment = 2; } message CMsgGCToClientSocialMatchPostCommentResponse { optional bool success = 1; } message CMsgClientToGCSocialMatchDetailsRequest { optional uint64 match_id = 1; optional uint32 pagination_timestamp = 2; } message CMsgGCToClientSocialMatchDetailsResponse { message Comment { optional uint32 account_id = 1; optional string persona_name = 2; optional uint32 timestamp = 3; optional string comment = 4; } optional bool success = 1; repeated CMsgGCToClientSocialMatchDetailsResponse.Comment comments = 2; } message CMsgDOTAPartyRichPresence { message Member { optional fixed64 steam_id = 1; optional bool coach = 2; } message WeekendTourney { optional uint32 division = 1; optional uint32 skill_level = 2; optional uint32 round = 3; optional uint32 tournament_id = 4; optional uint32 state_seq_num = 5; optional EWeekendTourneyRichPresenceEvent event = 6 [default = k_EWeekendTourneyRichPresenceEvent_None]; optional uint32 event_round = 7; } optional fixed64 party_id = 1; optional CSODOTAParty.State party_state = 2 [default = UI]; optional bool open = 3; optional bool low_priority = 5; optional uint32 team_id = 7; optional string team_name = 8; optional uint64 ugc_team_ui_logo = 9; repeated CMsgDOTAPartyRichPresence.Member members = 4; optional CMsgDOTAPartyRichPresence.WeekendTourney weekend_tourney = 6; } message CMsgDOTALobbyRichPresence { optional fixed64 lobby_id = 1; optional CSODOTALobby.State lobby_state = 2 [default = UI]; optional bool password = 3; optional DOTA_GameMode game_mode = 4 [default = DOTA_GAMEMODE_NONE]; optional uint32 member_count = 5; optional uint32 max_member_count = 6; optional fixed64 custom_game_id = 7; optional string name = 8; optional uint32 lobby_type = 9; } message CMsgDOTACustomGameListenServerStartedLoading { optional fixed64 lobby_id = 1; optional uint64 custom_game_id = 2; repeated uint32 lobby_members = 3; optional uint32 start_time = 4; } message CMsgDOTACustomGameClientFinishedLoading { optional fixed64 lobby_id = 1; optional uint32 loading_duration = 2; optional sint32 result_code = 3; optional string result_string = 4; optional uint32 signon_states = 5; optional string comment = 6; } message CMsgClientToGCGetLeagueSeries { optional uint32 league_id = 1; } message CMsgClientToGCGetLeagueSeriesResponse { message Series { message Team { optional uint32 team_id = 1; optional string team_name = 2; optional string team_tag = 3; optional uint32 team_score = 4; optional uint32 team_wins = 5; } optional uint32 series_id = 1; optional uint32 num_games = 2; repeated CMsgClientToGCGetLeagueSeriesResponse.Series.Team teams = 3; optional string series_name = 4; optional string phase_name = 5; optional uint32 start_time = 6; optional uint32 after_series_id = 7; optional uint32 num_completed_games = 8; } repeated CMsgClientToGCGetLeagueSeriesResponse.Series series = 1; } message CMsgClientToGCApplyGemCombiner { optional uint64 item_id_1 = 1; optional uint64 item_id_2 = 2; } message CMsgClientToGCH264Unsupported { } message CMsgClientToGCRequestH264Support { } message CMsgClientToGCGetQuestProgress { repeated uint32 quest_ids = 1; } message CMsgClientToGCGetQuestProgressResponse { message Challenge { optional uint32 challenge_id = 1; optional uint32 time_completed = 2; optional uint32 attempts = 3; optional uint32 hero_id = 4; optional uint32 challenge_type = 5; optional uint32 quest_rank = 6; } message Quest { optional uint32 quest_id = 1; repeated CMsgClientToGCGetQuestProgressResponse.Challenge completed_challenges = 2; } optional bool success = 1; repeated CMsgClientToGCGetQuestProgressResponse.Quest quests = 2; } message CMsgGCToClientMatchSignedOut { optional uint64 match_id = 1; } message CMsgGCGetHeroStatsHistory { optional uint32 hero_id = 1; } message CMsgGCGetHeroStatsHistoryResponse { optional uint32 hero_id = 1; repeated CMsgDOTASDOHeroStatsHistory records = 2; } message CMsgPlayerConductScorecardRequest { } message CMsgPlayerConductScorecard { optional uint32 account_id = 1; optional uint64 match_id = 2; optional uint32 seq_num = 3; optional uint32 reasons = 4; optional uint32 matches_in_report = 5; optional uint32 matches_clean = 6; optional uint32 matches_reported = 7; optional uint32 matches_abandoned = 8; optional uint32 reports_count = 9; optional uint32 reports_parties = 10; optional uint32 commend_count = 11; optional uint32 end_score = 13; optional uint32 date = 14; } message CMsgClientToGCWageringRequest { optional uint32 event_id = 1; } message CMsgGCToClientWageringResponse { optional uint32 coins_remaining = 1; optional uint32 total_points_won = 2; optional uint32 total_points_wagered = 3; optional uint32 total_points_tipped = 4; optional uint32 success_rate = 5; optional uint32 total_games_wagered = 6; optional uint32 coins_max = 7; } message CMsgGCToClientWageringUpdate { optional uint32 event_id = 1; optional CMsgGCToClientWageringResponse wagering_info = 2; } message CMsgGCToClientArcanaVotesUpdate { optional uint32 event_id = 1; optional CMsgClientToGCRequestArcanaVotesRemainingResponse arcana_votes = 2; } message CMsgClientToGCMysteryItem { optional uint32 event_id = 1; optional uint32 action_id = 2; } message CMsgGCToClientMysteryItemResponse { enum Result { SUCCESS = 0; FAILURE_SDO_LOAD = 1; FAILURE_NO_ACTIONS = 2; FAILURE_NO_LOOTLIST = 3; FAILURE_EMPTY_LOOTLIST = 4; FAILURE_NO_ITEM_GENERATED = 5; FAILURE_SQL_COMMIT = 6; FAILURE_EVENT_NOT_OWNED = 7; FAILURE_INVALID_ACTION = 8; FAILURE_ALREADY_GRANTED = 9; } optional CMsgGCToClientMysteryItemResponse.Result result = 1 [default = SUCCESS]; optional uint32 reward_type = 2; optional uint32 itemdef = 3; } message CMsgClientToGCGetEventGoals { repeated EEvent event_ids = 1; } message CMsgEventGoals { message EventGoal { optional EEvent event_id = 1 [default = EVENT_ID_NONE]; optional uint32 goal_id = 2; optional uint64 value = 3; } repeated CMsgEventGoals.EventGoal event_goals = 1; } message CMsgGCToGCLeaguePredictions { optional uint32 league_id = 1; } message CMsgPredictionRankings { message PredictionLine { optional uint32 answer_id = 1; optional string answer_name = 2; optional uint64 answer_logo = 3; optional float answer_value = 4; } message Prediction { optional uint32 selection_id = 1; repeated CMsgPredictionRankings.PredictionLine prediction_lines = 2; } repeated CMsgPredictionRankings.Prediction predictions = 1; } message CMsgPredictionResults { message ResultBreakdown { optional uint32 answer_selection = 2; optional float answer_value = 3; } message Result { optional uint32 selection_id = 1; repeated CMsgPredictionResults.ResultBreakdown result_breakdown = 2; } repeated CMsgPredictionResults.Result results = 1; } message CMsgClientToGCSuspiciousActivity { optional uint64 app_data = 1; } message CMsgClientToGCHasPlayerVotedForMVP { optional uint64 match_id = 1; } message CMsgClientToGCHasPlayerVotedForMVPResponse { optional bool result = 1; } message CMsgClientToGCVoteForMVP { optional uint64 match_id = 1; optional uint32 account_id = 3; } message CMsgClientToGCVoteForMVPResponse { optional bool result = 1; } message CMsgMVPVotesForMatch { message Player { optional uint32 account_id = 1; optional uint32 vote_count = 2; } repeated CMsgMVPVotesForMatch.Player players = 1; } message CMsgLeaguePrizePool { optional uint32 prize_pool = 1; optional float increment_per_second = 2; } message CMsgClientToGCTeammateStatsRequest { } message CMsgClientToGCTeammateStatsResponse { message TeammateStat { optional uint32 account_id = 1; optional uint32 games = 2; optional uint32 wins = 3; optional uint32 most_recent_game_timestamp = 4; optional uint64 most_recent_game_match_id = 5; optional float performance = 100; } optional bool success = 1; repeated CMsgClientToGCTeammateStatsResponse.TeammateStat teammate_stats = 2; } message CMsgClientToGCVoteForArcana { message MatchVote { optional uint64 match_id = 1; optional uint32 hero_id = 2; optional uint32 vote_count = 3; } repeated CMsgClientToGCVoteForArcana.MatchVote matches = 1; } message CMsgClientToGCVoteForArcanaResponse { enum Result { SUCCEEDED = 0; VOTING_NOT_ENABLED_FOR_ROUND = 1; UNKNOWN_FAILURE = 2; } optional CMsgClientToGCVoteForArcanaResponse.Result result = 1 [default = SUCCEEDED]; } message CMsgArcanaVotes { message Match { optional uint32 match_id = 1; optional uint32 hero_id_0 = 2; optional uint32 hero_id_1 = 3; optional uint32 hero_seeding_0 = 4; optional uint32 hero_seeding_1 = 5; optional uint32 vote_count_0 = 6; optional uint32 vote_count_1 = 7; optional uint32 voting_state = 8; optional uint32 round_number = 9; optional bool is_votes_hidden = 10; optional uint32 calibration_time_remaining = 11; } enum VotingState { FINISHED = 0; IN_PROGRESS = 1; IN_FUTURE = 2; } repeated CMsgArcanaVotes.Match matches = 1; optional uint32 round_time_remaining = 2; optional uint32 round_number = 3; optional uint32 voting_state = 4; optional bool is_current_round_calibrating = 5; optional uint32 closest_active_match_id = 6; } message CMsgClientToGCRequestArcanaVotesRemaining { } message CMsgClientToGCRequestArcanaVotesRemainingResponse { message MatchVote { optional uint64 match_id = 1; optional uint32 hero_id = 2; optional uint32 vote_count = 3; } optional bool result = 1; optional uint32 votes_remaining = 2; optional uint32 votes_total = 3; repeated CMsgClientToGCRequestArcanaVotesRemainingResponse.MatchVote matches_previously_voted_for = 4; } message CMsgClientToGCRequestEventPointLog { optional uint32 event_id = 1; } message CMsgClientToGCRequestEventPointLogResponse { message QuestChallengeEvent { optional uint32 quest_id = 1; optional uint32 challenge_id = 2; optional uint32 rank = 3; } message WagerWonEvent { optional uint64 match_id = 1; } message TipGivenEvent { optional uint32 recipient_account_id = 1; optional string recipient_name = 2; } message TipReceivedEvent { optional uint32 giver_account_id = 1; optional string giver_name = 2; } message RecycledItemEvent { optional uint32 recipe_item_def_index = 1; } message AchievementEvent { optional uint32 action_id = 1; } message MysteryItemReceivedEvent { optional bool community_goal_item = 1; } message CorrectPredictionEvent { optional uint32 prediction_id = 1; } message InGamePredictionCorrectEvent { optional uint64 match_id = 1; } message WeekendTourneyPayoutEvent { optional uint64 team_gid = 1; } message EventPointTransaction { optional uint32 time = 1; optional int32 event_points = 2; optional bool compendium_activated_event = 3; optional bool point_item_used_event = 4; optional CMsgClientToGCRequestEventPointLogResponse.WagerWonEvent wager_won_event = 5; optional CMsgClientToGCRequestEventPointLogResponse.MysteryItemReceivedEvent mystery_item_received_event = 6; optional CMsgClientToGCRequestEventPointLogResponse.QuestChallengeEvent quest_challenge_event = 7; optional CMsgClientToGCRequestEventPointLogResponse.TipGivenEvent tip_given_event = 8; optional CMsgClientToGCRequestEventPointLogResponse.TipReceivedEvent tip_received_event = 9; optional CMsgClientToGCRequestEventPointLogResponse.RecycledItemEvent recycled_item_event = 10; optional CMsgClientToGCRequestEventPointLogResponse.AchievementEvent achievement_event = 11; optional CMsgClientToGCRequestEventPointLogResponse.InGamePredictionCorrectEvent in_game_prediction_event = 12; optional CMsgClientToGCRequestEventPointLogResponse.CorrectPredictionEvent prediction_event = 13; optional CMsgClientToGCRequestEventPointLogResponse.WeekendTourneyPayoutEvent weekend_tourney_payout_event = 14; } optional bool result = 1; repeated CMsgClientToGCRequestEventPointLogResponse.EventPointTransaction transactions = 2; optional uint32 event_id = 3; } message CMsgClientToGCPublishUserStat { optional uint32 user_stats_event = 1; optional uint64 reference_data = 2; } message CMsgClientToGCAddTI6TreeProgress { optional uint32 trees = 1; } message CMsgClientToGCRedeemReward { optional uint32 event_id = 1; optional uint32 action_id = 2; optional uint32 base_action_id = 3; } message CMsgGCToClientRedeemRewardResponse { enum Result { SUCCESS = 0; FAILURE_SDO_LOCK = 1; FAILURE_SDO_LOAD = 2; FAILURE_EVENT_NOT_OWNED = 3; FAILURE_EVENT_NOT_ACTIVE = 4; FAILURE_INVALID_ACTION = 5; FAILURE_REQUIREMENTS_NOT_MET = 6; FAILURE_ALREADY_GRANTED = 7; FAILURE_TIMEOUT = 8; } optional CMsgGCToClientRedeemRewardResponse.Result result = 1 [default = SUCCESS]; } message CMsgClientToGCRequestLinaPlaysRemaining { optional EEvent event_id = 1 [default = EVENT_ID_NONE]; } message CMsgClientToGCRequestLinaPlaysRemainingResponse { optional uint32 plays_remaining = 1; optional uint32 plays_total = 2; } message CMsgClientToGCRequestLinaGameResult { optional EEvent event_id = 1 [default = EVENT_ID_NONE]; optional uint32 slot_chosen = 2; } message CMsgClientToGCRequestLinaGameResultResponse { optional uint32 result = 1; } message CMsgGCToClientQuestProgressUpdated { message Challenge { optional uint32 challenge_id = 1; optional uint32 time_completed = 2; optional uint32 attempts = 3; optional uint32 hero_id = 4; optional uint32 challenge_type = 5; optional uint32 quest_rank = 6; } optional uint32 quest_id = 1; repeated CMsgGCToClientQuestProgressUpdated.Challenge completed_challenges = 2; } message CMsgDOTARedeemItem { optional uint64 currency_id = 1; optional uint32 purchase_def = 2; } message CMsgDOTARedeemItemResponse { enum EResultCode { k_Succeeded = 0; k_Failed = 1; } optional CMsgDOTARedeemItemResponse.EResultCode response = 1 [default = k_Succeeded]; } message CMsgPerfectWorldUserLookupRequest { optional string user_name = 1; } message CMsgPerfectWorldUserLookupResponse { enum EResultCode { SUCCESS_ACCOUNT_FOUND = 0; ERROR_UNKNOWN = 1; ERROR_USER_NAME_WRONG_FORMAT = 2; ERROR_NO_PERFECT_WORLD_ACCOUNT_FOUND = 3; ERROR_NO_LINKED_STEAM_ACCOUNT_FOUND = 4; } optional CMsgPerfectWorldUserLookupResponse.EResultCode result_code = 1 [default = SUCCESS_ACCOUNT_FOUND]; optional uint32 account_id = 2; } message CMsgNexonPartnerUpdate { optional uint32 messagetype = 1; optional uint32 timeremaining = 2; optional bool terminate = 3; } message CMsgMakeOffering { optional uint64 item_id = 1; } message CMsgRequestOfferings { } message CMsgRequestOfferingsResponse { message NewYearsOffering { optional uint32 def_index = 1; optional uint64 item_id = 2; } repeated CMsgRequestOfferingsResponse.NewYearsOffering offerings = 1; optional bool completed = 2; } message CMsgDOTAPCBangTimedReward { optional string persona = 1; optional uint32 itemdef = 2; optional string pcbangname = 3; } message CMsgDOTACompendiumInGamePredictionResults { message PredictionResult { optional uint32 prediction_id = 1; optional uint32 prediction_value = 2; } repeated CMsgDOTACompendiumInGamePredictionResults.PredictionResult results = 1; optional uint32 league_id = 2; optional bool predictions_closed = 3; } message CMsgClientToGCSelectCompendiumInGamePrediction { message Prediction { optional uint32 prediction_id = 1; optional uint32 prediction_value = 2; } optional uint64 match_id = 1; repeated CMsgClientToGCSelectCompendiumInGamePrediction.Prediction predictions = 2; } message CMsgClientToGCSelectCompendiumInGamePredictionResponse { enum EResult { SUCCESS = 0; INVALID_MATCH = 1; PREDICTIONS_ARE_CLOSED = 2; OTHER_ERROR = 3; } optional CMsgClientToGCSelectCompendiumInGamePredictionResponse.EResult result = 1 [default = SUCCESS]; } message CMsgClientToGCOpenPlayerCardPack { optional uint64 player_card_pack_item_id = 1; } message CMsgClientToGCOpenPlayerCardPackResponse { enum Result { SUCCESS = 1; ERROR_INTERNAL = 2; ERROR_FAILED_TO_FIND_PACK = 3; ERROR_ITEM_NOT_CARD_PACK = 4; ERROR_FAILED_CARD_CREATE = 5; } optional CMsgClientToGCOpenPlayerCardPackResponse.Result result = 1 [default = SUCCESS]; repeated uint64 player_card_item_ids = 2; } message CMsgClientToGCRecyclePlayerCard { optional uint64 player_card_item_id = 1; } message CMsgClientToGCRecyclePlayerCardResponse { enum Result { SUCCESS = 1; ERROR_INTERNAL = 2; ERROR_FAILED_TO_FIND_PLAYER_CARD = 3; ERROR_ITEM_NOT_PLAYER_CARD = 4; ERROR_FAILED_DUST_CARD_CREATE = 5; ERROR_CARD_LOCKED = 6; } optional CMsgClientToGCRecyclePlayerCardResponse.Result result = 1 [default = SUCCESS]; optional uint32 dust_amount = 2; } message CMsgClientToGCCreatePlayerCardPack { optional uint64 card_dust_item_id = 1; } message CMsgClientToGCCreatePlayerCardPackResponse { enum Result { SUCCESS = 1; ERROR_INTERNAL = 2; ERROR_INSUFFICIENT_DUST = 3; ERROR_ITEM_NOT_DUST_ITEM = 4; ERROR_FAILED_CARD_PACK_CREATE = 5; } optional CMsgClientToGCCreatePlayerCardPackResponse.Result result = 1 [default = SUCCESS]; }