diff --git a/common/netmessages.proto b/common/netmessages.proto index 1b9eb09b..0deee5ba 100644 --- a/common/netmessages.proto +++ b/common/netmessages.proto @@ -427,7 +427,7 @@ message CSVCMsg_PacketEntities { optional uint32 server_tick = 12; optional bytes serialized_entities = 13; repeated .CSVCMsg_PacketEntities.alternate_baseline_t alternate_baselines = 15; - optional uint32 has_pvs_vis_bits = 16; + optional uint32 has_pvs_vis_bits_deprecated = 16; repeated sint32 cmd_recv_status = 22 [packed = true]; optional .CSVCMsg_PacketEntities.non_transmitted_entities_t non_transmitted_entities = 19; optional uint32 cq_starved_command_ticks = 20; diff --git a/common/valveextensions.proto b/common/valveextensions.proto index d46efeec..e0f0cd6e 100644 --- a/common/valveextensions.proto +++ b/common/valveextensions.proto @@ -8,6 +8,7 @@ extend .google.protobuf.FieldOptions { optional uint32 steamml_max_entries = 61004 [default = 0]; optional bool steamml_is_timestamp = 61005 [default = false]; optional uint32 steamlearn_count = 61006 [default = 0]; + optional .EProtoDebugVisiblity debugprint_visibility = 61007 [default = k_EProtoDebugVisibility_Always]; } extend .google.protobuf.EnumValueOptions { @@ -15,3 +16,11 @@ extend .google.protobuf.EnumValueOptions { optional string schema_description = 1001; optional bool schema_suppress_enumerator = 1002; } + +enum EProtoDebugVisiblity { + k_EProtoDebugVisibility_Always = 0; + k_EProtoDebugVisibility_Server = 70; + k_EProtoDebugVisibility_ValveServer = 80; + k_EProtoDebugVisibility_GC = 90; + k_EProtoDebugVisibility_Never = 100; +} diff --git a/game/shared/base_gcmessages.proto b/game/shared/base_gcmessages.proto index 91d16963..7003bf10 100644 --- a/game/shared/base_gcmessages.proto +++ b/game/shared/base_gcmessages.proto @@ -1,574 +1,412 @@ -import "steammessages.proto"; - -enum EGCBaseMsg { - k_EMsgGCSystemMessage = 4001; - k_EMsgGCReplicateConVars = 4002; - k_EMsgGCConVarUpdated = 4003; - k_EMsgGCInQueue = 4008; - k_EMsgGCInviteToParty = 4501; - k_EMsgGCInvitationCreated = 4502; - k_EMsgGCPartyInviteResponse = 4503; - k_EMsgGCKickFromParty = 4504; - k_EMsgGCLeaveParty = 4505; - k_EMsgGCServerAvailable = 4506; - k_EMsgGCClientConnectToServer = 4507; - k_EMsgGCGameServerInfo = 4508; - k_EMsgGCError = 4509; - k_EMsgGCReplay_UploadedToYouTube = 4510; - k_EMsgGCLANServerAvailable = 4511; -} - -enum EGCBaseProtoObjectTypes { - k_EProtoObjectPartyInvite = 1001; - k_EProtoObjectLobbyInvite = 1002; -} - -enum GC_BannedWordType { - GC_BANNED_WORD_DISABLE_WORD = 0; - GC_BANNED_WORD_ENABLE_WORD = 1; -} - -message CGCStorePurchaseInit_LineItem { - optional uint32 item_def_id = 1; - optional uint32 quantity = 2; - optional uint32 cost_in_local_currency = 3; - optional uint32 purchase_type = 4; - optional uint64 supplemental_data = 5; -} - -message CMsgGCStorePurchaseInit { - optional string country = 1; - optional int32 language = 2; - optional int32 currency = 3; - repeated .CGCStorePurchaseInit_LineItem line_items = 4; -} - -message CMsgGCStorePurchaseInitResponse { - optional int32 result = 1; - optional uint64 txn_id = 2; - optional string url = 3; - repeated uint64 item_ids = 4; -} - -message CSOPartyInvite { - optional uint64 group_id = 1 [(key_field) = true]; - optional fixed64 sender_id = 2; - optional string sender_name = 3; -} - -message CSOLobbyInvite { - optional uint64 group_id = 1 [(key_field) = true]; - optional fixed64 sender_id = 2; - optional string sender_name = 3; -} - -message CMsgSystemBroadcast { - optional string message = 1; -} - -message CMsgInviteToParty { - optional fixed64 steam_id = 1; - optional uint32 client_version = 2; - optional uint32 team_invite = 3; -} - -message CMsgInvitationCreated { - optional uint64 group_id = 1; - optional fixed64 steam_id = 2; -} - -message CMsgPartyInviteResponse { - optional uint64 party_id = 1; - optional bool accept = 2; - optional uint32 client_version = 3; - optional uint32 team_invite = 4; -} - -message CMsgKickFromParty { - optional fixed64 steam_id = 1; -} - -message CMsgLeaveParty { -} - -message CMsgServerAvailable { -} - -message CMsgLANServerAvailable { - optional fixed64 lobby_id = 1; -} - -message CSOEconGameAccountClient { - optional uint32 additional_backpack_slots = 1 [default = 0]; - optional fixed32 trade_ban_expiration = 6; - optional fixed32 bonus_xp_timestamp_refresh = 12; - optional uint32 bonus_xp_usedflags = 13; - optional uint32 elevated_state = 14; - optional uint32 elevated_timestamp = 15; -} - -message CSOItemCriteriaCondition { - optional int32 op = 1; - optional string field = 2; - optional bool required = 3; - optional float float_value = 4; - optional string string_value = 5; -} - -message CSOItemCriteria { - optional uint32 item_level = 1; - optional int32 item_quality = 2; - optional bool item_level_set = 3; - optional bool item_quality_set = 4; - optional uint32 initial_inventory = 5; - optional uint32 initial_quantity = 6; - optional bool ignore_enabled_flag = 8; - repeated .CSOItemCriteriaCondition conditions = 9; - optional int32 item_rarity = 10; - optional bool item_rarity_set = 11; - optional bool recent_only = 12; -} - -message CSOItemRecipe { - optional uint32 def_index = 1; - optional string name = 2; - optional string n_a = 3; - optional string desc_inputs = 4; - optional string desc_outputs = 5; - optional string di_a = 6; - optional string di_b = 7; - optional string di_c = 8; - optional string do_a = 9; - optional string do_b = 10; - optional string do_c = 11; - optional bool requires_all_same_class = 12; - optional bool requires_all_same_slot = 13; - optional int32 class_usage_for_output = 14; - optional int32 slot_usage_for_output = 15; - optional int32 set_for_output = 16; - repeated .CSOItemCriteria input_items_criteria = 20; - repeated .CSOItemCriteria output_items_criteria = 21; - repeated uint32 input_item_dupe_counts = 22; -} - -message CMsgDevNewItemRequest { - optional fixed64 receiver = 1; - optional .CSOItemCriteria criteria = 2; -} - -message CMsgIncrementKillCountAttribute { - optional fixed32 killer_account_id = 1; - optional fixed32 victim_account_id = 2; - optional uint64 item_id = 3; - optional uint32 event_type = 4; - optional uint32 amount = 5; -} - -message CMsgApplySticker { - optional uint64 sticker_item_id = 1; - optional uint64 item_item_id = 2; - optional uint32 sticker_slot = 3; - optional uint32 baseitem_defidx = 4; - optional float sticker_wear = 5; - optional float sticker_rotation = 6; - optional float sticker_scale = 7; - optional float sticker_offset_x = 8; - optional float sticker_offset_y = 9; - optional float sticker_offset_z = 10; - optional float sticker_wear_target = 11; -} - -message CMsgModifyItemAttribute { - optional uint64 item_id = 1; - optional uint32 attr_defidx = 2; - optional uint32 attr_value = 3; -} - -message CMsgApplyStatTrakSwap { - optional uint64 tool_item_id = 1; - optional uint64 item_1_item_id = 2; - optional uint64 item_2_item_id = 3; -} - -message CMsgApplyStrangePart { - optional uint64 strange_part_item_id = 1; - optional uint64 item_item_id = 2; -} - -message CMsgApplyPennantUpgrade { - optional uint64 upgrade_item_id = 1; - optional uint64 pennant_item_id = 2; -} - -message CMsgApplyEggEssence { - optional uint64 essence_item_id = 1; - optional uint64 egg_item_id = 2; -} - -message CSOEconItemAttribute { - optional uint32 def_index = 1; - optional uint32 value = 2; - optional bytes value_bytes = 3; -} - -message CSOEconItemEquipped { - optional uint32 new_class = 1; - optional uint32 new_slot = 2; -} - -message CSOEconItem { - optional uint64 id = 1; - optional uint32 account_id = 2; - optional uint32 inventory = 3; - optional uint32 def_index = 4; - optional uint32 quantity = 5; - optional uint32 level = 6; - optional uint32 quality = 7; - optional uint32 flags = 8 [default = 0]; - optional uint32 origin = 9; - optional string custom_name = 10; - optional string custom_desc = 11; - repeated .CSOEconItemAttribute attribute = 12; - optional .CSOEconItem interior_item = 13; - optional bool in_use = 14 [default = false]; - optional uint32 style = 15 [default = 0]; - optional uint64 original_id = 16 [default = 0]; - repeated .CSOEconItemEquipped equipped_state = 18; - optional uint32 rarity = 19; -} - -message CMsgAdjustItemEquippedState { - optional uint64 item_id = 1; - optional uint32 new_class = 2; - optional uint32 new_slot = 3; - optional bool swap = 4; -} - -message CMsgAdjustItemEquippedStateMulti { - repeated uint64 t_equips = 1; - repeated uint64 ct_equips = 2; - repeated uint64 noteam_equips = 3; -} - -message CMsgSortItems { - optional uint32 sort_type = 1; -} - -message CSOEconClaimCode { - optional uint32 account_id = 1; - optional uint32 code_type = 2; - optional uint32 time_acquired = 3; - optional string code = 4; -} - -message CMsgStoreGetUserData { - optional fixed32 price_sheet_version = 1; - optional int32 currency = 2; -} - -message CMsgStoreGetUserDataResponse { - optional int32 result = 1; - optional int32 currency_deprecated = 2; - optional string country_deprecated = 3; - optional fixed32 price_sheet_version = 4; - optional bytes price_sheet = 8; -} - -message CMsgUpdateItemSchema { - optional bytes items_game = 1; - optional fixed32 item_schema_version = 2; - optional string items_game_url = 4; -} - -message CMsgGCError { - optional string error_text = 1; -} - -message CMsgRequestInventoryRefresh { -} - -message CMsgConVarValue { - optional string name = 1; - optional string value = 2; -} - -message CMsgReplicateConVars { - repeated .CMsgConVarValue convars = 1; -} - -message CMsgUseItem { - optional uint64 item_id = 1; - optional fixed64 target_steam_id = 2; - repeated uint32 gift__potential_targets = 3; - optional uint32 duel__class_lock = 4; - optional fixed64 initiator_steam_id = 5; -} - -message CMsgReplayUploadedToYouTube { - optional string youtube_url = 1; - optional string youtube_account_name = 2; - optional uint64 session_id = 3; -} - -message CMsgConsumableExhausted { - optional int32 item_def_id = 1; -} - -message CMsgItemAcknowledged__DEPRECATED { - optional uint32 account_id = 1; - optional uint32 inventory = 2; - optional uint32 def_index = 3; - optional uint32 quality = 4; - optional uint32 rarity = 5; - optional uint32 origin = 6; - optional uint64 item_id = 7; -} - -message CMsgSetItemPositions { - message ItemPosition { - optional uint32 legacy_item_id = 1; - optional uint32 position = 2; - optional uint64 item_id = 3; - } - - repeated .CMsgSetItemPositions.ItemPosition item_positions = 1; -} - -message CMsgGCReportAbuse { - optional fixed64 target_steam_id = 1; - optional string description = 4; - optional uint64 gid = 5; - optional uint32 abuse_type = 2; - optional uint32 content_type = 3; - optional fixed32 target_game_server_ip = 6; - optional uint32 target_game_server_port = 7; -} - -message CMsgGCReportAbuseResponse { - optional fixed64 target_steam_id = 1; - optional uint32 result = 2; - optional string error_message = 3; -} - -message CMsgGCNameItemNotification { - optional fixed64 player_steamid = 1; - optional uint32 item_def_index = 2; - optional string item_name_custom = 3; -} - -message CMsgGCClientDisplayNotification { - optional string notification_title_localization_key = 1; - optional string notification_body_localization_key = 2; - repeated string body_substring_keys = 3; - repeated string body_substring_values = 4; -} - -message CMsgGCShowItemsPickedUp { - optional fixed64 player_steamid = 1; -} - -message CMsgGCIncrementKillCountResponse { - optional uint32 killer_account_id = 1 [(key_field) = true]; - optional uint32 num_kills = 2; - optional uint32 item_def = 3; - optional uint32 level_type = 4; -} - -message CSOEconItemDropRateBonus { - optional uint32 account_id = 1; - optional fixed32 expiration_date = 2; - optional float bonus = 3; - optional uint32 bonus_count = 4; - optional uint64 item_id = 5; - optional uint32 def_index = 6; -} - -message CSOEconItemLeagueViewPass { - optional uint32 account_id = 1 [(key_field) = true]; - optional uint32 league_id = 2 [(key_field) = true]; - optional uint32 admin = 3; - optional uint32 itemindex = 4; -} - -message CSOEconItemEventTicket { - optional uint32 account_id = 1; - optional uint32 event_id = 2; - optional uint64 item_id = 3; -} - -message CMsgGCItemPreviewItemBoughtNotification { - optional uint32 item_def_index = 1; -} - -message CMsgGCStorePurchaseCancel { - optional uint64 txn_id = 1; -} - -message CMsgGCStorePurchaseCancelResponse { - optional uint32 result = 1; -} - -message CMsgGCStorePurchaseFinalize { - optional uint64 txn_id = 1; -} - -message CMsgGCStorePurchaseFinalizeResponse { - optional uint32 result = 1; - repeated uint64 item_ids = 2; -} - -message CMsgGCBannedWordListRequest { - optional uint32 ban_list_group_id = 1; - optional uint32 word_id = 2; -} - -message CMsgGCRequestAnnouncements { -} - -message CMsgGCRequestAnnouncementsResponse { - optional string announcement_title = 1; - optional string announcement = 2; - optional string nextmatch_title = 3; - optional string nextmatch = 4; -} - -message CMsgGCBannedWord { - optional uint32 word_id = 1; - optional .GC_BannedWordType word_type = 2 [default = GC_BANNED_WORD_DISABLE_WORD]; - optional string word = 3; -} - -message CMsgGCBannedWordListResponse { - optional uint32 ban_list_group_id = 1; - repeated .CMsgGCBannedWord word_list = 2; -} - -message CMsgGCToGCBannedWordListBroadcast { - optional .CMsgGCBannedWordListResponse broadcast = 1; -} - -message CMsgGCToGCBannedWordListUpdated { - optional uint32 group_id = 1; -} - -message CSOEconDefaultEquippedDefinitionInstanceClient { - optional uint32 account_id = 1 [(key_field) = true]; - optional uint32 item_definition = 2; - optional uint32 class_id = 3 [(key_field) = true]; - optional uint32 slot_id = 4 [(key_field) = true]; -} - -message CMsgGCToGCDirtySDOCache { - optional uint32 sdo_type = 1; - optional uint64 key_uint64 = 2; -} - -message CMsgGCToGCDirtyMultipleSDOCache { - optional uint32 sdo_type = 1; - repeated uint64 key_uint64 = 2; -} - -message CMsgGCCollectItem { - optional uint64 collection_item_id = 1; - optional uint64 subject_item_id = 2; -} - -message CMsgSDONoMemcached { -} - -message CMsgGCToGCUpdateSQLKeyValue { - optional string key_name = 1; -} - -message CMsgGCToGCIsTrustedServer { - optional fixed64 steam_id = 1; -} - -message CMsgGCToGCIsTrustedServerResponse { - optional bool is_trusted = 1; -} - -message CMsgGCToGCBroadcastConsoleCommand { - optional string con_command = 1; -} - -message CMsgGCServerVersionUpdated { - optional uint32 server_version = 1; -} - -message CMsgGCClientVersionUpdated { - optional uint32 client_version = 1; -} - -message CMsgGCToGCWebAPIAccountChanged { -} - -message CMsgGCToGCRequestPassportItemGrant { - optional fixed64 steam_id = 1; - optional uint32 league_id = 2; - optional int32 reward_flag = 3; -} - -message CMsgGameServerInfo { - enum ServerType { - UNSPECIFIED = 0; - GAME = 1; - PROXY = 2; - } - - optional fixed32 server_public_ip_addr = 1; - optional fixed32 server_private_ip_addr = 2; - optional uint32 server_port = 3; - optional uint32 server_tv_port = 4; - optional string server_key = 5; - optional bool server_hibernation = 6; - optional .CMsgGameServerInfo.ServerType server_type = 7 [default = UNSPECIFIED]; - optional uint32 server_region = 8; - optional float server_loadavg = 9; - optional float server_tv_broadcast_time = 10; - optional float server_game_time = 11; - optional fixed64 server_relay_connected_steam_id = 12; - optional uint32 relay_slots_max = 13; - optional int32 relays_connected = 14; - optional int32 relay_clients_connected = 15; - optional fixed64 relayed_game_server_steam_id = 16; - optional uint32 parent_relay_count = 17; - optional fixed64 tv_secret_code = 18; -} - -message CSOEconEquipSlot { - optional uint32 account_id = 1 [(key_field) = true]; - optional uint32 class_id = 2 [(key_field) = true]; - optional uint32 slot_id = 3 [(key_field) = true]; - optional uint64 item_id = 4; - optional uint32 item_definition = 5; -} - -message CMsgAdjustEquipSlot { - optional uint32 class_id = 1; - optional uint32 slot_id = 2; - optional uint64 item_id = 3; -} - -message CMsgAdjustEquipSlots { - repeated .CMsgAdjustEquipSlot slots = 1; - optional uint32 change_num = 2; -} - -message CMsgOpenCrate { - optional uint64 tool_item_id = 1; - optional uint64 subject_item_id = 2; - optional bool for_rental = 3; -} - -message CSOEconRentalHistory { - optional uint32 account_id = 1 [(key_field) = true]; - optional uint64 crate_item_id = 2 [(key_field) = true]; - optional uint32 crate_def_index = 3; - optional uint32 issue_date = 4; - optional uint32 expiration_date = 5; -} - -message CMsgAcknowledgeRentalExpiration { - optional uint64 crate_item_id = 1; -} +import "steammessages.proto"; +import "gcsdk_gcmessages.proto"; +import "steammessages_steamlearn.steamworkssdk.proto"; + +enum EGCBaseMsg { + k_EMsgGCInviteToParty = 4501; + k_EMsgGCInvitationCreated = 4502; + k_EMsgGCPartyInviteResponse = 4503; + k_EMsgGCKickFromParty = 4504; + k_EMsgGCLeaveParty = 4505; + k_EMsgGCServerAvailable = 4506; + k_EMsgGCClientConnectToServer = 4507; + k_EMsgGCGameServerInfo = 4508; + k_EMsgGCLANServerAvailable = 4511; + k_EMsgGCInviteToLobby = 4512; + k_EMsgGCLobbyInviteResponse = 4513; + k_EMsgGCToClientPollFileRequest = 4514; + k_EMsgGCToClientPollFileResponse = 4515; + k_EMsgGCToGCPerformManualOp = 4516; + k_EMsgGCToGCPerformManualOpCompleted = 4517; + k_EMsgGCToGCReloadServerRegionSettings = 4518; + k_EMsgGCAdditionalWelcomeMsgList = 4519; + k_EMsgGCToClientApplyRemoteConVars = 4520; + k_EMsgGCToServerApplyRemoteConVars = 4521; + k_EMsgClientToGCIntegrityStatus = 4522; + k_EMsgClientToGCAggregateMetrics = 4523; + k_EMsgGCToClientAggregateMetricsBackoff = 4524; + k_EMsgGCToServerSteamLearnAccessTokensChanged = 4525; + k_EMsgGCToServerSteamLearnUseHTTP = 4526; +} + +enum ECustomGameInstallStatus { + k_ECustomGameInstallStatus_Unknown = 0; + k_ECustomGameInstallStatus_Ready = 1; + k_ECustomGameInstallStatus_Busy = 2; + k_ECustomGameInstallStatus_FailedGeneric = 101; + k_ECustomGameInstallStatus_FailedInternalError = 102; + k_ECustomGameInstallStatus_RequestedTimestampTooOld = 103; + k_ECustomGameInstallStatus_RequestedTimestampTooNew = 104; + k_ECustomGameInstallStatus_CRCMismatch = 105; + k_ECustomGameInstallStatus_FailedSteam = 106; + k_ECustomGameInstallStatus_FailedCanceled = 107; +} + +message CGCStorePurchaseInit_LineItem { + optional uint32 item_def_id = 1; + optional uint32 quantity = 2; + optional uint32 cost_in_local_currency = 3; + optional uint32 purchase_type = 4; + optional uint64 source_reference_id = 5; + optional int32 price_index = 6; +} + +message CMsgGCStorePurchaseInit { + optional string country = 1; + optional int32 language = 2; + optional int32 currency = 3; + repeated .CGCStorePurchaseInit_LineItem line_items = 4; +} + +message CMsgGCStorePurchaseInitResponse { + optional int32 result = 1; + optional uint64 txn_id = 2; +} + +message CMsgClientPingData { + repeated fixed32 relay_codes = 4 [packed = true]; + repeated uint32 relay_pings = 5 [packed = true]; + repeated uint32 region_codes = 8 [packed = true]; + repeated uint32 region_pings = 9 [packed = true]; + optional uint32 region_ping_failed_bitmask = 10; +} + +message CMsgInviteToParty { + optional fixed64 steam_id = 1; + optional uint32 client_version = 2; + optional uint32 team_id = 3; + optional bool as_coach = 4; + optional .CMsgClientPingData ping_data = 5; +} + +message CMsgInviteToLobby { + optional fixed64 steam_id = 1; + optional uint32 client_version = 2; +} + +message CMsgInvitationCreated { + optional uint64 group_id = 1; + optional fixed64 steam_id = 2; + optional bool user_offline = 3; +} + +message CMsgPartyInviteResponse { + optional uint64 party_id = 1; + optional bool accept = 2; + optional uint32 client_version = 3; + optional .CMsgClientPingData ping_data = 8; +} + +message CMsgLobbyInviteResponse { + optional fixed64 lobby_id = 1; + optional bool accept = 2; + optional uint32 client_version = 3; + optional fixed64 custom_game_crc = 6; + optional fixed32 custom_game_timestamp = 7; +} + +message CMsgKickFromParty { + optional fixed64 steam_id = 1; +} + +message CMsgLeaveParty { +} + +message CMsgCustomGameInstallStatus { + optional .ECustomGameInstallStatus status = 1 [default = k_ECustomGameInstallStatus_Unknown]; + optional string message = 2; + optional fixed32 latest_timestamp_from_steam = 3; +} + +message CMsgServerAvailable { + optional .CMsgCustomGameInstallStatus custom_game_install_status = 1; +} + +message CMsgLANServerAvailable { + optional fixed64 lobby_id = 1; +} + +message CSOEconGameAccountClient { + optional uint32 additional_backpack_slots = 1 [default = 0]; + optional bool trial_account = 2 [default = false]; + optional bool eligible_for_online_play = 3 [default = true]; + optional bool need_to_choose_most_helpful_friend = 4; + optional bool in_coaches_list = 5; + optional fixed32 trade_ban_expiration = 6; + optional fixed32 duel_ban_expiration = 7; + optional bool made_first_purchase = 9 [default = false]; +} + +message CMsgApplyStrangePart { + optional uint64 strange_part_item_id = 1; + optional uint64 item_item_id = 2; +} + +message CMsgApplyPennantUpgrade { + optional uint64 upgrade_item_id = 1; + optional uint64 pennant_item_id = 2; +} + +message CMsgApplyEggEssence { + optional uint64 essence_item_id = 1; + optional uint64 egg_item_id = 2; +} + +message CSOEconItemAttribute { + optional uint32 def_index = 1 [default = 65535]; + optional uint32 value = 2; + optional bytes value_bytes = 3; +} + +message CSOEconItemEquipped { + optional uint32 new_class = 1; + optional uint32 new_slot = 2; +} + +message CSOEconItem { + optional uint64 id = 1; + optional uint32 account_id = 2; + optional uint32 inventory = 3; + optional uint32 def_index = 4; + optional uint32 quantity = 5 [default = 1]; + optional uint32 level = 6 [default = 1]; + optional uint32 quality = 7 [default = 4]; + optional uint32 flags = 8 [default = 0]; + optional uint32 origin = 9 [default = 0]; + repeated .CSOEconItemAttribute attribute = 12; + optional .CSOEconItem interior_item = 13; + optional uint32 style = 15 [default = 0]; + optional uint64 original_id = 16; + repeated .CSOEconItemEquipped equipped_state = 18; +} + +message CMsgSortItems { + optional uint32 sort_type = 1; +} + +message CMsgItemAcknowledged { + optional uint32 account_id = 1; + optional uint32 inventory = 2; + optional uint32 def_index = 3; + optional uint32 quality = 4; + optional uint32 rarity = 5; + optional uint32 origin = 6; +} + +message CMsgSetItemPositions { + message ItemPosition { + optional uint64 item_id = 1; + optional uint32 position = 2; + } + + repeated .CMsgSetItemPositions.ItemPosition item_positions = 1; +} + +message CMsgGCStorePurchaseCancel { + optional uint64 txn_id = 1; +} + +message CMsgGCStorePurchaseCancelResponse { + optional uint32 result = 1; +} + +message CMsgGCStorePurchaseFinalize { + optional uint64 txn_id = 1; +} + +message CMsgGCStorePurchaseFinalizeResponse { + optional uint32 result = 1; + repeated uint64 item_ids = 2; +} + +message CMsgGCToGCBannedWordListUpdated { + optional uint32 group_id = 1; +} + +message CMsgGCToGCDirtySDOCache { + optional uint32 sdo_type = 1; + optional uint64 key_uint64 = 2; +} + +message CMsgSDONoMemcached { +} + +message CMsgGCToGCUpdateSQLKeyValue { + optional string key_name = 1; +} + +message CMsgGCServerVersionUpdated { + optional uint32 server_version = 1; +} + +message CMsgGCClientVersionUpdated { + optional uint32 client_version = 1; +} + +message CMsgGCToGCWebAPIAccountChanged { +} + +message CMsgExtractGems { + optional uint64 tool_item_id = 1; + optional uint64 item_item_id = 2; + optional uint32 item_socket_id = 3 [default = 65535]; +} + +message CMsgExtractGemsResponse { + enum EExtractGems { + k_ExtractGems_Succeeded = 0; + k_ExtractGems_Failed_ToolIsInvalid = 1; + k_ExtractGems_Failed_ItemIsInvalid = 2; + k_ExtractGems_Failed_ToolCannotRemoveGem = 3; + k_ExtractGems_Failed_FailedToRemoveGem = 4; + } + + optional uint64 item_id = 1; + optional .CMsgExtractGemsResponse.EExtractGems response = 2 [default = k_ExtractGems_Succeeded]; +} + +message CMsgAddSocket { + optional uint64 tool_item_id = 1; + optional uint64 item_item_id = 2; + optional bool unusual = 3; +} + +message CMsgAddSocketResponse { + enum EAddSocket { + k_AddSocket_Succeeded = 0; + k_AddSocket_Failed_ToolIsInvalid = 1; + k_AddSocket_Failed_ItemCannotBeSocketed = 2; + k_AddSocket_Failed_FailedToAddSocket = 3; + } + + optional uint64 item_id = 1; + repeated uint32 updated_socket_index = 2; + optional .CMsgAddSocketResponse.EAddSocket response = 3 [default = k_AddSocket_Succeeded]; +} + +message CMsgAddItemToSocketData { + optional uint64 gem_item_id = 1; + optional uint32 socket_index = 2 [default = 65535]; +} + +message CMsgAddItemToSocket { + optional uint64 item_item_id = 1; + repeated .CMsgAddItemToSocketData gems_to_socket = 2; +} + +message CMsgAddItemToSocketResponse { + enum EAddGem { + k_AddGem_Succeeded = 0; + k_AddGem_Failed_GemIsInvalid = 1; + k_AddGem_Failed_ItemIsInvalid = 2; + k_AddGem_Failed_FailedToAddGem = 3; + k_AddGem_Failed_InvalidGemTypeForSocket = 4; + k_AddGem_Failed_InvalidGemTypeForHero = 5; + k_AddGem_Failed_InvalidGemTypeForSlot = 6; + k_AddGem_Failed_SocketContainsUnremovableGem = 7; + } + + optional uint64 item_item_id = 1; + repeated uint32 updated_socket_index = 2; + optional .CMsgAddItemToSocketResponse.EAddGem response = 3 [default = k_AddGem_Succeeded]; +} + +message CMsgResetStrangeGemCount { + optional uint64 item_item_id = 1; + optional uint32 socket_index = 2 [default = 65535]; +} + +message CMsgResetStrangeGemCountResponse { + enum EResetGem { + k_ResetGem_Succeeded = 0; + k_ResetGem_Failed_FailedToResetGem = 1; + k_ResetGem_Failed_ItemIsInvalid = 2; + k_ResetGem_Failed_InvalidSocketId = 3; + k_ResetGem_Failed_SocketCannotBeReset = 4; + } + + optional .CMsgResetStrangeGemCountResponse.EResetGem response = 1 [default = k_ResetGem_Succeeded]; +} + +message CMsgGCToClientPollFileRequest { + optional string file_name = 1; + optional uint32 client_version = 2; + optional uint32 poll_id = 3; +} + +message CMsgGCToClientPollFileResponse { + optional uint32 poll_id = 1; + optional uint32 file_size = 2; + optional uint32 file_crc = 3; +} + +message CMsgGCToGCPerformManualOp { + optional uint64 op_id = 1; + optional uint32 group_code = 2; +} + +message CMsgGCToGCPerformManualOpCompleted { + optional bool success = 1; + optional int32 source_gc = 2 [default = -1]; +} + +message CMsgGCToGCReloadServerRegionSettings { +} + +message CMsgGCAdditionalWelcomeMsgList { + repeated .CExtraMsgBlock welcome_messages = 1; +} + +message CMsgApplyRemoteConVars { + message ConVar { + optional string name = 1; + optional string value = 2; + optional uint32 version_min = 3; + optional uint32 version_max = 4; + optional .EGCPlatform platform = 5 [default = k_eGCPlatform_None]; + } + + repeated .CMsgApplyRemoteConVars.ConVar con_vars = 1; +} + +message CMsgGCToClientApplyRemoteConVars { + optional .CMsgApplyRemoteConVars msg = 1; +} + +message CMsgGCToServerApplyRemoteConVars { + optional .CMsgApplyRemoteConVars msg = 1; +} + +message CMsgClientToGCIntegrityStatus { + message keyvalue { + optional uint32 id = 1; + optional uint32 extended = 2; + optional uint64 value = 3; + optional string string_value = 4; + } + + optional string report = 1; + optional bool secure_allowed = 2; + repeated .CMsgClientToGCIntegrityStatus.keyvalue diagnostics = 3; +} + +message CMsgClientToGCAggregateMetrics { + message SingleMetric { + optional string metric_name = 1; + optional uint32 metric_count = 2; + } + + repeated .CMsgClientToGCAggregateMetrics.SingleMetric metrics = 1; +} + +message CMsgGCToClientAggregateMetricsBackoff { + optional float upload_rate_modifier = 1; +} + +message CMsgGCToServerSteamLearnAccessTokensChanged { + optional .CMsgSteamLearnAccessTokens access_tokens = 1; +} + +message CMsgGCToServerSteamLearnUseHTTP { + optional bool use_http = 1; +} diff --git a/game/shared/dota/dota_broadcastmessages.proto b/game/shared/dota/dota_broadcastmessages.proto new file mode 100644 index 00000000..e65a3e8a --- /dev/null +++ b/game/shared/dota/dota_broadcastmessages.proto @@ -0,0 +1,29 @@ +enum EDotaBroadcastMessages { + DOTA_BM_LANLobbyRequest = 1; + DOTA_BM_LANLobbyReply = 2; +} + +message CDOTABroadcastMsg { + required .EDotaBroadcastMessages type = 1 [default = DOTA_BM_LANLobbyRequest]; + optional bytes msg = 2; +} + +message CDOTABroadcastMsg_LANLobbyRequest { +} + +message CDOTABroadcastMsg_LANLobbyReply { + message CLobbyMember { + optional uint32 account_id = 1; + optional string player_name = 2; + } + + optional uint64 id = 1; + optional uint32 tournament_id = 2; + optional uint32 tournament_game_id = 3; + repeated .CDOTABroadcastMsg_LANLobbyReply.CLobbyMember members = 4; + optional bool requires_pass_key = 5; + optional uint32 leader_account_id = 6; + optional uint32 game_mode = 7; + optional string name = 8; + optional uint32 players = 9; +} diff --git a/game/shared/dota/dota_clientmessages.proto b/game/shared/dota/dota_clientmessages.proto new file mode 100644 index 00000000..ad6852a3 --- /dev/null +++ b/game/shared/dota/dota_clientmessages.proto @@ -0,0 +1,638 @@ +import "dota_commonmessages.proto"; +import "dota_shared_enums.proto"; +import "base_gcmessages.proto"; + +enum EDotaClientMessages { + DOTA_CM_MapLine = 301; + DOTA_CM_AspectRatio = 302; + DOTA_CM_MapPing = 303; + DOTA_CM_UnitsAutoAttack = 304; + DOTA_CM_SearchString = 307; + DOTA_CM_Pause = 308; + DOTA_CM_ShopViewMode = 309; + DOTA_CM_SetUnitShareFlag = 310; + DOTA_CM_SwapRequest = 311; + DOTA_CM_SwapAccept = 312; + DOTA_CM_WorldLine = 313; + DOTA_CM_RequestGraphUpdate = 314; + DOTA_CM_ItemAlert = 315; + DOTA_CM_ChatWheel = 316; + DOTA_CM_SendStatPopup = 317; + DOTA_CM_BeginLastHitChallenge = 318; + DOTA_CM_UpdateQuickBuy = 319; + DOTA_CM_UpdateCoachListen = 320; + DOTA_CM_CoachHUDPing = 321; + DOTA_CM_RecordVote = 322; + DOTA_CM_UnitsAutoAttackAfterSpell = 323; + DOTA_CM_WillPurchaseAlert = 324; + DOTA_CM_PlayerShowCase = 325; + DOTA_CM_TeleportRequiresHalt = 326; + DOTA_CM_CameraZoomAmount = 327; + DOTA_CM_BroadcasterUsingCamerman = 328; + DOTA_CM_BroadcasterUsingAssistedCameraOperator = 329; + DOTA_CM_EnemyItemAlert = 330; + DOTA_CM_FreeInventory = 331; + DOTA_CM_BuyBackStateAlert = 332; + DOTA_CM_QuickBuyAlert = 333; + DOTA_CM_HeroStatueLike = 334; + DOTA_CM_ModifierAlert = 335; + DOTA_CM_TeamShowcaseEditor = 336; + DOTA_CM_HPManaAlert = 337; + DOTA_CM_GlyphAlert = 338; + DOTA_CM_TeamShowcaseClientData = 339; + DOTA_CM_PlayTeamShowcase = 340; + DOTA_CM_EventCNY2015Cmd = 341; + DOTA_CM_FillEmptySlotsWithBots = 342; + DOTA_CM_DemoHero = 343; + DOTA_CM_AbilityLearnModeToggled = 344; + DOTA_CM_AbilityStartUse = 345; + DOTA_CM_ChallengeSelect = 346; + DOTA_CM_ChallengeReroll = 347; + DOTA_CM_ClickedBuff = 348; + DOTA_CM_CoinWager = 349; + DOTA_CM_ExecuteOrders = 350; + DOTA_CM_XPAlert = 351; + DOTA_CM_EventPointsTip = 353; + DOTA_CM_KillMyHero = 355; + DOTA_CM_QuestStatus = 356; + DOTA_CM_ToggleAutoattack = 357; + DOTA_CM_SpecialAbility = 358; + DOTA_CM_KillcamDamageTaken = 359; + DOTA_CM_SetEnemyStartingPosition = 360; + DOTA_CM_SetDesiredWardPlacement = 361; + DOTA_CM_RollDice = 362; + DOTA_CM_FlipCoin = 363; + DOTA_CM_RequestItemSuggestions = 364; + DOTA_CM_MakeTeamCaptain = 365; + DOTA_CM_CoinWagerToken = 366; + DOTA_CM_RankWager = 367; + DOTA_CM_DismissAllStatPopups = 368; + DOTA_CM_HelpTipSystemStateChanged = 369; + DOTA_CM_ChannelRequiresHalt = 370; + DOTA_CM_RequestBulkCombatLog = 371; + DOTA_CM_AbilityDraftRequestAbility = 372; + DOTA_CM_GuideSelectOption = 373; + DOTA_CM_GuideSelected = 374; + DOTA_CM_DamageReport = 375; + DOTA_CM_SalutePlayer = 376; + DOTA_CM_SprayWheel = 377; + DOTA_CM_TipAlert = 378; + DOTA_CM_EmptyTeleportAlert = 379; + DOTA_CM_RadarAlert = 380; + DOTA_CM_TalentTreeAlert = 381; + DOTA_CM_SetCavernMapVariant = 382; + DOTA_CM_PauseGameOrder = 383; + DOTA_CM_VersusScene_PlayerBehavior = 384; + DOTA_CM_PlayerBounty = 385; + DOTA_CM_PlayerBountyCancel = 386; + DOTA_CM_EmptyItemSlotAlert = 388; + DOTA_CM_AddOverwatchReportMarker = 389; + DOTA_CM_AghsStatusAlert = 390; + DOTA_CM_PerfReport = 391; + DOTA_CM_ContextualTips_Subscribe = 393; + DOTA_CM_ChatMessage = 394; + DOTA_CM_AddCommunicationsReportMarker = 395; + DOTA_CM_AddCommunicationsBlockMarker = 396; + DOTA_CM_NeutralCampAlert = 397; + DOTA_CM_DuelAccepted = 398; + DOTA_CM_ChooseNeutralItem = 399; + DOTA_CM_PlayerDraftPick = 800; + DOTA_CM_PlayerDraftSuggest = 801; + DOTA_CM_PlayerDraftPreferRole = 802; + DOTA_CM_PlayerDraftPreferTeam = 803; + DOTA_CM_ChatWheelAlert = 804; + DOTA_CM_AbilityAlert = 805; + DOTA_CM_AllyAbilityAlert = 806; + DOTA_CM_GiftPlayer = 807; + DOTA_CM_GiftEveryone = 808; + DOTA_CM_SelectOverworldTokenRewards = 809; + DOTA_CM_FacetAlert = 810; + DOTA_CM_InnateAlert = 811; + DOTA_CM_SelectOverworldID = 812; + DOTA_CM_RerollNeutralItem = 813; + DOTA_CM_RoshanTimer = 814; + DOTA_CM_SuggestItemPreference = 815; +} + +message CDOTAClientMsg_MapPing { + optional .CDOTAMsg_LocationPing location_ping = 1; +} + +message CDOTAClientMsg_ItemAlert { + optional .CDOTAMsg_ItemAlert item_alert = 1; +} + +message CDOTAClientMsg_EnemyItemAlert { + optional int32 item_entindex = 1 [default = -1]; + optional int32 rune_type = 2 [default = -1]; + optional int32 item_level = 3 [default = -1]; + optional int32 primary_charges = 4 [default = -1]; + optional int32 secondary_charges = 5 [default = -1]; + optional int32 ability_id = 6 [default = -1]; + optional int32 owner_entindex = 7 [default = -1]; +} + +message CDOTAClientMsg_ModifierAlert { + optional int32 buff_internal_index = 1; + optional int32 target_entindex = 2 [default = -1]; +} + +message CDOTAClientMsg_ClickedBuff { + optional int32 buff_internal_index = 1; + optional int32 target_entindex = 2 [default = -1]; +} + +message CDOTAClientMsg_HPManaAlert { + optional int32 target_entindex = 1 [default = -1]; + optional bool show_raw_values = 2; +} + +message CDOTAClientMsg_NeutralCampAlert { + optional int32 spawner_entindex = 1 [default = -1]; + optional int32 unit_entindex = 2 [default = -1]; + optional bool stack_request = 3; +} + +message CDOTAClientMsg_GlyphAlert { + optional bool negative = 1; +} + +message CDOTAClientMsg_RadarAlert { + optional bool negative = 1; +} + +message CDOTAClientMsg_MapLine { + optional .CDOTAMsg_MapLine mapline = 1; +} + +message CDOTAClientMsg_AspectRatio { + optional float ratio = 1; +} + +message CDOTAClientMsg_UnitsAutoAttackMode { + enum EMode { + INVALID = -1; + NEVER = 0; + AFTER_SPELLCAST = 1; + ALWAYS = 2; + } + + enum EUnitType { + NORMAL = 0; + SUMMONED = 1; + } + + optional .CDOTAClientMsg_UnitsAutoAttackMode.EMode mode = 1 [default = INVALID]; + optional .CDOTAClientMsg_UnitsAutoAttackMode.EUnitType unit_type = 2 [default = NORMAL]; +} + +message CDOTAClientMsg_UnitsAutoAttackAfterSpell { + optional bool enabled = 1; +} + +message CDOTAClientMsg_TeleportRequiresHalt { + optional bool enabled = 1; +} + +message CDOTAClientMsg_ChannelRequiresHalt { + optional bool enabled = 1; +} + +message CDOTAClientMsg_SearchString { + optional string search = 1; +} + +message CDOTAClientMsg_Pause { +} + +message CDOTAClientMsg_ShopViewMode { + optional uint32 mode = 1; +} + +message CDOTAClientMsg_SetUnitShareFlag { + optional int32 player_id = 1 [default = -1]; + optional uint32 flag = 2; + optional bool state = 3; +} + +message CDOTAClientMsg_SwapRequest { + optional int32 player_id = 1 [default = -1]; +} + +message CDOTAClientMsg_SwapAccept { + optional int32 player_id = 1 [default = -1]; +} + +message CDOTAClientMsg_WorldLine { + optional .CDOTAMsg_WorldLine worldline = 1; +} + +message CDOTAClientMsg_RequestGraphUpdate { +} + +message CDOTAClientMsg_ChatWheel { + optional uint32 chat_message_id = 1 [default = 4294967295]; + optional int32 param_hero_id = 2; + optional uint32 emoticon_id = 3; +} + +message CDOTAClientMsg_SendStatPopup { + optional .CDOTAMsg_SendStatPopup statpopup = 1; +} + +message CDOTAClientMsg_DismissAllStatPopups { + optional .CDOTAMsg_DismissAllStatPopups dismissallmsg = 1; +} + +message CDOTAClientMsg_BeginLastHitChallenge { + optional uint32 chosen_lane = 1; + optional bool helper_enabled = 2; +} + +message CDOTAClientMsg_UpdateQuickBuyItem { + optional int32 item_ability_id = 1 [default = -1]; + optional bool purchasable = 2 [default = false]; +} + +message CDOTAClientMsg_UpdateQuickBuy { + repeated .CDOTAClientMsg_UpdateQuickBuyItem items = 1; +} + +message CDOTAClientMsg_RecordVote { + optional int32 choice_index = 1; +} + +message CDOTAClientMsg_WillPurchaseAlert { + optional int32 item_ability_id = 1 [default = -1]; + optional uint32 gold_remaining = 2; + optional int32 suggestion_player_id = 3 [default = -1]; +} + +message CDOTAClientMsg_BuyBackStateAlert { +} + +message CDOTAClientMsg_QuickBuyAlert { + optional int32 item_ability_id = 1 [default = -1]; + optional int32 gold_cost = 2; + optional int32 item_cooldown_seconds = 3; + optional bool show_buyback = 4; +} + +message CDOTAClientMsg_PlayerShowCase { + optional bool showcase = 1; +} + +message CDOTAClientMsg_CameraZoomAmount { + optional float zoom_amount = 1; +} + +message CDOTAClientMsg_BroadcasterUsingCameraman { + optional bool cameraman = 1; +} + +message CDOTAClientMsg_BroadcasterUsingAssistedCameraOperator { + optional bool enabled = 1; +} + +message CDOTAClientMsg_FillEmptySlotsWithBots { + optional bool fillwithbots = 1; +} + +message CDOTAClientMsg_HeroStatueLike { + optional int32 owner_player_id = 1 [default = -1]; +} + +message CDOTAClientMsg_EventCNY2015Cmd { + optional bytes data = 1; +} + +message CDOTAClientMsg_DemoHero { + optional int32 hero_id = 1; + optional int32 hero_id_to_spawn = 2; + repeated uint32 item_defs = 3; + repeated uint64 item_ids = 4; + optional uint32 style_index = 5 [default = 255]; + optional bool keep_existing_demohero = 6; + repeated .CSOEconItem item_data = 7; + optional int32 hero_variant = 8; +} + +message CDOTAClientMsg_ChallengeSelect { + optional uint32 event_id = 1; + optional uint32 slot_id = 2; + optional uint32 sequence_id = 3; +} + +message CDOTAClientMsg_ChallengeReroll { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 slot_id = 2; + optional uint32 sequence_id = 3; + optional int32 hero_id = 4; +} + +message CDOTAClientMsg_CoinWager { + optional uint32 wager_amount = 1; +} + +message CDOTAClientMsg_CoinWagerToken { + optional uint64 wager_token_item_id = 1; +} + +message CDOTAClientMsg_RankWager { + optional bool announce_wager = 1; +} + +message CDOTAClientMsg_PlayerBounty { + optional int32 player_id = 1 [default = -1]; +} + +message CDOTAClientMsg_EventPointsTip { + optional int32 recipient_player_id = 1 [default = -1]; +} + +message CDOTAClientMsg_ExecuteOrders { + repeated .CDOTAMsg_UnitOrder orders = 1; +} + +message CDOTAClientMsg_XPAlert { + optional int32 target_entindex = 1 [default = -1]; + optional uint32 damage_taken = 2; +} + +message CDOTAClientMsg_TalentTreeAlert { + optional int32 target_entindex = 1 [default = -1]; + optional int32 ability_id = 2 [default = -1]; + optional int32 slot = 3; + optional bool learned = 4; +} + +message CDOTAClientMsg_KillcamDamageTaken { + optional int32 target_entindex = 1 [default = -1]; + optional uint32 damage_taken = 2; + optional uint32 item_type = 3; + optional int32 item_ability_id = 4 [default = -1]; + optional string hero_name = 5; + optional string damage_color = 6; +} + +message CDOTAClientMsg_KillMyHero { +} + +message CDOTAClientMsg_QuestStatus { + optional uint32 quest_id = 1; + optional uint32 challenge_id = 2; + optional uint32 progress = 3; + optional uint32 goal = 4; + optional uint32 query = 5; + optional float fail_gametime = 6; + optional int32 item_ability_id = 7 [default = -1]; +} + +message CDOTAClientMsg_ToggleAutoattack { + optional int32 mode = 1; + optional bool show_message = 2; +} + +message CDOTAClientMsg_SpecialAbility { + optional uint32 ability_index = 1; + optional int32 target_entindex = 2 [default = -1]; +} + +message CDOTAClientMsg_SetEnemyStartingPosition { + optional int32 enemy_player_id = 1 [default = -1]; + optional uint32 enemy_starting_position = 2; +} + +message CDOTAClientMsg_SetDesiredWardPlacement { + optional uint32 ward_index = 1; + optional float ward_x = 2; + optional float ward_y = 3; +} + +message CDOTAClientMsg_RollDice { + optional uint32 channel_type = 1; + optional uint32 roll_min = 2; + optional uint32 roll_max = 3; +} + +message CDOTAClientMsg_FlipCoin { + optional uint32 channel_type = 1; +} + +message CDOTAClientMsg_RequestItemSuggestions { +} + +message CDOTAClientMsg_SuggestItemPreference { + message ItemPreference { + optional int32 item_id = 1 [default = -1]; + optional .EItemSuggestPreference preference = 2 [default = k_EItemSuggestPreference_None]; + } + + repeated .CDOTAClientMsg_SuggestItemPreference.ItemPreference item_preferences = 1; +} + +message CDOTAClientMsg_MakeTeamCaptain { + optional int32 player_id = 1 [default = -1]; +} + +message CDOTAClientMsg_HelpTipSystemStateChanged { + optional bool tip_displayed = 1; +} + +message CDOTAClientMsg_RequestBulkCombatLog { + optional float game_time = 1; + optional float duration = 2; + optional bool recent_player_death = 3; + optional int32 player_id = 4 [default = -1]; +} + +message CDOTAClientMsg_AbilityDraftRequestAbility { + optional int32 requested_ability_id = 1 [default = -1]; + optional bool ctrl_is_down = 2; +} + +message CDOTAClientMsg_GuideSelectOption { + optional uint32 option = 1; + optional bool force_recalculate = 2; +} + +message CDOTAClientMsg_GuideSelected { + optional uint64 guide_workshop_id = 1; + optional bool is_plus_guide = 2; +} + +message CDOTAClientMsg_DamageReport { + optional int32 target_hero_id = 1; + optional int32 source_hero_id = 2; + optional int32 damage_amount = 3; + optional bool broadcast = 4; +} + +message CDOTAClientMsg_SalutePlayer { + optional int32 target_player_id = 1 [default = -1]; + optional int32 event_id = 2; +} + +message CDOTAClientMsg_GiftPlayer { + optional int32 target_player_id = 1 [default = -1]; + optional uint32 item_def_index = 2; +} + +message CDOTAClientMsg_GiftEveryone { + optional uint32 item_def_index = 1; +} + +message CDOTAClientMsg_TipAlert { + optional string tip_text = 1; +} + +message CDOTAClientMsg_EmptyTeleportAlert { + optional int32 target_entindex = 1 [default = -1]; +} + +message CDOTAClientMsg_SetCavernMapVariant { + optional uint32 map_variant = 1 [default = 255]; +} + +message CDOTAClientMsg_PauseGameOrder { + optional int32 order_id = 1; + optional int32 data = 2; +} + +message CDOTAClientMsg_VersusScene_PlayerBehavior { + optional .EDOTAVersusScenePlayerBehavior behavior = 1 [default = VS_PLAYER_BEHAVIOR_PLAY_ACTIVITY]; + optional .VersusScene_PlayActivity play_activity = 2; + optional .VersusScene_ChatWheel chat_wheel = 3; + optional .VersusScene_PlaybackRate playback_rate = 4; +} + +message CDOTAClientMsg_EmptyItemSlotAlert { + optional int32 target_entindex = 1 [default = -1]; + optional int32 slot_index = 2; +} + +message CDOTAClientMsg_AddOverwatchReportMarker { + optional int32 target_player_id = 1 [default = -1]; + optional .EOverwatchReportReason reason = 2 [default = k_EOverwatchReportReason_Unknown]; + optional uint32 seconds_ago = 4; +} + +message CDOTAClientMsg_AddCommunicationsReportMarker { + optional int32 target_player_id = 1 [default = -1]; +} + +message CDOTAClientMsg_AddCommunicationsBlockMarker { + optional int32 target_player_id = 1 [default = -1]; +} + +message CDOTAClientMsg_AghsStatusAlert { + optional int32 source_player_id = 1 [default = -1]; + optional int32 target_player_id = 2 [default = -1]; + optional int32 target_entindex = 3 [default = -1]; + optional uint32 alert_type = 4; +} + +message CDOTAClientMsg_PerfReport { + optional float average_frame_time = 1; + optional float max_frame_time = 2; + optional float average_compute_time = 3; + optional float max_compute_time = 4; + optional float average_client_tick_time = 5; + optional float max_client_tick_time = 6; + optional float average_client_simulate_time = 7; + optional float max_client_simulate_time = 8; + optional float average_output_time = 9; + optional float max_output_time = 10; + optional float average_wait_for_rendering_to_complete_time = 11; + optional float max_wait_for_rendering_to_complete_time = 12; + optional float average_swap_time = 13; + optional float max_swap_time = 14; + optional float average_frame_update_time = 15; + optional float max_frame_update_time = 16; + optional float average_idle_time = 17; + optional float max_idle_time = 18; + optional float average_input_processing_time = 19; + optional float max_input_processing_time = 20; +} + +message CDOTAClientMsg_ContextualTips_Subscribe_Entry { + optional bool unsubscribe = 1; + optional int32 tip_id = 2; + optional int32 prior_display_count = 3; + repeated int32 variants_seen = 4; +} + +message CDOTAClientMsg_ContextualTips_Subscribe { + repeated .CDOTAClientMsg_ContextualTips_Subscribe_Entry tips = 1; +} + +message CDOTAClientMsg_ChatMessage { + optional uint32 channel_type = 1; + optional string message_text = 2; +} + +message CDOTAClientMsg_DuelAccepted { + optional int32 challenger_player_id = 1 [default = -1]; + optional int32 accepter_player_id = 2 [default = -1]; +} + +message CDOTAClientMsg_ChooseNeutralItem { + optional int32 neutral_item_index = 1; + optional int32 target_entindex = 2 [default = -1]; + optional int32 slot_index = 3; +} + +message CDOTAClientMsg_RerollNeutralItem { + optional int32 target_entindex = 1 [default = -1]; + optional int32 slot_index = 2; +} + +message CDOTAClientMsg_PlayerDraftPick { + optional int32 player_id = 1 [default = -1]; +} + +message CDOTAClientMsg_PlayerDraftSuggest { + optional int32 player_id = 1 [default = -1]; +} + +message CDOTAClientMsg_PlayerDraftPreferRole { + optional int32 role_idx = 1; + optional bool desired = 2; +} + +message CDOTAClientMsg_PlayerDraftPreferTeam { + optional int32 team = 1; +} + +message CDOTAClientMsg_AbilityAlert { + optional uint32 ability_entindex = 1 [default = 16777215]; + optional bool ctrl_held = 2; + optional int32 owner_entindex = 3 [default = -1]; + optional int32 ability_id = 4 [default = -1]; + optional uint32 primary_charges = 5; + optional uint32 secondary_charges = 6; + optional float reclaim_time = 7; +} + +message CDOTAClientMsg_SelectOverworldTokenRewards { + repeated uint32 token_ids = 1; +} + +message CDOTAClientMsg_FacetAlert { + optional uint32 facet_strhash = 1; + optional uint32 hero_entindex = 2 [default = 16777215]; + optional bool ctrl_held = 3; +} + +message CDOTAClientMsg_InnateAlert { + optional uint32 ability_entindex = 1 [default = 16777215]; + optional bool ctrl_held = 2; +} + +message CDOTAClientMsg_SelectOverworldID { + optional uint32 overworld_id = 1; +} + +message CDOTAClientMsg_RoshanTimer { + optional bool negative = 1; +} diff --git a/game/shared/dota/dota_commonmessages.proto b/game/shared/dota/dota_commonmessages.proto new file mode 100644 index 00000000..d9107412 --- /dev/null +++ b/game/shared/dota/dota_commonmessages.proto @@ -0,0 +1,147 @@ +import "networkbasetypes.proto"; + +enum EPingSource { + k_ePingSource_Default = 0; + k_ePingSource_Warning = 1; + k_ePingSource_Wheel = 2; + k_ePingSource_System = 3; +} + +enum EDOTAStatPopupTypes { + k_EDOTA_SPT_Textline = 0; + k_EDOTA_SPT_Basic = 1; + k_EDOTA_SPT_Poll = 2; + k_EDOTA_SPT_Grid = 3; + k_EDOTA_SPT_DualImage = 4; + k_EDOTA_SPT_Movie = 5; +} + +enum dotaunitorder_t { + DOTA_UNIT_ORDER_NONE = 0; + DOTA_UNIT_ORDER_MOVE_TO_POSITION = 1; + DOTA_UNIT_ORDER_MOVE_TO_TARGET = 2; + DOTA_UNIT_ORDER_ATTACK_MOVE = 3; + DOTA_UNIT_ORDER_ATTACK_TARGET = 4; + DOTA_UNIT_ORDER_CAST_POSITION = 5; + DOTA_UNIT_ORDER_CAST_TARGET = 6; + DOTA_UNIT_ORDER_CAST_TARGET_TREE = 7; + DOTA_UNIT_ORDER_CAST_NO_TARGET = 8; + DOTA_UNIT_ORDER_CAST_TOGGLE = 9; + DOTA_UNIT_ORDER_HOLD_POSITION = 10; + DOTA_UNIT_ORDER_TRAIN_ABILITY = 11; + DOTA_UNIT_ORDER_DROP_ITEM = 12; + DOTA_UNIT_ORDER_GIVE_ITEM = 13; + DOTA_UNIT_ORDER_PICKUP_ITEM = 14; + DOTA_UNIT_ORDER_PICKUP_RUNE = 15; + DOTA_UNIT_ORDER_PURCHASE_ITEM = 16; + DOTA_UNIT_ORDER_SELL_ITEM = 17; + DOTA_UNIT_ORDER_DISASSEMBLE_ITEM = 18; + DOTA_UNIT_ORDER_MOVE_ITEM = 19; + DOTA_UNIT_ORDER_CAST_TOGGLE_AUTO = 20; + DOTA_UNIT_ORDER_STOP = 21; + DOTA_UNIT_ORDER_TAUNT = 22; + DOTA_UNIT_ORDER_BUYBACK = 23; + DOTA_UNIT_ORDER_GLYPH = 24; + DOTA_UNIT_ORDER_EJECT_ITEM_FROM_STASH = 25; + DOTA_UNIT_ORDER_CAST_RUNE = 26; + DOTA_UNIT_ORDER_PING_ABILITY = 27; + DOTA_UNIT_ORDER_MOVE_TO_DIRECTION = 28; + DOTA_UNIT_ORDER_PATROL = 29; + DOTA_UNIT_ORDER_VECTOR_TARGET_POSITION = 30; + DOTA_UNIT_ORDER_RADAR = 31; + DOTA_UNIT_ORDER_SET_ITEM_COMBINE_LOCK = 32; + DOTA_UNIT_ORDER_CONTINUE = 33; + DOTA_UNIT_ORDER_VECTOR_TARGET_CANCELED = 34; + DOTA_UNIT_ORDER_CAST_RIVER_PAINT = 35; + DOTA_UNIT_ORDER_PREGAME_ADJUST_ITEM_ASSIGNMENT = 36; + DOTA_UNIT_ORDER_DROP_ITEM_AT_FOUNTAIN = 37; + DOTA_UNIT_ORDER_TAKE_ITEM_FROM_NEUTRAL_ITEM_STASH = 38; + DOTA_UNIT_ORDER_MOVE_RELATIVE = 39; + DOTA_UNIT_ORDER_CAST_TOGGLE_ALT = 40; + DOTA_UNIT_ORDER_CONSUME_ITEM = 41; +} + +enum EDOTAVersusScenePlayerBehavior { + VS_PLAYER_BEHAVIOR_PLAY_ACTIVITY = 1; + VS_PLAYER_BEHAVIOR_CHAT_WHEEL = 2; + VS_PLAYER_BEHAVIOR_PLAYBACK_RATE = 3; +} + +message CDOTAMsg_LocationPing { + optional int32 x = 1; + optional int32 y = 2; + optional int32 target = 3 [default = -1]; + optional bool direct_ping = 4; + optional uint32 type = 5 [default = 4294967295]; + optional .EPingSource ping_source = 6 [default = k_ePingSource_Default]; +} + +message CDOTAMsg_ItemAlert { + optional int32 x = 1; + optional int32 y = 2; + optional int32 item_ability_id = 3 [default = -1]; +} + +message CDOTAMsg_MapLine { + optional int32 x = 1; + optional int32 y = 2; + optional bool initial = 3; +} + +message CDOTAMsg_WorldLine { + optional int32 x = 1; + optional int32 y = 2; + optional int32 z = 3; + optional bool initial = 4; + optional bool end = 5; +} + +message CDOTAMsg_SendStatPopup { + optional .EDOTAStatPopupTypes style = 1 [default = k_EDOTA_SPT_Textline]; + repeated string stat_strings = 2; + repeated int32 stat_images = 3; + repeated int32 stat_image_types = 4; + optional float duration = 5; + optional bool use_html = 6; + optional string movie_name = 7; +} + +message CDOTAMsg_DismissAllStatPopups { + optional float time_delay = 1; +} + +message CDOTAMsg_CoachHUDPing { + optional uint32 x = 1; + optional uint32 y = 2; + optional string tgtpath = 3; +} + +message CDOTAMsg_UnitOrder { + optional .dotaunitorder_t order_type = 2 [default = DOTA_UNIT_ORDER_NONE]; + repeated int32 units = 3; + optional int32 target_index = 4 [default = 0]; + optional int32 ability_index = 5 [default = -1]; + optional .CMsgVector position = 6; + optional int32 sequence_number = 8; + optional uint32 flags = 9; +} + +message VersusScene_PlayActivity { + message ActivityInfo { + optional string activity = 1; + optional bool disable_auto_kill = 2; + optional bool force_looping = 3; + } + + repeated .VersusScene_PlayActivity.ActivityInfo activities = 1; + optional float playback_rate = 2; +} + +message VersusScene_ChatWheel { + optional uint32 chat_message_id = 1 [default = 4294967295]; + optional uint32 emoticon_id = 2; +} + +message VersusScene_PlaybackRate { + optional float rate = 1; +} diff --git a/game/shared/dota/dota_gcmessages_common.proto b/game/shared/dota/dota_gcmessages_common.proto new file mode 100644 index 00000000..2e0c85c6 --- /dev/null +++ b/game/shared/dota/dota_gcmessages_common.proto @@ -0,0 +1,1814 @@ +import "steammessages.proto"; +import "gcsdk_gcmessages.proto"; +import "dota_shared_enums.proto"; + +enum ESpecialPingValue { + k_ESpecialPingValue_NoData = 16382; + k_ESpecialPingValue_Failed = 16383; +} + +enum EDOTAGCSessionNeed { + k_EDOTAGCSessionNeed_Unknown = 0; + k_EDOTAGCSessionNeed_UserNoSessionNeeded = 100; + k_EDOTAGCSessionNeed_UserInOnlineGame = 101; + k_EDOTAGCSessionNeed_UserInLocalGame = 102; + k_EDOTAGCSessionNeed_UserInUIWasConnected = 103; + k_EDOTAGCSessionNeed_UserInUINeverConnected = 104; + k_EDOTAGCSessionNeed_UserTutorials = 105; + k_EDOTAGCSessionNeed_UserInUIWasConnectedIdle = 106; + k_EDOTAGCSessionNeed_UserInUINeverConnectedIdle = 107; + k_EDOTAGCSessionNeed_GameServerOnline = 200; + k_EDOTAGCSessionNeed_GameServerLocal = 201; + k_EDOTAGCSessionNeed_GameServerIdle = 202; + k_EDOTAGCSessionNeed_GameServerRelay = 203; + k_EDOTAGCSessionNeed_GameServerLocalUpload = 204; +} + +enum EDOTAMatchPlayerTimeCustomStat { + k_EDOTA_MatchPlayerTimeCustomStat_HPRegenUnderT1Towers = 1; + k_EDOTA_MatchPlayerTimeCustomStat_MagicDamageReducedWithNewFormula_Absolute = 2; + k_EDOTA_MatchPlayerTimeCustomStat_MagicDamageReducedWithNewFormula_PercentOfTotalHP = 3; +} + +enum DOTA_TournamentEvents { + TE_FIRST_BLOOD = 0; + TE_GAME_END = 1; + TE_MULTI_KILL = 2; + TE_HERO_DENY = 3; + TE_AEGIS_DENY = 4; + TE_AEGIS_STOLEN = 5; + TE_GODLIKE = 6; + TE_COURIER_KILL = 7; + TE_ECHOSLAM = 8; + TE_RAPIER = 9; + TE_EARLY_ROSHAN = 10; + TE_BLACK_HOLE = 11; +} + +enum EBroadcastTimelineEvent { + EBroadcastTimelineEvent_MatchStarted = 1; + EBroadcastTimelineEvent_GameStateChanged = 2; + EBroadcastTimelineEvent_TowerDeath = 3; + EBroadcastTimelineEvent_BarracksDeath = 4; + EBroadcastTimelineEvent_AncientDeath = 5; + EBroadcastTimelineEvent_RoshanDeath = 6; + EBroadcastTimelineEvent_HeroDeath = 7; + EBroadcastTimelineEvent_TeamFight = 8; + EBroadcastTimelineEvent_FirstBlood = 9; +} + +enum ECustomGameWhitelistState { + CUSTOM_GAME_WHITELIST_STATE_UNKNOWN = 0; + CUSTOM_GAME_WHITELIST_STATE_APPROVED = 1; + CUSTOM_GAME_WHITELIST_STATE_REJECTED = 2; +} + +enum EDOTATriviaQuestionCategory { + k_EDOTATriviaQuestionCategory_AbilityIcon = 0; + k_EDOTATriviaQuestionCategory_AbilityCooldown = 1; + k_EDOTATriviaQuestionCategory_HeroAttributes = 2; + k_EDOTATriviaQuestionCategory_HeroMovementSpeed = 3; + k_EDOTATriviaQuestionCategory_TalentTree = 4; + k_EDOTATriviaQuestionCategory_HeroStats = 5; + k_EDOTATriviaQuestionCategory_ItemPrice = 6; + k_EDOTATriviaQuestionCategory_AbilitySound = 7; + k_EDOTATriviaQuestionCategory_InvokerSpells = 8; + k_EDOTATriviaQuestionCategory_AbilityManaCost = 9; + k_EDOTATriviaQuestionCategory_HeroAttackSound = 10; + k_EDOTATriviaQuestionCategory_AbilityName = 11; + k_EDOTATriviaQuestionCategory_ItemComponents = 12; + k_EDOTATriviaQuestionCategory_ItemLore = 13; + k_EDOTATriviaQuestionCategory_ItemPassives = 14; + k_EDOTATriviaQuestionCategory_STATIC_QUESTIONS_END = 15; + k_EDOTATriviaQuestionCategory_DYNAMIC_QUESTIONS_START = 99; + k_EDOTATriviaQuestionCategory_Dynamic_ItemBuild = 100; +} + +enum EOverwatchConviction { + k_EOverwatchConviction_None = 0; + k_EOverwatchConviction_NotGuilty = 1; + k_EOverwatchConviction_GuiltUnclear = 2; + k_EOverwatchConviction_Guilty = 3; +} + +enum EHeroRelicRarity { + HERO_RELIC_RARITY_INVALID = -1; + HERO_RELIC_RARITY_COMMON = 0; + HERO_RELIC_RARITY_RARE = 1; +} + +enum EStickerbookAuditAction { + STICKERBOOK_AUDIT_CREATE_PAGE = 0; + STICKERBOOK_AUDIT_DELETE_PAGE = 1; + STICKERBOOK_AUDIT_STICK_STICKERS = 2; + STICKERBOOK_AUDIT_REPLACE_STICKERS = 3; + STICKERBOOK_AUDIT_HERO_STICKER = 4; +} + +enum EStickerbookPageType { + STICKER_PAGE_GENERIC = 0; + STICKER_PAGE_TEAM = 1; + STICKER_PAGE_TALENT = 2; +} + +enum ENewBloomGiftingResponse { + kENewBloomGifting_Success = 0; + kENewBloomGifting_UnknownFailure = 1; + kENewBloomGifting_MalformedRequest = 2; + kENewBloomGifting_FeatureDisabled = 3; + kENewBloomGifting_ItemNotFound = 4; + kENewBloomGifting_PlayerNotAllowedToGiveGifts = 5; + kENewBloomGifting_TargetNotAllowedToReceiveGifts = 6; + kENewBloomGifting_ServerNotAuthorized = 100; + kENewBloomGifting_PlayerNotInLobby = 101; + kENewBloomGifting_TargetNotInLobby = 102; + kENewBloomGifting_LobbyNotEligible = 103; + kENewBloomGifting_TargetNotFriend = 200; + kENewBloomGifting_TargetFriendDurationTooShort = 201; +} + +message CSODOTAGameAccountClient { + message RoleHandicap { + optional uint32 role = 1; + optional float handicap = 2; + } + + optional uint32 account_id = 1 [(key_field) = true]; + optional uint32 wins = 3; + optional uint32 losses = 4; + optional uint32 xp = 12; + optional uint32 level = 13; + optional uint32 initial_skill = 14; + optional uint32 leaver_count = 15; + optional uint32 secondary_leaver_count = 58; + optional uint32 low_priority_until_date = 18; + optional uint32 prevent_text_chat_until_date = 20; + optional uint32 prevent_voice_until_date = 21; + optional uint32 prevent_public_text_chat_until_date = 86; + optional uint32 prevent_new_player_chat_until_date = 122; + optional uint32 last_abandoned_game_date = 22; + optional uint32 last_secondary_abandoned_game_date = 59; + optional uint32 leaver_penalty_count = 23; + optional uint32 completed_game_streak = 24; + optional uint32 account_disabled_until_date = 38; + optional uint32 account_disabled_count = 39; + optional uint32 match_disabled_until_date = 41; + optional uint32 match_disabled_count = 42; + optional uint32 shutdownlawterminatetimestamp = 47; + optional uint32 low_priority_games_remaining = 48; + optional uint32 recruitment_level = 55; + optional bool has_new_notifications = 56; + optional bool is_league_admin = 57; + optional uint32 casual_games_played = 60; + optional uint32 solo_competitive_games_played = 61; + optional uint32 party_competitive_games_played = 62; + optional uint32 casual_1v1_games_played = 65; + optional int32 curr_all_hero_challenge_id = 67; + optional uint32 play_time_points = 68; + optional uint32 account_flags = 69; + optional uint32 play_time_level = 70; + optional uint32 player_behavior_seq_num_last_report = 71; + optional uint32 player_behavior_score_last_report = 72; + optional bool player_behavior_report_old_data = 73; + optional uint32 tourney_skill_level = 74; + optional uint32 tourney_recent_participation_date = 85; + optional uint64 anchored_phone_number_id = 88; + optional uint32 ranked_matchmaking_ban_until_date = 89; + optional uint32 recent_game_time_1 = 90; + optional uint32 recent_game_time_2 = 91; + optional uint32 recent_game_time_3 = 92; + optional uint64 favorite_team_packed = 103; + optional uint32 recent_report_time = 104; + optional uint32 custom_game_disabled_until_date = 105; + optional uint32 recent_win_time_1 = 106; + optional uint32 recent_win_time_2 = 107; + optional uint32 recent_win_time_3 = 108; + optional uint32 coach_rating = 109; + optional uint32 queue_points = 114; + repeated .CSODOTAGameAccountClient.RoleHandicap role_handicaps = 115; + optional uint32 event_mode_recent_time = 120; + optional uint32 mmr_recalibration_time = 121; + repeated int32 banned_hero_ids = 123; +} + +message CSODOTAGameAccountPlus { + optional uint32 account_id = 1 [(key_field) = true]; + optional uint32 original_start_date = 2; + optional uint32 plus_flags = 3; + optional uint32 plus_status = 4; + optional uint32 prepaid_time_start = 5; + optional uint32 prepaid_time_balance = 6; + optional fixed32 next_payment_date = 7; + optional fixed64 steam_agreement_id = 8; +} + +message CSODOTAChatWheel { + optional uint32 message_id = 1 [default = 4294967295, (key_field) = true]; +} + +message CMsgLobbyFeaturedGamemodeProgress { + message AccountProgress { + optional uint32 account_id = 1; + optional uint32 current_value = 2; + optional uint32 max_value = 3; + } + + repeated .CMsgLobbyFeaturedGamemodeProgress.AccountProgress accounts = 1; +} + +message CMsgBattleCupVictory { + optional uint32 account_id = 1; + optional uint32 win_date = 2; + optional uint32 valid_until = 3; + optional uint32 skill_level = 4; + optional uint32 tournament_id = 5; + optional uint32 division_id = 6; + optional uint32 team_id = 7; + optional uint32 streak = 8; + optional uint32 trophy_id = 9; +} + +message CMsgLobbyBattleCupVictoryList { + repeated .CMsgBattleCupVictory winners = 1; +} + +message CMsgDOTABroadcastNotification { + optional string message = 1; +} + +message CProtoItemHeroStatue { + optional int32 hero_id = 1; + optional uint32 status_effect_index = 2; + optional string sequence_name = 3; + optional float cycle = 4; + repeated uint32 wearable = 5; + optional string inscription = 6; + repeated uint32 style = 7; + optional bool tournament_drop = 8; +} + +message CMatchPlayerAbilityUpgrade { + optional int32 ability = 1 [default = -1]; + optional uint32 time = 2; +} + +message CMatchPlayerTimedCustomStat { + optional .EDOTAMatchPlayerTimeCustomStat stat = 2 [default = k_EDOTA_MatchPlayerTimeCustomStat_HPRegenUnderT1Towers]; + optional float value = 3; +} + +message CMatchPlayerTimedStats { + optional uint32 time = 1; + optional uint32 kills = 2; + optional uint32 deaths = 3; + optional uint32 assists = 4; + optional uint32 net_worth = 5; + optional uint32 xp = 6; + optional uint32 last_hits = 7; + optional uint32 denies = 8; + optional uint32 bounty_rune_gold = 9; + optional uint32 range_creep_upgrade_gold = 10; + optional uint32 observer_wards_dewarded = 11; + optional uint32 reliable_gold_earned = 12; + optional uint32 gold_loss_prevented = 13; + optional uint32 hero_kill_gold = 14; + optional uint32 creep_kill_gold = 15; + optional uint32 building_gold = 16; + optional uint32 other_gold = 17; + optional uint32 comeback_gold = 18; + optional uint32 experimental_gold = 19; + optional uint32 experimental2_gold = 20; + optional uint32 creep_deny_gold = 21; + optional uint32 tp_scrolls_purchased_1 = 22; + optional uint32 tp_scrolls_purchased_2 = 23; + optional uint32 tp_scrolls_purchased_3 = 24; + optional uint32 tp_scrolls_purchased_4 = 25; + optional uint32 tp_scrolls_purchased_5 = 26; + optional uint32 neutral_gold = 27; + optional uint32 courier_gold = 28; + optional uint32 roshan_gold = 29; + optional uint32 income_gold = 30; + optional uint32 item_value = 36; + optional uint32 support_gold_spent = 37; + optional uint32 camps_stacked = 38; + optional uint32 wards_placed = 39; + optional uint32 triple_kills = 40; + optional uint32 rampages = 41; + repeated .CMatchPlayerTimedCustomStat custom_stats = 42; +} + +message CMatchTeamTimedStats { + optional uint32 time = 1; + optional uint32 enemy_towers_killed = 2; + optional uint32 enemy_barracks_killed = 3; + optional uint32 enemy_towers_status = 4; + optional uint32 enemy_barracks_status = 5; +} + +message CMatchAdditionalUnitInventory { + optional string unit_name = 1; + repeated int32 items = 2; +} + +message CMatchPlayerPermanentBuff { + optional uint32 permanent_buff = 1; + optional uint32 stack_count = 2; + optional uint32 grant_time = 3; +} + +message CMatchHeroSelectEvent { + optional bool is_pick = 1; + optional uint32 team = 2; + optional int32 hero_id = 3; +} + +message CMatchClip { + optional uint64 match_id = 1; + optional uint32 player_account_id = 2; + optional uint32 game_time_seconds = 3; + optional uint32 duration_seconds = 4; + optional uint32 player_id = 5; + optional int32 hero_id = 6; + optional int32 ability_id = 7 [default = -1]; + optional uint32 camera_mode = 8; + optional string comment = 9; +} + +message CPartySearchClientParty { + optional fixed64 party_id = 1; + optional int32 beacon_type = 2; + repeated fixed32 party_members = 3; +} + +message CMsgDOTAHasItemQuery { + optional uint32 account_id = 1; + optional uint64 item_id = 2; +} + +message CMsgDOTAHasItemResponse { + optional bool has_item = 1; +} + +message CMsgGCGetPlayerCardItemInfo { + optional uint32 account_id = 1; + repeated uint64 player_card_item_ids = 2; + optional uint32 all_for_event = 3; +} + +message CMsgGCGetPlayerCardItemInfoResponse { + message PlayerCardInfo { + optional uint64 player_card_item_id = 1; + optional uint32 account_id = 2; + optional uint64 packed_bonuses = 3; + } + + repeated .CMsgGCGetPlayerCardItemInfoResponse.PlayerCardInfo player_card_infos = 1; +} + +message CSODOTAMapLocationState { + optional uint32 account_id = 1 [(key_field) = true]; + optional int32 location_id = 2 [(key_field) = true]; + optional bool completed = 3; +} + +message CMsgLeagueAdminList { + repeated uint32 account_ids = 1; +} + +message CMsgDOTAProfileCard { + message Slot { + message Trophy { + optional uint32 trophy_id = 1; + optional uint32 trophy_score = 2; + } + + message Stat { + optional .CMsgDOTAProfileCard.EStatID stat_id = 1 [default = k_eStat_Wins]; + optional uint32 stat_score = 2; + } + + message Item { + optional bytes serialized_item = 1; + optional uint64 item_id = 2; + } + + message Hero { + optional int32 hero_id = 1; + optional uint32 hero_wins = 2; + optional uint32 hero_losses = 3; + } + + message Emoticon { + optional uint32 emoticon_id = 1; + } + + message Team { + optional uint32 team_id = 1; + } + + optional uint32 slot_id = 1; + optional .CMsgDOTAProfileCard.Slot.Trophy trophy = 2; + optional .CMsgDOTAProfileCard.Slot.Stat stat = 3; + optional .CMsgDOTAProfileCard.Slot.Item item = 4; + optional .CMsgDOTAProfileCard.Slot.Hero hero = 5; + optional .CMsgDOTAProfileCard.Slot.Emoticon emoticon = 6; + optional .CMsgDOTAProfileCard.Slot.Team team = 7; + } + + enum EStatID { + k_eStat_Wins = 3; + k_eStat_Commends = 4; + k_eStat_GamesPlayed = 5; + k_eStat_FirstMatchDate = 6; + k_eStat_PreviousSeasonRank = 7; + k_eStat_GamesMVP = 8; + } + + optional uint32 account_id = 1; + repeated .CMsgDOTAProfileCard.Slot slots = 3; + optional uint32 badge_points = 4; + optional uint32 event_id = 6; + optional .CMsgBattleCupVictory recent_battle_cup_victory = 7; + optional uint32 rank_tier = 8; + optional uint32 leaderboard_rank = 9; + optional bool is_plus_subscriber = 10; + optional uint32 plus_original_start_date = 11; + optional uint32 rank_tier_score = 12; + optional uint32 leaderboard_rank_core = 17; + optional uint32 title = 23; + optional uint64 favorite_team_packed = 24; + optional uint32 lifetime_games = 25; + optional uint32 event_level = 26; +} + +message CSODOTAPlayerChallenge { + optional uint32 account_id = 1 [(key_field) = true]; + optional uint32 event_id = 2 [(key_field) = true]; + optional uint32 slot_id = 3 [(key_field) = true]; + optional uint32 int_param_0 = 5; + optional uint32 int_param_1 = 6; + optional uint32 created_time = 7; + optional uint32 completed = 8; + optional uint32 sequence_id = 9; + optional uint32 challenge_tier = 10; + optional uint32 flags = 11; + optional uint32 attempts = 12; + optional uint32 complete_limit = 13; + optional uint32 quest_rank = 14; + optional uint32 max_quest_rank = 15; + optional uint32 instance_id = 16; + optional int32 hero_id = 17; + optional uint32 template_id = 18; +} + +message CMsgClientToGCRerollPlayerChallenge { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 sequence_id = 3; + optional int32 hero_id = 4; +} + +message CMsgGCRerollPlayerChallengeResponse { + enum EResult { + eResult_Success = 0; + eResult_Dropped = 1; + eResult_NotFound = 2; + eResult_CantReroll = 3; + eResult_ServerError = 4; + } + + optional .CMsgGCRerollPlayerChallengeResponse.EResult result = 1 [default = eResult_Success]; +} + +message CMsgGCTopCustomGamesList { + repeated uint64 top_custom_games = 1; + optional uint64 game_of_the_day = 2; +} + +message CMsgDOTARealtimeGameStats { + message TeamDetails { + optional uint32 team_number = 1; + optional uint32 team_id = 2; + optional string team_name = 3; + optional fixed64 team_logo = 4; + optional string team_tag = 10; + optional uint32 score = 5; + optional uint32 net_worth = 9; + repeated .CMsgDOTARealtimeGameStats.PlayerDetails players = 6; + optional bool only_team = 7; + optional uint32 cheers = 8; + optional string team_logo_url = 11; + } + + message ItemDetails { + optional int32 item_ability_id = 1 [default = -1]; + optional string name = 2; + optional int32 time = 3; + optional bool sold = 4; + optional uint32 stackcount = 5; + } + + message AbilityDetails { + optional int32 id = 1 [default = -1]; + optional string name = 2; + optional uint32 level = 3; + optional float cooldown = 4; + optional float cooldown_max = 5; + } + + message HeroToHeroStats { + optional int32 victimid = 1 [default = -1]; + optional uint32 kills = 2; + optional uint32 assists = 3; + } + + message AbilityList { + repeated int32 id = 1; + } + + message PlayerDetails { + optional uint32 accountid = 1; + optional int32 playerid = 2 [default = -1]; + optional string name = 3; + optional uint32 team = 4; + optional int32 heroid = 5; + optional uint32 healthpoints = 6; + optional uint32 maxhealthpoints = 7; + optional float healthregenrate = 8; + optional uint32 manapoints = 9; + optional uint32 maxmanapoints = 10; + optional float manaregenrate = 11; + optional uint32 base_strength = 12; + optional uint32 base_agility = 13; + optional uint32 base_intelligence = 14; + optional int32 base_armor = 15; + optional uint32 base_movespeed = 16; + optional uint32 base_damage = 17; + optional uint32 strength = 18; + optional uint32 agility = 19; + optional uint32 intelligence = 20; + optional int32 armor = 21; + optional uint32 movespeed = 22; + optional uint32 damage = 23; + optional uint32 hero_damage = 24; + optional uint32 tower_damage = 25; + repeated .CMsgDOTARealtimeGameStats.AbilityDetails abilities = 26; + optional uint32 level = 27; + optional uint32 kill_count = 28; + optional uint32 death_count = 29; + optional uint32 assists_count = 30; + optional uint32 denies_count = 31; + optional uint32 lh_count = 32; + optional uint32 hero_healing = 33; + optional uint32 gold_per_min = 34; + optional uint32 xp_per_min = 35; + optional uint32 net_gold = 36; + optional uint32 gold = 37; + optional float x = 38; + optional float y = 39; + optional int32 respawn_time = 40; + optional uint32 ultimate_cooldown = 41; + optional bool has_buyback = 42; + repeated .CMsgDOTARealtimeGameStats.ItemDetails items = 43; + repeated .CMsgDOTARealtimeGameStats.ItemDetails stashitems = 44; + repeated .CMsgDOTARealtimeGameStats.ItemDetails itemshoppinglist = 45; + repeated .CMsgDOTARealtimeGameStats.AbilityList levelpoints = 46; + repeated .CMsgDOTARealtimeGameStats.HeroToHeroStats hero_to_hero_stats = 47; + optional bool has_ultimate = 48; + optional bool has_ultimate_mana = 49; + optional uint32 team_slot = 50; + } + + message BuildingDetails { + optional uint32 team = 2; + optional float heading = 3; + optional uint32 lane = 4; + optional uint32 tier = 5; + optional uint32 type = 6; + optional float x = 7; + optional float y = 8; + optional bool destroyed = 9; + } + + message KillDetails { + optional int32 player_id = 1 [default = -1]; + optional int32 death_time = 2; + optional int32 killer_player_id = 3 [default = -1]; + } + + message BroadcasterDetails { + optional int32 player_id = 1 [default = -1]; + } + + message PickBanDetails { + optional int32 hero = 1; + optional uint32 team = 2; + } + + message MatchDetails { + optional fixed64 server_steam_id = 1; + optional uint64 match_id = 2; + optional uint32 timestamp = 3; + optional float time_of_day = 4; + optional bool is_nightstalker_night = 5; + optional int32 game_time = 6; + optional uint32 game_state = 19; + optional uint32 teamid_radiant = 8; + optional uint32 teamid_dire = 9; + repeated .CMsgDOTARealtimeGameStats.PickBanDetails picks = 10; + repeated .CMsgDOTARealtimeGameStats.PickBanDetails bans = 11; + repeated .CMsgDOTARealtimeGameStats.KillDetails kills = 12; + repeated .CMsgDOTARealtimeGameStats.BroadcasterDetails broadcasters = 13; + optional uint32 game_mode = 14; + optional uint32 league_id = 15; + optional uint32 league_node_id = 18; + optional bool single_team = 16; + optional uint32 cheers_peak = 17; + optional uint32 lobby_type = 20; + optional uint32 start_timestamp = 21; + } + + message GraphData { + message LocationStats { + repeated int32 stats = 1; + } + + message TeamLocationStats { + repeated .CMsgDOTARealtimeGameStats.GraphData.LocationStats loc_stats = 1; + } + + enum eStat { + CreepGoldEarned = 0; + KillGoldEarned = 1; + DeathAndBuybackGoldLost = 2; + XPEarned = 3; + } + + enum eLocation { + BotLane = 0; + MidLane = 1; + TopLane = 2; + Jungle = 3; + Ancients = 4; + Other = 5; + } + + repeated int32 graph_gold = 1; + repeated int32 graph_xp = 2; + repeated int32 graph_kill = 3; + repeated int32 graph_tower = 4; + repeated int32 graph_rax = 5; + repeated .CMsgDOTARealtimeGameStats.GraphData.TeamLocationStats team_loc_stats = 6; + } + + optional .CMsgDOTARealtimeGameStats.MatchDetails match = 1; + repeated .CMsgDOTARealtimeGameStats.TeamDetails teams = 2; + repeated .CMsgDOTARealtimeGameStats.BuildingDetails buildings = 3; + optional .CMsgDOTARealtimeGameStats.GraphData graph_data = 4; + optional bool delta_frame = 5; +} + +message CMsgDOTARealtimeGameStatsTerse { + message TeamDetails { + optional uint32 team_number = 1; + optional uint32 team_id = 2; + optional string team_name = 3; + optional string team_tag = 8; + optional fixed64 team_logo = 4; + optional uint32 score = 5; + optional uint32 net_worth = 7; + optional string team_logo_url = 9; + repeated .CMsgDOTARealtimeGameStatsTerse.PlayerDetails players = 6; + } + + message PlayerDetails { + optional uint32 accountid = 1; + optional int32 playerid = 2 [default = -1]; + optional string name = 3; + optional uint32 team = 4; + optional int32 heroid = 5; + optional uint32 level = 6; + optional uint32 kill_count = 7; + optional uint32 death_count = 8; + optional uint32 assists_count = 9; + optional uint32 denies_count = 10; + optional uint32 lh_count = 11; + optional uint32 gold = 12; + optional float x = 13; + optional float y = 14; + optional uint32 net_worth = 15; + repeated int32 abilities = 16; + repeated int32 items = 17; + optional uint32 team_slot = 18; + } + + message BuildingDetails { + optional uint32 team = 1; + optional float heading = 2; + optional uint32 type = 3; + optional uint32 lane = 4; + optional uint32 tier = 5; + optional float x = 6; + optional float y = 7; + optional bool destroyed = 8; + } + + message PickBanDetails { + optional int32 hero = 1; + optional uint32 team = 2; + } + + message MatchDetails { + optional fixed64 server_steam_id = 1; + optional uint64 match_id = 2; + optional uint32 timestamp = 3; + optional int32 game_time = 4; + repeated uint32 steam_broadcaster_account_ids = 6; + optional uint32 game_mode = 7; + optional uint32 league_id = 8; + optional uint32 league_node_id = 9; + optional uint32 game_state = 10; + repeated .CMsgDOTARealtimeGameStatsTerse.PickBanDetails picks = 11; + repeated .CMsgDOTARealtimeGameStatsTerse.PickBanDetails bans = 12; + optional uint32 lobby_type = 13; + optional uint32 start_timestamp = 14; + } + + message GraphData { + repeated int32 graph_gold = 1; + } + + optional .CMsgDOTARealtimeGameStatsTerse.MatchDetails match = 1; + repeated .CMsgDOTARealtimeGameStatsTerse.TeamDetails teams = 2; + repeated .CMsgDOTARealtimeGameStatsTerse.BuildingDetails buildings = 3; + optional .CMsgDOTARealtimeGameStatsTerse.GraphData graph_data = 4; + optional bool delta_frame = 5; +} + +message CMsgDOTABroadcastTimelineEvent { + optional .EBroadcastTimelineEvent event = 1 [default = EBroadcastTimelineEvent_MatchStarted]; + optional fixed32 timestamp = 2; + optional uint32 data = 3; + optional string string_data = 4; +} + +message CMsgGCToClientMatchGroupsVersion { + optional uint32 matchgroups_version = 1; +} + +message CMsgDOTASDOHeroStatsHistory { + optional uint64 match_id = 1; + optional uint32 game_mode = 2; + optional uint32 lobby_type = 3; + optional uint32 start_time = 4; + optional bool won = 5; + optional uint32 gpm = 6; + optional uint32 xpm = 7; + optional uint32 kills = 8; + optional uint32 deaths = 9; + optional uint32 assists = 10; +} + +message CMsgPredictionChoice { + optional uint32 value = 1; + optional string name = 2; + optional uint32 min_raw_value = 3; + optional uint32 max_raw_value = 4; +} + +message CMsgInGamePrediction { + message QueryKeyValues { + optional string name = 1; + optional string value = 2; + } + + enum ERawValueType_t { + Number = 0; + Time = 1; + } + + enum EPredictionType { + Generic = 0; + Hero = 1; + Team = 2; + Player = 3; + Special = 4; + YesNo = 5; + QualifiersTeam = 6; + } + + enum EResolutionType_t { + InvalidQuery = 0; + FirstToPassQuery = 1; + LastToPassQuery = 2; + LastRemainingQuery = 3; + MaxToPassQuery = 4; + MinToPassQuery = 5; + SumQuery = 6; + MaxTeamSumToPassQuery = 7; + MinTeamSumToPassQuery = 8; + } + + enum ERandomSelectionGroup_t { + EarlyGame = 0; + MidGame = 1; + LateGame = 2; + Count = 3; + } + + optional uint32 id = 1; + optional string name = 2; + optional .CMsgInGamePrediction.EPredictionType type = 3 [default = Generic]; + optional .CMsgInGamePrediction.ERandomSelectionGroup_t group = 4 [default = EarlyGame]; + optional string question = 5; + repeated .CMsgPredictionChoice choices = 6; + repeated string required_heroes = 7; + optional string query_name = 8; + repeated .CMsgInGamePrediction.QueryKeyValues query_values = 9; + optional .CMsgInGamePrediction.EResolutionType_t answer_resolution_type = 10 [default = InvalidQuery]; + optional uint32 points_to_grant = 11; + optional uint32 reward_action = 12; + optional uint32 debug_force_selection = 13; + optional .CMsgInGamePrediction.ERawValueType_t raw_value_type = 14 [default = Number]; +} + +message CMsgDOTASeasonPredictions { + message Prediction { + message Answers { + optional uint32 answer_id = 1; + } + + enum EPredictionType { + Generic = 0; + Hero = 1; + Team = 2; + Player = 3; + Special = 4; + YesNo = 5; + QualifiersTeam = 6; + LastChanceTeam = 7; + } + + enum EAnswerType { + SingleInt = 0; + SingleFloat = 1; + MultipleInt = 2; + MultipleFloat = 3; + AnswerTeam = 4; + SingleTime = 5; + MultipleTime = 6; + NoAnswer = 7; + } + + optional .CMsgDOTASeasonPredictions.Prediction.EPredictionType type = 1 [default = Generic]; + optional string question = 2; + repeated .CMsgPredictionChoice choices = 3; + optional uint32 selection_id = 4; + optional uint32 start_date = 5; + optional uint32 lock_date = 6; + optional uint32 reward = 7; + optional .CMsgDOTASeasonPredictions.Prediction.EAnswerType answer_type = 8 [default = SingleInt]; + optional uint32 answer_id = 9; + repeated .CMsgDOTASeasonPredictions.Prediction.Answers answers = 10; + optional string query_name = 11; + optional uint32 lock_on_selection_id = 13; + optional uint32 lock_on_selection_value = 14; + optional bool lock_on_selection_set = 15; + optional bool use_answer_value_ranges = 16; + optional .ELeagueRegion region = 17 [default = LEAGUE_REGION_UNSET]; + repeated .ELeaguePhase phases = 18; + optional .EEvent reward_event = 19 [default = EVENT_ID_NONE]; + optional uint32 league_node_id = 20; + } + + repeated .CMsgDOTASeasonPredictions.Prediction predictions = 1; + repeated .CMsgInGamePrediction in_game_predictions = 2; + optional uint32 in_game_prediction_count_per_game = 3; + optional uint32 in_game_prediction_voting_period_minutes = 4; +} + +message CMsgAvailablePredictions { + message MatchPrediction { + optional uint64 match_id = 1; + repeated .CMsgInGamePrediction predictions = 2; + } + + repeated .CMsgAvailablePredictions.MatchPrediction match_predictions = 1; +} + +message CMsgLeagueWatchedGames { + message Series { + optional uint32 node_id = 1; + repeated uint32 game = 2; + } + + message League { + optional uint32 league_id = 1; + repeated .CMsgLeagueWatchedGames.Series series = 2; + } + + repeated .CMsgLeagueWatchedGames.League leagues = 1; +} + +message CMsgDOTAMatch { + message Player { + message CustomGameData { + optional uint32 dota_team = 1; + optional bool winner = 2; + } + + message HeroDamageReceived { + optional uint32 pre_reduction = 1; + optional uint32 post_reduction = 2; + optional .CMsgDOTAMatch.Player.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL]; + } + + enum HeroDamageType { + HERO_DAMAGE_PHYSICAL = 0; + HERO_DAMAGE_MAGICAL = 1; + HERO_DAMAGE_PURE = 2; + } + + optional uint32 account_id = 1; + optional uint32 player_slot = 2; + optional int32 hero_id = 3; + optional int32 item_0 = 4 [default = -1]; + optional int32 item_1 = 5 [default = -1]; + optional int32 item_2 = 6 [default = -1]; + optional int32 item_3 = 7 [default = -1]; + optional int32 item_4 = 8 [default = -1]; + optional int32 item_5 = 9 [default = -1]; + optional int32 item_6 = 59 [default = -1]; + optional int32 item_7 = 60 [default = -1]; + optional int32 item_8 = 61 [default = -1]; + optional int32 item_9 = 76 [default = -1]; + optional float expected_team_contribution = 10; + optional float scaled_metric = 11; + optional uint32 previous_rank = 12; + optional sint32 rank_change = 13; + optional uint32 mmr_type = 74; + optional uint32 kills = 14; + optional uint32 deaths = 15; + optional uint32 assists = 16; + optional uint32 leaver_status = 17; + optional uint32 gold = 18; + optional uint32 last_hits = 19; + optional uint32 denies = 20; + optional uint32 gold_per_min = 21; + optional uint32 xp_per_min = 22; + optional uint32 gold_spent = 23; + optional uint32 hero_damage = 24; + optional uint32 tower_damage = 25; + optional uint32 hero_healing = 26; + optional uint32 level = 27; + optional uint32 time_last_seen = 28; + optional string player_name = 29; + optional uint32 support_ability_value = 30; + optional bool feeding_detected = 32; + optional uint32 search_rank = 34; + optional uint32 search_rank_uncertainty = 35; + optional int32 rank_uncertainty_change = 36; + optional uint32 hero_play_count = 37; + optional fixed64 party_id = 38; + optional uint32 scaled_hero_damage = 54; + optional uint32 scaled_tower_damage = 55; + optional uint32 scaled_hero_healing = 56; + optional float scaled_kills = 39; + optional float scaled_deaths = 40; + optional float scaled_assists = 41; + optional uint32 claimed_farm_gold = 42; + optional uint32 support_gold = 43; + optional uint32 claimed_denies = 44; + optional uint32 claimed_misses = 45; + optional uint32 misses = 46; + repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47; + repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48; + repeated .CMatchPlayerPermanentBuff permanent_buffs = 57; + optional string pro_name = 72; + optional string real_name = 73; + optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50; + optional bool active_plus_subscription = 51; + optional uint32 net_worth = 52; + optional uint32 bot_difficulty = 58; + optional uint32 hero_pick_order = 63; + optional bool hero_was_randomed = 64; + optional bool hero_was_dota_plus_suggestion = 69; + repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67; + repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79; + optional uint32 seconds_dead = 70; + optional uint32 gold_lost_to_death = 71; + optional uint32 lane_selection_flags = 75; + optional uint32 bounty_runes = 77; + optional uint32 outposts_captured = 78; + optional .DOTA_GC_TEAM team_number = 80 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional uint32 team_slot = 81; + optional uint32 selected_facet = 82; + } + + message BroadcasterInfo { + optional uint32 account_id = 1; + optional string name = 2; + } + + message BroadcasterChannel { + optional string country_code = 1; + optional string description = 2; + repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3; + optional string language_code = 4; + } + + message Coach { + optional uint32 account_id = 1; + optional string coach_name = 2; + optional uint32 coach_rating = 3; + optional uint32 coach_team = 4; + optional uint64 coach_party_id = 5; + optional bool is_private_coach = 6; + } + + message CustomGameData { + optional uint64 custom_game_id = 1; + optional string map_name = 2; + } + + enum ReplayState { + REPLAY_AVAILABLE = 0; + REPLAY_NOT_RECORDED = 1; + REPLAY_EXPIRED = 2; + } + + optional uint32 duration = 3; + optional fixed32 starttime = 4; + repeated .CMsgDOTAMatch.Player players = 5; + optional uint64 match_id = 6; + repeated uint32 tower_status = 8; + repeated uint32 barracks_status = 9; + optional uint32 cluster = 10; + optional uint32 first_blood_time = 12; + optional fixed32 replay_salt = 13; + optional fixed32 server_ip = 14; + optional uint32 server_port = 15; + optional uint32 lobby_type = 16; + optional uint32 human_players = 17; + optional uint32 average_skill = 18; + optional float game_balance = 19; + optional uint32 radiant_team_id = 20; + optional uint32 dire_team_id = 21; + optional uint32 leagueid = 22; + optional string radiant_team_name = 23; + optional string dire_team_name = 24; + optional uint64 radiant_team_logo = 25; + optional uint64 dire_team_logo = 26; + optional string radiant_team_logo_url = 54; + optional string dire_team_logo_url = 55; + optional uint32 radiant_team_complete = 27; + optional uint32 dire_team_complete = 28; + optional .DOTA_GameMode game_mode = 31 [default = DOTA_GAMEMODE_NONE]; + repeated .CMatchHeroSelectEvent picks_bans = 32; + optional uint64 match_seq_num = 33; + optional .CMsgDOTAMatch.ReplayState replay_state = 34 [default = REPLAY_AVAILABLE]; + optional uint32 radiant_guild_id = 35; + optional uint32 dire_guild_id = 36; + optional string radiant_team_tag = 37; + optional string dire_team_tag = 38; + optional uint32 series_id = 39; + optional uint32 series_type = 40; + repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43; + optional uint32 engine = 44; + optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45; + optional uint32 match_flags = 46; + optional fixed32 private_metadata_key = 47; + optional uint32 radiant_team_score = 48; + optional uint32 dire_team_score = 49; + optional .EMatchOutcome match_outcome = 50 [default = k_EMatchOutcome_Unknown]; + optional uint32 tournament_id = 51; + optional uint32 tournament_round = 52; + optional uint32 pre_game_duration = 53; + repeated .CMsgDOTAMatch.Coach coaches = 57; +} + +message CMsgPlayerCard { + message StatModifier { + optional uint32 stat = 1; + optional uint32 value = 2; + } + + optional uint32 account_id = 1; + repeated .CMsgPlayerCard.StatModifier stat_modifier = 2; +} + +message CMsgDOTAFantasyPlayerStats { + optional uint32 player_account_id = 1; + optional uint64 match_id = 2; + optional bool match_completed = 3; + optional uint32 team_id = 4; + optional uint32 league_id = 5; + optional uint32 delay = 6; + optional uint32 series_id = 7; + optional uint32 series_type = 8; + optional uint32 kills = 10; + optional uint32 deaths = 11; + optional uint32 cs = 12; + optional float gpm = 13; + optional uint32 tower_kills = 14; + optional uint32 roshan_kills = 15; + optional float teamfight_participation = 16; + optional uint32 wards_placed = 17; + optional uint32 camps_stacked = 18; + optional uint32 runes_grabbed = 19; + optional uint32 first_blood = 20; + optional float stuns = 21; + optional uint32 smokes = 22; + optional uint32 neutral_tokens = 23; + optional uint32 watchers = 24; + optional uint32 lotuses = 25; + optional uint32 tormentors = 26; + optional uint32 courier_kills = 27; + optional fixed64 title_stats = 28; +} + +message CMsgDOTAFantasyPlayerMatchStats { + repeated .CMsgDOTAFantasyPlayerStats matches = 1; +} + +message CMsgDOTABotDebugInfo { + message Bot { + message Mode { + optional uint32 mode_id = 1; + optional float desire = 2; + optional int32 target_entity = 3 [default = -1]; + optional uint32 target_x = 4; + optional uint32 target_y = 5; + optional uint32 target_z = 6; + } + + message Action { + optional uint32 action_id = 1; + optional string action_target = 2; + } + + optional int32 player_owner_id = 1 [default = -1]; + optional int32 hero_id = 2; + optional uint32 difficulty = 3; + optional uint32 power_current = 4; + optional uint32 power_max = 5; + optional uint32 move_target_x = 6; + optional uint32 move_target_y = 7; + optional uint32 move_target_z = 8; + optional uint32 active_mode_id = 9; + optional float execution_time = 10; + repeated .CMsgDOTABotDebugInfo.Bot.Mode modes = 11; + optional .CMsgDOTABotDebugInfo.Bot.Action action = 12; + } + + repeated .CMsgDOTABotDebugInfo.Bot bots = 1; + optional float desire_push_lane_top = 2; + optional float desire_push_lane_mid = 3; + optional float desire_push_lane_bot = 4; + optional float desire_defend_lane_top = 5; + optional float desire_defend_lane_mid = 6; + optional float desire_defend_lane_bot = 7; + optional float desire_farm_lane_top = 8; + optional float desire_farm_lane_mid = 9; + optional float desire_farm_lane_bot = 10; + optional float desire_farm_roshan = 11; + optional float execution_time = 12; + repeated uint32 rune_status = 13; +} + +message CMsgSuccessfulHero { + optional int32 hero_id = 1; + optional float win_percent = 2; + optional uint32 longest_streak = 3; +} + +message CMsgRecentMatchInfo { + optional uint64 match_id = 1; + optional .DOTA_GameMode game_mode = 2 [default = DOTA_GAMEMODE_NONE]; + optional uint32 kills = 3; + optional uint32 deaths = 4; + optional uint32 assists = 5; + optional uint32 duration = 6; + optional uint32 player_slot = 7; + optional .EMatchOutcome match_outcome = 8 [default = k_EMatchOutcome_Unknown]; + optional uint32 timestamp = 9; + optional uint32 lobby_type = 10; + optional uint32 team_number = 11; +} + +message CMsgMatchTips { + message SingleTip { + optional uint32 source_account_id = 1; + optional uint32 target_account_id = 2; + optional uint32 tip_amount = 3; + optional .EEvent event_id = 4 [default = EVENT_ID_NONE]; + } + + repeated .CMsgMatchTips.SingleTip tips = 2; +} + +message CMsgDOTAMatchMinimal { + message Player { + optional uint32 account_id = 1; + optional int32 hero_id = 2; + optional uint32 kills = 3; + optional uint32 deaths = 4; + optional uint32 assists = 5; + repeated int32 items = 6; + optional uint32 player_slot = 7; + optional string pro_name = 8; + optional uint32 level = 9; + optional .DOTA_GC_TEAM team_number = 10 [default = DOTA_GC_TEAM_GOOD_GUYS]; + } + + message Tourney { + optional uint32 league_id = 1; + optional uint32 series_type = 8; + optional uint32 series_game = 9; + optional uint32 weekend_tourney_tournament_id = 10; + optional uint32 weekend_tourney_season_trophy_id = 11; + optional uint32 weekend_tourney_division = 12; + optional uint32 weekend_tourney_skill_level = 13; + optional uint32 radiant_team_id = 2; + optional string radiant_team_name = 3; + optional fixed64 radiant_team_logo = 4; + optional string radiant_team_logo_url = 14; + optional uint32 dire_team_id = 5; + optional string dire_team_name = 6; + optional fixed64 dire_team_logo = 7; + optional string dire_team_logo_url = 15; + } + + optional uint64 match_id = 1; + optional fixed32 start_time = 2; + optional uint32 duration = 3; + optional .DOTA_GameMode game_mode = 4 [default = DOTA_GAMEMODE_NONE]; + repeated .CMsgDOTAMatchMinimal.Player players = 6; + optional .CMsgDOTAMatchMinimal.Tourney tourney = 7; + optional .EMatchOutcome match_outcome = 8 [default = k_EMatchOutcome_Unknown]; + optional uint32 radiant_score = 9; + optional uint32 dire_score = 10; + optional uint32 lobby_type = 11; +} + +message CMsgConsumableUsage { + optional uint32 item_def = 1; + optional int32 quantity_change = 2; +} + +message CMsgMatchConsumableUsage { + message PlayerUsage { + optional uint32 account_id = 1; + repeated .CMsgConsumableUsage consumables_used = 2; + } + + repeated .CMsgMatchConsumableUsage.PlayerUsage player_consumables_used = 1; +} + +message CMsgMatchEventActionGrants { + message PlayerGrants { + optional uint32 account_id = 1; + repeated .CMsgPendingEventAward actions_granted = 3; + } + + repeated .CMsgMatchEventActionGrants.PlayerGrants player_grants = 1; +} + +message CMsgCustomGameWhitelist { + optional uint32 version = 1; + repeated uint64 custom_games_whitelist = 2; + optional bool disable_whitelist = 3; +} + +message CMsgCustomGameWhitelistForEdit { + message WhitelistEntry { + optional uint64 custom_game_id = 1; + optional .ECustomGameWhitelistState whitelist_state = 2 [default = CUSTOM_GAME_WHITELIST_STATE_UNKNOWN]; + } + + repeated .CMsgCustomGameWhitelistForEdit.WhitelistEntry whitelist_entries = 1; +} + +message CMsgPlayerRecentMatchInfo { + optional uint64 match_id = 1; + optional uint32 timestamp = 2; + optional uint32 duration = 3; + optional bool win = 4; + optional int32 hero_id = 5; + optional uint32 kills = 6; + optional uint32 deaths = 7; + optional uint32 assists = 8; +} + +message CMsgPlayerMatchRecord { + optional uint32 wins = 1; + optional uint32 losses = 2; +} + +message CMsgPlayerRecentMatchOutcomes { + optional uint32 outcomes = 1; + optional uint32 match_count = 2; +} + +message CMsgPlayerRecentCommends { + optional uint32 commends = 1; + optional uint32 match_count = 2; +} + +message CMsgPlayerRecentAccomplishments { + optional .CMsgPlayerRecentMatchOutcomes recent_outcomes = 1; + optional .CMsgPlayerMatchRecord total_record = 2; + optional uint32 prediction_streak = 3; + optional uint32 plus_prediction_streak = 4; + optional .CMsgPlayerRecentCommends recent_commends = 5; + optional uint32 first_match_timestamp = 6; + optional .CMsgPlayerRecentMatchInfo last_match = 7; + optional .CMsgPlayerRecentMatchOutcomes recent_mvps = 8; +} + +message CMsgPlayerHeroRecentAccomplishments { + optional .CMsgPlayerRecentMatchOutcomes recent_outcomes = 1; + optional .CMsgPlayerMatchRecord total_record = 2; + optional .CMsgPlayerRecentMatchInfo last_match = 3; +} + +message CMsgRecentAccomplishments { + optional .CMsgPlayerRecentAccomplishments player_accomplishments = 1; + optional .CMsgPlayerHeroRecentAccomplishments hero_accomplishments = 2; +} + +message CMsgServerToGCRequestPlayerRecentAccomplishments { + optional uint32 account_id = 1; + optional int32 hero_id = 2; +} + +message CMsgServerToGCRequestPlayerRecentAccomplishmentsResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + } + + optional .CMsgServerToGCRequestPlayerRecentAccomplishmentsResponse.EResponse result = 1 [default = k_eInternalError]; + optional .CMsgRecentAccomplishments player_accomplishments = 2; +} + +message CMsgArcanaVoteMatchVotes { + optional uint32 match_id = 1; + optional int32 hero_id = 2; + optional uint32 vote_count = 3; +} + +message CMsgGCtoGCAssociatedExploiterAccountInfo { + optional uint32 account_id = 1; + optional uint32 num_matches_to_search = 2; + optional uint32 min_shared_match_count = 3; + optional uint32 num_additional_players = 4; +} + +message CMsgGCtoGCAssociatedExploiterAccountInfoResponse { + message Account { + optional uint32 account_id = 1; + optional uint32 num_common_matches = 2; + optional uint32 earliest_common_match = 3; + optional uint32 latest_common_match = 4; + optional uint32 generation = 5; + optional string persona = 6; + optional bool already_banned = 7; + } + + repeated .CMsgGCtoGCAssociatedExploiterAccountInfoResponse.Account accounts = 1; +} + +message CMsgPullTabsData { + message Slot { + optional uint32 event_id = 1; + optional uint32 board_id = 2; + optional int32 hero_id = 3; + optional uint32 action_id = 4; + optional bool redeemed = 5; + } + + message Jackpot { + optional uint32 board_id = 1; + optional uint32 action_id = 2; + optional int32 hero_id = 3; + } + + repeated .CMsgPullTabsData.Slot slots = 1; + repeated .CMsgPullTabsData.Jackpot jackpots = 2; + optional uint32 last_board = 3; +} + +message CMsgUnderDraftData { + message BenchSlot { + optional uint32 slot_id = 1; + optional int32 hero_id = 2; + optional uint32 stars = 3; + } + + message ShopSlot { + optional uint32 slot_id = 1; + optional int32 hero_id = 2; + optional bool is_special_reward = 3; + } + + repeated .CMsgUnderDraftData.BenchSlot bench_slots = 1; + repeated .CMsgUnderDraftData.ShopSlot shop_slots = 2; + optional uint32 gold = 3; + optional uint32 total_gold = 4; + optional bool not_restorable = 5; +} + +message CMsgPlayerTitleData { + repeated uint32 title = 1; + repeated uint32 event_id = 2; + optional uint32 active = 3; +} + +message CMsgDOTATriviaQuestion { + optional uint32 question_id = 1; + optional .EDOTATriviaQuestionCategory category = 2 [default = k_EDOTATriviaQuestionCategory_AbilityIcon]; + optional uint32 timestamp = 3; + optional string question_value = 4; + repeated string answer_values = 5; + optional uint32 correct_answer_index = 6; +} + +message CMsgDOTATriviaQuestionAnswersSummary { + optional bool summary_available = 1; + repeated uint32 picked_count = 2; +} + +message CMsgGameDataSpecialValueBonus { + optional string name = 1; + optional float value = 2; + optional uint32 operation = 3; +} + +message CMsgGameDataSpecialValues { + optional string name = 1; + repeated float values_float = 2; + optional bool is_percentage = 4; + optional string heading_loc = 5; + repeated .CMsgGameDataSpecialValueBonus bonuses = 6; + repeated float values_shard = 7; + repeated float values_scepter = 8; + optional .CMsgGameDataFacetAbilityBonus facet_bonus = 9; + optional string required_facet = 10; +} + +message CMsgGameDataFacetAbilityBonus { + optional string name = 1; + repeated float values = 2; + optional uint32 operation = 3; +} + +message CMsgGameDataAbilityOrItem { + optional int32 id = 1 [default = -1]; + optional string name = 2; + optional string name_loc = 5; + optional string desc_loc = 6; + optional string lore_loc = 7; + repeated string notes_loc = 8; + optional string shard_loc = 9; + optional string scepter_loc = 10; + repeated string facets_loc = 11; + optional uint32 type = 20; + optional uint64 behavior = 21; + optional uint32 target_team = 22; + optional uint32 target_type = 23; + optional uint32 flags = 24; + optional uint32 damage = 25; + optional uint32 immunity = 26; + optional uint32 dispellable = 27; + optional uint32 max_level = 28; + repeated uint32 cast_ranges = 30; + repeated float cast_points = 31; + repeated float channel_times = 32; + repeated float cooldowns = 33; + repeated float durations = 34; + repeated uint32 damages = 35; + repeated uint32 mana_costs = 36; + repeated uint32 gold_costs = 37; + repeated uint32 health_costs = 38; + repeated .CMsgGameDataSpecialValues special_values = 40; + optional bool is_item = 50; + optional bool ability_has_scepter = 60; + optional bool ability_has_shard = 61; + optional bool ability_is_granted_by_scepter = 62; + optional bool ability_is_granted_by_shard = 63; + optional bool ability_is_innate = 64; + optional uint32 item_cost = 70; + optional uint32 item_initial_charges = 71; + optional uint32 item_neutral_tier = 72; + optional uint32 item_stock_max = 73; + optional float item_stock_time = 74; + optional uint32 item_quality = 85; +} + +message CMsgGameDataAbilityOrItemList { + repeated .CMsgGameDataAbilityOrItem abilities = 1; +} + +message CMsgGameDataHero { + message Facet { + optional uint32 color = 1; + optional string title_loc = 2; + optional string description_loc = 3; + optional string name = 4; + optional string icon = 5; + optional int32 gradient_id = 6; + } + + optional int32 id = 1; + optional string name = 2; + optional uint32 order_id = 3; + optional string name_loc = 5; + optional string bio_loc = 6; + optional string hype_loc = 7; + optional string npe_desc_loc = 8; + repeated .CMsgGameDataHero.Facet facets = 43; + optional uint32 str_base = 10; + optional float str_gain = 11; + optional uint32 agi_base = 12; + optional float agi_gain = 13; + optional uint32 int_base = 14; + optional float int_gain = 15; + optional uint32 primary_attr = 20; + optional uint32 complexity = 21; + optional uint32 attack_capability = 22; + repeated uint32 role_levels = 23; + optional int32 damage_min = 24; + optional int32 damage_max = 25; + optional float attack_rate = 26; + optional uint32 attack_range = 27; + optional uint32 projectile_speed = 28; + optional float armor = 29; + optional uint32 magic_resistance = 30; + optional uint32 movement_speed = 31; + optional float turn_rate = 32; + optional uint32 sight_range_day = 33; + optional uint32 sight_range_night = 34; + optional uint32 max_health = 35; + optional float health_regen = 36; + optional uint32 max_mana = 37; + optional float mana_regen = 38; + repeated .CMsgGameDataAbilityOrItem abilities = 40; + repeated .CMsgGameDataAbilityOrItem talents = 41; + repeated .CMsgGameDataAbilityOrItemList facet_abilities = 42; +} + +message CMsgGameDataAbilities { + repeated .CMsgGameDataAbilityOrItem abilities = 1; +} + +message CMsgGameDataItems { + repeated .CMsgGameDataAbilityOrItem items = 1; +} + +message CMsgGameDataHeroes { + repeated .CMsgGameDataHero heroes = 1; +} + +message CMsgGameDataHeroList { + message HeroInfo { + optional int32 id = 1; + optional string name = 2; + optional string name_loc = 3; + optional string name_english_loc = 4; + optional uint32 primary_attr = 5; + optional uint32 complexity = 6; + } + + repeated .CMsgGameDataHeroList.HeroInfo heroes = 1; +} + +message CMsgGameDataItemAbilityList { + message ItemAbilityInfo { + message Recipe { + repeated int32 items = 1; + } + + optional int32 id = 1 [default = -1]; + optional string name = 2; + optional string name_loc = 3; + optional string name_english_loc = 4; + optional int32 neutral_item_tier = 5; + optional bool is_pregame_suggested = 6; + optional bool is_earlygame_suggested = 7; + optional bool is_lategame_suggested = 8; + repeated .CMsgGameDataItemAbilityList.ItemAbilityInfo.Recipe recipes = 9; + } + + repeated .CMsgGameDataItemAbilityList.ItemAbilityInfo itemabilities = 1; +} + +message CMsgLobbyAbilityDraftData { + optional bool shuffle_draft_order = 1; +} + +message CSOEconItemDropRateBonus { + optional uint32 account_id = 1 [(key_field) = true]; + optional fixed32 expiration_date = 2; + optional float bonus = 3 [(key_field) = true]; + optional uint32 bonus_count = 4; + optional uint64 item_id = 5; + optional uint32 def_index = 6; + optional uint32 seconds_left = 7; + optional uint32 booster_type = 8 [(key_field) = true]; +} + +message CSOEconItemTournamentPassport { + optional uint32 account_id = 1; + optional uint32 league_id = 2; + optional uint64 item_id = 3; + optional uint32 original_purchaser_id = 4; + optional uint32 passports_bought = 5; + optional uint32 version = 6; + optional uint32 def_index = 7; + optional uint32 reward_flags = 8; +} + +message CMsgStickerbookSticker { + optional uint32 item_def_id = 1; + optional uint32 sticker_num = 2; + optional uint32 quality = 3; + optional float position_x = 4; + optional float position_y = 5; + optional float position_z = 8; + optional float rotation = 6; + optional float scale = 7; + optional uint64 source_item_id = 9; + optional uint32 depth_bias = 10; +} + +message CMsgStickerbookPage { + optional uint32 page_num = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint32 team_id = 3; + repeated .CMsgStickerbookSticker stickers = 4; + optional .EStickerbookPageType page_type = 5 [default = STICKER_PAGE_GENERIC]; +} + +message CMsgStickerbookTeamPageOrderSequence { + repeated uint32 page_numbers = 1; +} + +message CMsgStickerbook { + repeated .CMsgStickerbookPage pages = 1; + optional .CMsgStickerbookTeamPageOrderSequence team_page_order_sequence = 2; + optional uint32 favorite_page_num = 3; +} + +message CMsgStickerHero { + optional int32 hero_id = 1; + optional uint32 item_def_id = 2; + optional uint32 quality = 3; + optional uint64 source_item_id = 4; +} + +message CMsgStickerHeroes { + repeated .CMsgStickerHero heroes = 1; +} + +message CMsgHeroRoleStats { + optional uint32 lane_selection_flags = 1; + optional uint32 match_count = 2; + optional uint32 win_count = 3; +} + +message CMsgHeroRoleHeroStats { + optional int32 hero_id = 1; + repeated .CMsgHeroRoleStats role_stats = 2; +} + +message CMsgHeroRoleRankStats { + optional uint32 rank_tier = 1; + repeated .CMsgHeroRoleHeroStats hero_stats = 2; +} + +message CMsgHeroRoleAllRanksStats { + optional uint32 start_timestamp = 1; + optional uint32 end_timestamp = 2; + repeated .CMsgHeroRoleRankStats rank_stats = 3; +} + +message CMsgMapStatsSnapshot { + optional uint32 timestamp = 1; + optional uint64 lotuses_gained = 2; + optional uint64 wisdom_runes_gained = 3; + optional uint64 roshan_kills_day = 4; + optional uint64 roshan_kills_night = 5; + optional uint64 portals_used = 6; + optional uint64 watchers_taken = 7; + optional uint64 tormentor_kills = 8; + optional uint64 outposts_captured = 9; + optional uint64 shield_runes_gained = 10; +} + +message CMsgGlobalMapStats { + optional .CMsgMapStatsSnapshot current = 1; + optional .CMsgMapStatsSnapshot window_start = 2; + optional .CMsgMapStatsSnapshot window_end = 3; +} + +message CMsgTrackedStat { + optional uint32 tracked_stat_id = 1; + optional int32 tracked_stat_value = 2; +} + +message CMsgDOTAClaimEventActionResponse { + message MysteryItemRewardData { + optional uint32 item_def = 1; + optional uint32 item_category = 2; + } + + message LootListRewardData { + repeated uint32 item_def = 1; + } + + message ActionListRewardData { + optional uint32 action_id = 1; + optional bytes result_reward_data = 2; + } + + message OverworldTokenRewardData { + message TokenQuantity { + optional uint32 token_id = 1; + optional uint32 token_count = 2; + } + + repeated .CMsgDOTAClaimEventActionResponse.OverworldTokenRewardData.TokenQuantity tokens = 1; + } + + message GrantedRewardData { + optional uint32 grant_index = 1; + optional uint32 score_index = 2; + optional uint32 reward_index = 3; + optional bytes reward_data = 4; + optional uint32 action_id = 5; + } + + enum ResultCode { + Success = 0; + InvalidEvent = 1; + EventNotActive = 2; + InvalidAction = 3; + ServerError = 4; + InsufficientPoints = 5; + InsufficentLevel = 6; + AlreadyClaimed = 7; + SDOLockFailure = 8; + SDOLoadFailure = 9; + EventNotOwned = 10; + Timeout = 11; + RequiresPlusSubscription = 12; + InvalidItem = 13; + AsyncRewards = 14; + } + + optional .CMsgDOTAClaimEventActionResponse.ResultCode result = 1 [default = Success]; + repeated .CMsgDOTAClaimEventActionResponse.GrantedRewardData reward_results = 2; + optional uint32 action_id = 3; +} + +message CMsgClientToGCDotaLabsFeedback { + optional uint32 language = 1; + optional uint32 feedback_item = 2; + optional string feedback = 3; +} + +message CMsgClientToGCDotaLabsFeedbackResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidItem = 6; + } + + optional .CMsgClientToGCDotaLabsFeedbackResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CDotaMsg_PredictionResult { + message Prediction { + enum EResult { + k_eResult_ItemGranted = 1; + k_eResult_Destroyed = 2; + } + + optional uint32 item_def = 1; + optional uint32 num_correct = 2; + optional uint32 num_fails = 3; + optional .CDotaMsg_PredictionResult.Prediction.EResult result = 4 [default = k_eResult_ItemGranted]; + repeated uint32 granted_item_defs = 6; + } + + optional uint32 account_id = 1; + optional uint64 match_id = 2; + optional bool correct = 3; + repeated .CDotaMsg_PredictionResult.Prediction predictions = 4; +} diff --git a/game/shared/dota/dota_gcmessages_common_bot_script.proto b/game/shared/dota/dota_gcmessages_common_bot_script.proto new file mode 100644 index 00000000..5e24111d --- /dev/null +++ b/game/shared/dota/dota_gcmessages_common_bot_script.proto @@ -0,0 +1,294 @@ +import "valveextensions.proto"; + +message CMsgBotWorldState { + message Vector { + optional float x = 1; + optional float y = 2; + optional float z = 3; + } + + message Player { + optional int32 player_id = 1 [(valve_map_key) = true]; + optional int32 hero_id = 2; + optional bool is_alive = 3; + optional float respawn_time = 4; + optional uint32 kills = 5; + optional uint32 deaths = 6; + optional uint32 assists = 7; + optional uint32 team_id = 8; + optional uint32 primary_unit_handle = 9 [default = 4294967295]; + optional int32 mmr = 10; + optional .CMsgBotWorldState.Vector location = 11; + } + + message Ability { + optional uint32 handle = 1 [(valve_map_key) = true]; + optional int32 ability_id = 2 [default = -1]; + optional uint32 slot = 3; + optional uint32 caster_handle = 5 [default = 4294967295]; + optional uint32 level = 6; + optional uint32 cast_range = 10; + optional float channel_time = 11; + optional float cooldown_remaining = 12 [default = 0]; + optional bool is_activated = 20; + optional bool is_toggled = 21; + optional bool is_in_ability_phase = 22; + optional bool is_channeling = 23; + optional bool is_stolen = 24; + optional bool is_fully_castable = 25; + optional uint32 charges = 30; + optional uint32 secondary_charges = 31; + optional bool is_combined_locked = 40; + optional int32 power_treads_stat = 50 [default = -1]; + } + + message DroppedItem { + optional int32 item_id = 1 [default = -1]; + optional .CMsgBotWorldState.Vector location = 2; + } + + message RuneInfo { + optional int32 type = 1; + optional .CMsgBotWorldState.Vector location = 2; + optional uint32 status = 3; + optional float time_since_seen = 4; + } + + message TeleportInfo { + optional int32 player_id = 1; + optional .CMsgBotWorldState.Vector location = 2; + optional float time_remaining = 3; + } + + message Modifier { + optional uint32 handle = 7 [(valve_map_key) = true]; + optional string name = 1; + optional uint32 stack_count = 2; + optional uint32 ability_handle = 3 [default = 4294967295]; + optional int32 ability_id = 4 [default = -1]; + optional float remaining_duration = 5; + repeated uint32 auxiliary_units_handles = 6; + } + + message LinearProjectile { + optional uint32 handle = 1 [(valve_map_key) = true]; + optional uint32 caster_handle = 2 [default = 4294967295]; + optional .CMsgBotWorldState.UnitType caster_unit_type = 9 [default = INVALID]; + optional int32 caster_player_id = 3; + optional uint32 ability_handle = 4 [default = 4294967295]; + optional int32 ability_id = 5 [default = -1]; + optional .CMsgBotWorldState.Vector location = 6; + optional .CMsgBotWorldState.Vector velocity = 7; + optional uint32 radius = 8; + } + + message TrackingProjectile { + optional uint32 handle = 10 [(valve_map_key) = true]; + optional uint32 caster_handle = 1 [default = 4294967295]; + optional .CMsgBotWorldState.UnitType caster_unit_type = 9 [default = INVALID]; + optional int32 caster_player_id = 2; + optional uint32 ability_handle = 3 [default = 4294967295]; + optional int32 ability_id = 4 [default = -1]; + optional .CMsgBotWorldState.Vector location = 5; + optional uint32 velocity = 6; + optional bool is_dodgeable = 7; + optional bool is_attack = 8; + } + + message AvoidanceZone { + optional .CMsgBotWorldState.Vector location = 1; + optional uint32 caster_handle = 2 [default = 4294967295]; + optional .CMsgBotWorldState.UnitType caster_unit_type = 7 [default = INVALID]; + optional int32 caster_player_id = 3; + optional uint32 ability_handle = 4 [default = 4294967295]; + optional int32 ability_id = 5 [default = -1]; + optional uint32 radius = 6; + } + + message Courier { + optional uint32 handle = 1 [(valve_map_key) = true]; + optional .CMsgBotWorldState.CourierState state = 2 [default = COURIER_STATE_INIT]; + optional int32 player_id = 3; + } + + message EventAbility { + optional int32 ability_id = 1 [default = -1]; + optional int32 player_id = 2; + optional uint32 unit_handle = 3 [default = 4294967295]; + optional .CMsgBotWorldState.Vector location = 4; + optional bool is_channel_start = 5; + } + + message EventDamage { + optional uint32 damage = 1; + optional int32 victim_player_id = 2; + optional uint32 victim_unit_handle = 3 [default = 4294967295]; + optional int32 attacker_player_id = 4; + optional uint32 attacker_unit_handle = 5 [default = 4294967295]; + optional int32 ability_id = 6 [default = -1]; + } + + message EventCourierKilled { + optional uint32 team_id = 1; + optional uint32 courier_unit_handle = 2 [default = 4294967295]; + optional int32 killer_player_id = 3; + optional uint32 killer_unit_handle = 4 [default = 4294967295]; + } + + message EventRoshanKilled { + optional int32 killer_player_id = 1; + optional uint32 killer_unit_handle = 2 [default = 4294967295]; + } + + message EventTree { + optional uint32 tree_id = 1; + optional bool destroyed = 2; + optional bool respawned = 3; + optional .CMsgBotWorldState.Vector location = 4; + optional bool delayed = 5; + } + + message Unit { + optional uint32 handle = 1 [(valve_map_key) = true]; + optional .CMsgBotWorldState.UnitType unit_type = 2 [default = INVALID]; + optional string name = 3; + optional uint32 team_id = 4; + optional uint32 level = 5; + optional .CMsgBotWorldState.Vector location = 6; + optional bool is_alive = 7; + optional int32 player_id = 8; + optional int32 bounding_radius = 10; + optional int32 facing = 11; + optional uint32 ground_height = 12; + optional uint32 vision_range_daytime = 15; + optional uint32 vision_range_nighttime = 16; + optional int32 health = 20; + optional int32 health_max = 21; + optional float health_regen = 22; + optional int32 mana = 25; + optional int32 mana_max = 26; + optional float mana_regen = 27; + optional int32 base_movement_speed = 30; + optional int32 current_movement_speed = 31; + optional int32 anim_activity = 35; + optional float anim_cycle = 36; + optional int32 base_damage = 40; + optional int32 base_damage_variance = 41; + optional int32 bonus_damage = 42; + optional int32 attack_damage = 43; + optional int32 attack_range = 44; + optional float attack_speed = 45; + optional float attack_anim_point = 46; + optional int32 attack_acquisition_range = 47; + optional int32 attack_projectile_speed = 48; + optional uint32 attack_target_handle = 49 [default = 4294967295]; + optional string attack_target_name = 52; + optional int32 attacks_per_second = 50 [default = -1]; + optional float last_attack_time = 51 [default = -1]; + optional uint32 bounty_xp = 60; + optional uint32 bounty_gold_min = 61; + optional uint32 bounty_gold_max = 62; + optional bool is_channeling = 65; + optional uint32 active_ability_handle = 66 [default = 4294967295]; + optional bool is_attack_immune = 70; + optional bool is_blind = 71; + optional bool is_block_disabled = 72; + optional bool is_disarmed = 73; + optional bool is_dominated = 74; + optional bool is_evade_disabled = 75; + optional bool is_hexed = 76; + optional bool is_invisible = 77; + optional bool is_invulnerable = 78; + optional bool is_magic_immune = 79; + optional bool is_muted = 80; + optional bool is_nightmared = 82; + optional bool is_rooted = 83; + optional bool is_silenced = 84; + optional bool is_specially_deniable = 85; + optional bool is_stunned = 86; + optional bool is_unable_to_miss = 87; + optional bool has_scepter = 88; + optional bool is_specially_undeniable = 94; + repeated .CMsgBotWorldState.Ability abilities = 90 [(valve_map_field) = true]; + repeated .CMsgBotWorldState.Ability items = 91 [(valve_map_field) = true]; + repeated .CMsgBotWorldState.Modifier modifiers = 92 [(valve_map_field) = true]; + repeated .CMsgBotWorldState.TrackingProjectile incoming_tracking_projectiles = 93 [(valve_map_field) = true]; + optional uint32 action_type = 100; + optional uint32 ability_target_handle = 101 [default = 4294967295]; + optional string ability_target_name = 103; + optional bool is_using_ability = 102; + optional uint32 primary_attribute = 110; + optional bool is_illusion = 111; + optional float respawn_time = 112; + optional uint32 buyback_cost = 113; + optional float buyback_cooldown = 114; + optional float spell_amplification = 115; + optional float armor = 116; + optional float magic_resist = 117; + optional float evasion = 118; + optional uint32 xp_needed_to_level = 120; + optional uint32 ability_points = 121; + optional int32 reliable_gold = 122 [default = -1]; + optional int32 unreliable_gold = 123 [default = -1]; + optional uint32 last_hits = 124; + optional uint32 denies = 125; + optional uint32 net_worth = 126; + optional uint32 strength = 127; + optional uint32 agility = 128; + optional uint32 intelligence = 129; + optional float remaining_lifespan = 130; + optional bool flying_courier = 140; + optional float shrine_cooldown = 150; + optional bool is_shrine_healing = 151; + } + + enum UnitType { + INVALID = 0; + HERO = 1; + CREEP_HERO = 2; + LANE_CREEP = 3; + JUNGLE_CREEP = 4; + ROSHAN = 5; + TOWER = 6; + BARRACKS = 7; + SHRINE = 8; + FORT = 9; + BUILDING = 10; + COURIER = 11; + WARD = 12; + } + + enum CourierState { + COURIER_STATE_INIT = -1; + COURIER_STATE_IDLE = 0; + COURIER_STATE_AT_BASE = 1; + COURIER_STATE_MOVING = 2; + COURIER_STATE_DELIVERING_ITEMS = 3; + COURIER_STATE_RETURNING_TO_BASE = 4; + COURIER_STATE_DEAD = 5; + } + + optional uint32 team_id = 1; + optional float game_time = 2; + optional float dota_time = 3; + optional uint32 game_state = 4; + optional uint32 hero_pick_state = 5; + optional float time_of_day = 6; + optional float glyph_cooldown = 7; + optional float glyph_cooldown_enemy = 8; + repeated .CMsgBotWorldState.Player players = 10 [(valve_map_field) = true]; + repeated .CMsgBotWorldState.Unit units = 11 [(valve_map_field) = true]; + repeated .CMsgBotWorldState.DroppedItem dropped_items = 12 [(diff_encode_field) = 112]; + repeated int32 dropped_items_deltas = 112; + repeated .CMsgBotWorldState.RuneInfo rune_infos = 13 [(diff_encode_field) = 113]; + repeated int32 rune_infos_deltas = 113; + repeated .CMsgBotWorldState.TeleportInfo incoming_teleports = 14; + repeated .CMsgBotWorldState.LinearProjectile linear_projectiles = 15 [(valve_map_field) = true]; + repeated .CMsgBotWorldState.AvoidanceZone avoidance_zones = 16; + repeated .CMsgBotWorldState.Courier couriers = 17 [(valve_map_field) = true]; + repeated .CMsgBotWorldState.EventAbility ability_events = 20; + repeated .CMsgBotWorldState.EventDamage damage_events = 21; + repeated .CMsgBotWorldState.EventCourierKilled courier_killed_events = 22; + repeated .CMsgBotWorldState.EventRoshanKilled roshan_killed_events = 23; + repeated .CMsgBotWorldState.EventTree tree_events = 24; +} diff --git a/game/shared/dota/dota_gcmessages_common_craftworks.proto b/game/shared/dota/dota_gcmessages_common_craftworks.proto new file mode 100644 index 00000000..eb99be4c --- /dev/null +++ b/game/shared/dota/dota_gcmessages_common_craftworks.proto @@ -0,0 +1,25 @@ +import "steammessages.proto"; +import "dota_shared_enums.proto"; +import "gcsdk_gcmessages.proto"; + +enum ECraftworksAuditAction { + k_eInvalid = 0; + k_eRecipeCrafted = 1; + k_eMatchRewards = 2; + k_eMatchRewardsTurbo = 3; +} + +message CMsgCraftworksComponents { + message ComponentQuantitiesEntry { + optional uint32 key = 1; + optional uint32 value = 2; + } + + repeated .CMsgCraftworksComponents.ComponentQuantitiesEntry component_quantities = 1; +} + +message CMsgCraftworksQuestReward { + optional uint32 quest_id = 1; + optional .CMsgCraftworksComponents reward_components = 2; + optional uint32 stat_value = 3; +} diff --git a/game/shared/dota/dota_gcmessages_common_fighting_game.proto b/game/shared/dota/dota_gcmessages_common_fighting_game.proto new file mode 100644 index 00000000..342601a6 --- /dev/null +++ b/game/shared/dota/dota_gcmessages_common_fighting_game.proto @@ -0,0 +1,58 @@ +import "steammessages.proto"; +import "dota_shared_enums.proto"; +import "dota_gcmessages_common.proto"; +import "gcsdk_gcmessages.proto"; + +message CMsgClientToGCFightingGameChallengeFriend { + optional uint32 friend_account_id = 1; +} + +message CMsgClientToGCFightingGameChallengeFriendResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidAccountID = 5; + k_eStillWaitingOnAnotherChallenge = 6; + } + + optional .CMsgClientToGCFightingGameChallengeFriendResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCFightingGameCancelChallengeFriend { + optional uint32 friend_account_id = 1; +} + +message CMsgClientToGCFightingGameAnswerChallenge { + optional uint32 challenger_account_id = 1; + optional bool accept = 2; +} + +message CMsgClientToGCFightingGameAnswerChallengeResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidChallenge = 5; + } + + optional .CMsgClientToGCFightingGameAnswerChallengeResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgGCToClientFightingGameChallenge { + optional uint32 challenger_account_id = 1; +} + +message CMsgGCToClientFightingGameChallengeCanceled { + optional uint32 challenger_account_id = 1; + optional uint32 responder_account_id = 2; +} + +message CMsgGCToClientFightingGameStartMatch { + optional uint32 challenger_account_id = 1; + optional uint32 responder_account_id = 2; +} diff --git a/game/shared/dota/dota_gcmessages_common_league.proto b/game/shared/dota/dota_gcmessages_common_league.proto new file mode 100644 index 00000000..3f3f34bd --- /dev/null +++ b/game/shared/dota/dota_gcmessages_common_league.proto @@ -0,0 +1,351 @@ +import "dota_shared_enums.proto"; + +enum ELeagueNodeGroupType { + INVALID_GROUP_TYPE = 0; + ORGANIZATIONAL = 1; + ROUND_ROBIN = 2; + SWISS = 3; + BRACKET_SINGLE = 4; + BRACKET_DOUBLE_SEED_LOSER = 5; + BRACKET_DOUBLE_ALL_WINNER = 6; + SHOWMATCH = 7; + GSL = 8; + PLACEMENT = 9; +} + +enum ELeagueNodeType { + INVALID_NODE_TYPE = 0; + BEST_OF_ONE = 1; + BEST_OF_THREE = 2; + BEST_OF_FIVE = 3; + BEST_OF_TWO = 4; +} + +message CMsgDOTALeagueNode { + message MatchDetails { + optional uint64 match_id = 1; + optional uint32 winning_team_id = 2; + } + + message VOD { + optional uint32 series_game = 1; + optional uint32 stream_id = 2; + optional string url = 3; + } + + optional string name = 1; + optional uint32 node_id = 2; + optional uint32 node_group_id = 3; + optional uint32 winning_node_id = 4; + optional uint32 losing_node_id = 5; + optional uint32 incoming_node_id_1 = 6; + optional uint32 incoming_node_id_2 = 7; + optional .ELeagueNodeType node_type = 8 [default = INVALID_NODE_TYPE]; + optional uint32 scheduled_time = 9; + optional uint32 actual_time = 19; + optional uint32 series_id = 10; + optional uint32 team_id_1 = 11; + optional uint32 team_id_2 = 12; + repeated .CMsgDOTALeagueNode.MatchDetails matches = 13; + optional uint32 team_1_wins = 14; + optional uint32 team_2_wins = 15; + optional bool has_started = 16; + optional bool is_completed = 17; + repeated uint32 stream_ids = 18; + repeated .CMsgDOTALeagueNode.VOD vods = 20; +} + +message CMsgDOTALeagueNodeGroup { + message TeamStanding { + optional uint32 standing = 1; + optional uint32 team_id = 2; + optional string team_name = 3; + optional string team_tag = 4; + optional uint64 team_logo = 5; + optional string team_logo_url = 6; + optional uint32 wins = 7; + optional uint32 losses = 8; + optional int64 score = 9; + optional string team_abbreviation = 10; + optional int64 score_tiebreak_group = 11; + optional int64 score_tiebreak_below = 12; + optional int64 score_tiebreak_random = 13; + optional bool is_pro = 14; + } + + optional string name = 1; + optional uint32 node_group_id = 2; + optional uint32 parent_node_group_id = 3; + repeated uint32 incoming_node_group_ids = 4; + optional uint32 advancing_node_group_id = 5; + optional uint32 advancing_team_count = 6; + optional uint32 team_count = 7; + optional .ELeagueNodeGroupType node_group_type = 8 [default = INVALID_GROUP_TYPE]; + optional .ELeagueNodeType default_node_type = 9 [default = INVALID_NODE_TYPE]; + optional uint32 round = 10; + optional uint32 max_rounds = 11; + optional bool is_tiebreaker = 12; + optional bool is_final_group = 13; + optional bool is_completed = 14; + optional .ELeaguePhase phase = 18 [default = LEAGUE_PHASE_UNSET]; + optional .ELeagueRegion region = 19 [default = LEAGUE_REGION_UNSET]; + optional uint32 start_time = 20; + optional uint32 end_time = 21; + optional uint32 secondary_advancing_node_group_id = 22; + optional uint32 secondary_advancing_team_count = 23; + optional uint32 tertiary_advancing_node_group_id = 24; + optional uint32 tertiary_advancing_team_count = 25; + optional uint32 elimination_dpc_points = 26; + repeated .CMsgDOTALeagueNodeGroup.TeamStanding team_standings = 15; + repeated .CMsgDOTALeagueNode nodes = 16; + repeated .CMsgDOTALeagueNodeGroup node_groups = 17; +} + +message CMsgDOTALeague { + message Info { + optional uint32 league_id = 1; + optional string name = 2; + optional .ELeagueTier tier = 3 [default = LEAGUE_TIER_UNSET]; + optional .ELeagueRegion region = 4 [default = LEAGUE_REGION_UNSET]; + optional string url = 5; + optional string description = 6; + optional string notes = 7; + optional uint32 start_timestamp = 8; + optional uint32 end_timestamp = 9; + optional uint32 pro_circuit_points = 10; + optional uint32 image_bits = 11; + optional .ELeagueStatus status = 12 [default = LEAGUE_STATUS_UNSET]; + optional uint32 most_recent_activity = 13; + optional uint32 registration_period = 14; + } + + message Admin { + optional uint32 account_id = 1; + optional bool is_primary = 2; + optional string email_address = 3; + } + + message PrizePoolItem { + optional uint32 item_def = 1; + optional uint32 sales_stop_timestamp = 2; + optional uint32 revenue_pct = 3; + optional uint32 revenue_cents_per_sale = 4; + } + + message PrizePool { + optional uint32 base_prize_pool = 1; + optional uint32 total_prize_pool = 2; + repeated uint32 prize_split_pct_x100 = 3; + repeated .CMsgDOTALeague.PrizePoolItem prize_pool_items = 4; + } + + message Stream { + optional uint32 stream_id = 1; + optional uint32 language = 2; + optional string name = 3; + optional .ELeagueBroadcastProvider broadcast_provider = 4 [default = LEAGUE_BROADCAST_UNKNOWN]; + optional string stream_url = 5; + optional string vod_url = 6; + } + + message SeriesInfo { + optional uint32 series_id = 1; + optional uint32 series_type = 2; + optional uint32 start_time = 3; + repeated uint64 match_ids = 4; + optional uint32 team_id_1 = 5; + optional uint32 team_id_2 = 6; + } + + message Player { + optional uint32 account_id = 1; + optional string name = 2; + optional uint32 team_id = 3; + } + + optional .CMsgDOTALeague.Info info = 1; + optional .CMsgDOTALeague.PrizePool prize_pool = 2; + repeated .CMsgDOTALeague.Admin admins = 3; + repeated .CMsgDOTALeague.Stream streams = 4; + repeated .CMsgDOTALeagueNodeGroup node_groups = 5; + repeated .CMsgDOTALeague.SeriesInfo series_infos = 6; + repeated .CMsgDOTALeague.Player registered_players = 7; +} + +message CMsgDOTALeagueList { + repeated .CMsgDOTALeague leagues = 1; +} + +message CMsgDOTALeagueInfo { + optional uint32 league_id = 1; + optional string name = 2; + optional .ELeagueTier tier = 3 [default = LEAGUE_TIER_UNSET]; + optional .ELeagueRegion region = 4 [default = LEAGUE_REGION_UNSET]; + optional uint32 most_recent_activity = 5; + optional uint32 total_prize_pool = 6; + optional uint32 start_timestamp = 7; + optional uint32 end_timestamp = 8; + optional uint32 status = 9; +} + +message CMsgDOTALeagueInfoList { + repeated .CMsgDOTALeagueInfo infos = 1; +} + +message CMsgDOTALeagueLiveGames { + message LiveGame { + optional uint32 league_id = 1; + optional uint64 server_steam_id = 2; + optional string radiant_name = 3; + optional uint64 radiant_logo = 4; + optional uint32 radiant_team_id = 9; + optional string dire_name = 5; + optional uint64 dire_logo = 6; + optional uint32 dire_team_id = 10; + optional uint32 time = 7; + optional uint32 spectators = 8; + optional uint32 league_node_id = 11; + optional uint32 series_id = 12; + optional uint64 match_id = 13; + } + + repeated .CMsgDOTALeagueLiveGames.LiveGame games = 1; +} + +message CMsgDOTALeagueMessages { + message Message { + optional uint32 author_account_id = 1; + optional uint32 timestamp = 2; + optional string message = 3; + } + + repeated .CMsgDOTALeagueMessages.Message messages = 1; +} + +message CMsgDOTALeaguePrizePool { + optional uint32 prize_pool = 1; + optional float increment_per_second = 2; +} + +message CMsgDOTALeagueInfoListAdminsRequest { +} + +message CMsgDOTALeagueAvailableLobbyNodesRequest { + optional uint32 league_id = 1; +} + +message CMsgDOTALeagueAvailableLobbyNodes { + message NodeInfo { + optional uint32 node_id = 1; + optional string node_name = 2; + optional string node_group_name = 3; + optional uint32 team_id_1 = 4; + optional uint32 team_id_2 = 5; + } + + repeated .CMsgDOTALeagueAvailableLobbyNodes.NodeInfo node_infos = 1; +} + +message CMsgDOTALeagueNodeResults { + message Result { + optional uint32 node_id = 1; + optional uint32 winning_node_id = 2; + optional uint32 losing_node_id = 3; + optional uint32 incoming_node_id_1 = 4; + optional uint32 incoming_node_id_2 = 5; + optional uint32 team_id_1 = 6; + optional uint32 team_id_2 = 7; + optional string team_1_name = 8; + optional string team_2_name = 9; + optional uint32 team_1_wins = 10; + optional uint32 team_2_wins = 11; + optional uint32 winning_team_id = 12; + optional uint32 losing_team_id = 13; + optional bool has_started = 14; + optional bool is_completed = 15; + optional uint32 scheduled_time = 16; + repeated uint64 match_ids = 17; + } + + repeated .CMsgDOTALeagueNodeResults.Result node_results = 1; +} + +message CMsgDOTADPCLeagueResults { + message Result { + optional uint32 standing = 1; + optional uint32 team_id = 2; + optional string team_name = 3; + optional uint64 team_logo = 4; + optional string team_logo_url = 5; + optional uint32 points = 6; + optional uint32 earnings = 7; + optional uint32 timestamp = 8; + optional .ELeaguePhase phase = 9 [default = LEAGUE_PHASE_UNSET]; + optional string team_abbreviation = 10; + } + + repeated .CMsgDOTADPCLeagueResults.Result results = 1; + repeated uint32 points = 2; + repeated uint32 dollars = 3; +} + +message CMsgDOTADPCTeamResults { + message Result { + optional uint32 league_id = 1; + optional uint32 standing = 2; + optional uint32 points = 3; + optional uint32 earnings = 4; + optional uint32 timestamp = 5; + } + + repeated .CMsgDOTADPCTeamResults.Result results = 1; +} + +message CMsgDOTADPCSeasonResults { + message TeamLeagueResult { + optional uint32 timestamp = 1; + optional uint32 league_id = 2; + optional uint32 standing = 3; + optional uint32 points = 4; + optional uint32 earnings = 5; + optional uint32 audit_action = 6; + optional uint32 audit_data = 7; + } + + message TeamResult { + optional uint32 team_id = 1; + optional string team_name = 2; + optional string team_abbreviation = 8; + optional uint64 team_logo = 3; + optional string team_logo_url = 4; + optional uint32 total_points = 5; + optional uint32 total_earnings = 6; + repeated .CMsgDOTADPCSeasonResults.TeamLeagueResult league_results = 7; + } + + message StandingEntry { + optional uint32 team_id = 1; + optional uint32 wins = 2; + optional uint32 losses = 3; + optional string team_url = 4; + optional string team_name = 5; + optional string team_abbreviation = 6; + } + + message Standing { + optional .ELeagueRegion region = 1 [default = LEAGUE_REGION_UNSET]; + optional .ELeagueDivision division = 2 [default = LEAGUE_DIVISION_UNSET]; + repeated .CMsgDOTADPCSeasonResults.StandingEntry entries = 3; + } + + repeated .CMsgDOTADPCSeasonResults.TeamResult results = 1; + repeated .CMsgDOTADPCSeasonResults.Standing standings = 2; + repeated .CMsgDOTADPCSeasonResults.StandingEntry major_wildcard_standings = 3; + repeated .CMsgDOTADPCSeasonResults.StandingEntry major_group_standings = 4; + repeated .CMsgDOTADPCSeasonResults.StandingEntry major_playoff_standings = 5; +} + +message CMsgDOTADPCSeasonSpoilerResults { + optional uint32 time_last_updated = 1; + optional .CMsgDOTADPCSeasonResults saved_results = 2; +} diff --git a/game/shared/dota/dota_gcmessages_common_lobby.proto b/game/shared/dota/dota_gcmessages_common_lobby.proto new file mode 100644 index 00000000..eaf4d997 --- /dev/null +++ b/game/shared/dota/dota_gcmessages_common_lobby.proto @@ -0,0 +1,389 @@ +import "steammessages.proto"; +import "dota_shared_enums.proto"; +import "gcsdk_gcmessages.proto"; + +enum ELobbyMemberCoachRequestState { + k_eLobbyMemberCoachRequestState_None = 0; + k_eLobbyMemberCoachRequestState_Accepted = 1; + k_eLobbyMemberCoachRequestState_Rejected = 2; +} + +enum LobbyDotaTVDelay { + LobbyDotaTV_10 = 0; + LobbyDotaTV_120 = 1; + LobbyDotaTV_300 = 2; + LobbyDotaTV_900 = 3; +} + +enum LobbyDotaPauseSetting { + LobbyDotaPauseSetting_Unlimited = 0; + LobbyDotaPauseSetting_Limited = 1; + LobbyDotaPauseSetting_Disabled = 2; +} + +message CMsgLobbyCoachFriendRequest { + optional uint32 coach_account_id = 1; + optional uint32 player_account_id = 2; + optional .ELobbyMemberCoachRequestState request_state = 3 [default = k_eLobbyMemberCoachRequestState_None]; +} + +message CMsgLobbyPlayerPlusSubscriptionData { + message HeroBadge { + optional int32 hero_id = 1; + optional uint32 hero_badge_xp = 2; + } + + repeated .CMsgLobbyPlayerPlusSubscriptionData.HeroBadge hero_badges = 1; +} + +message CMsgEventActionData { + optional uint32 action_id = 1; + optional uint32 action_score = 2; +} + +message CMsgPeriodicResourceData { + optional uint32 periodic_resource_id = 1; + optional uint32 remaining = 2; + optional uint32 max = 3; +} + +message CMsgLobbyEventPoints { + message AccountPoints { + optional uint32 account_id = 1; + optional uint32 normal_points = 2; + optional uint32 premium_points = 3; + optional bool owned = 4; + optional uint32 event_level = 7; + optional uint64 active_effects_mask = 12; + optional uint32 wager_streak = 23; + repeated .CMsgEventActionData event_game_custom_actions = 25; + optional uint32 tip_amount_index = 26; + optional uint32 active_event_season_id = 27; + optional uint32 teleport_fx_level = 28; + repeated .CMsgEventActionData networked_event_actions = 30; + repeated .CMsgPeriodicResourceData periodic_resources = 31; + repeated .CExtraMsgBlock extra_event_messages = 32; + } + + optional uint32 event_id = 1; + repeated .CMsgLobbyEventPoints.AccountPoints account_points = 2; +} + +message CMsgLobbyEventGameData { + optional uint32 game_seed = 1; + optional uint32 event_window_start_time = 2; +} + +message CSODOTALobbyInvite { + message LobbyMember { + optional string name = 1; + optional fixed64 steam_id = 2; + } + + optional uint64 group_id = 1 [(key_field) = true]; + optional fixed64 sender_id = 2; + optional string sender_name = 3; + repeated .CSODOTALobbyInvite.LobbyMember members = 4; + optional uint64 custom_game_id = 5; + optional fixed64 invite_gid = 6; + optional fixed64 custom_game_crc = 7; + optional fixed32 custom_game_timestamp = 8; +} + +message CSODOTALobbyMember { + optional fixed64 id = 1 [(key_field) = true]; + optional int32 hero_id = 2; + optional .DOTA_GC_TEAM team = 3 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional uint32 slot = 7; + optional .DOTALeaverStatus_t leaver_status = 16 [default = DOTA_LEAVER_NONE]; + optional uint32 leaver_actions = 28; + optional .DOTA_GC_TEAM coach_team = 23 [default = DOTA_GC_TEAM_NOTEAM]; + repeated uint32 custom_game_product_ids = 31; + optional .DOTA_GC_TEAM live_spectator_team = 40 [default = DOTA_GC_TEAM_NOTEAM]; + repeated .CMsgPendingEventAward pending_awards = 44; + repeated .CMsgPendingEventAward pending_awards_on_victory = 45; + optional uint32 reports_available = 52; + optional uint32 live_spectator_account_id = 55; + optional uint32 comms_reports_available = 56; +} + +message CSODOTAServerLobbyMember { +} + +message CSODOTAStaticLobbyMember { + optional string name = 1; + optional uint64 party_id = 2; + optional uint32 channel = 3 [default = 6]; + optional bool cameraman = 4; +} + +message CSODOTAServerStaticLobbyMember { + optional fixed64 steam_id = 1; + optional int32 rank_tier = 3; + optional int32 leaderboard_rank = 4 [default = -1]; + optional int32 lane_selection_flags = 5; + optional .EDOTAMMRBoostType rank_mmr_boost_type = 6 [default = k_EDOTAMMRBoostType_None]; + optional int32 coach_rating = 7; + repeated uint32 coached_account_ids = 8; + optional bool was_mvp_last_game = 9; + optional bool can_earn_rewards = 10; + optional bool is_plus_subscriber = 11; + optional uint64 favorite_team_packed = 12; + optional bool is_steam_china = 13; + optional uint32 title = 14; + optional uint32 guild_id = 15; + repeated fixed32 disabled_random_hero_bits = 16; + repeated int32 disabled_hero_id = 17; + repeated int32 enabled_hero_id = 18; + repeated int32 banned_hero_ids = 19; +} + +message CLobbyTeamDetails { + optional string team_name = 1; + optional string team_tag = 3; + optional uint32 team_id = 4; + optional uint64 team_logo = 5; + optional uint64 team_base_logo = 6; + optional uint64 team_banner_logo = 7; + optional bool team_complete = 8; + optional uint32 rank = 15; + optional sint32 rank_change = 16; + optional bool is_home_team = 17; + optional bool is_challenge_match = 18; + optional uint64 challenge_match_token_account = 19; + optional string team_logo_url = 20; + optional string team_abbreviation = 21; +} + +message CLobbyGuildDetails { + optional uint32 guild_id = 1; + optional uint32 guild_primary_color = 2; + optional uint32 guild_secondary_color = 3; + optional uint32 guild_pattern = 4; + optional uint64 guild_logo = 5; + optional uint32 guild_points = 6; + optional uint32 guild_event = 7; + optional uint32 guild_flags = 8; + optional .DOTA_GC_TEAM team_for_guild = 9 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional string guild_tag = 10; + optional uint32 guild_weekly_percentile = 11; +} + +message CLobbyTimedRewardDetails { + optional uint32 item_def_index = 2; + optional bool is_supply_crate = 3; + optional bool is_timed_drop = 4; + optional uint32 account_id = 5; + optional uint32 origin = 6; +} + +message CLobbyBroadcastChannelInfo { + optional uint32 channel_id = 1; + optional string country_code = 2; + optional string description = 3; + optional string language_code = 4; +} + +message CLobbyGuildChallenge { + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint32 challenge_instance_id = 3; + optional uint32 challenge_parameter = 4; + optional uint32 challenge_timestamp = 5; + optional uint32 challenge_period_serial = 6; + optional uint32 challenge_progress_at_start = 7; + repeated uint32 eligible_account_ids = 8; +} + +message CDOTALobbyMatchQualityData { + optional uint32 overall_quality = 1; + optional uint32 team_balance = 2; + optional uint32 match_skill_range = 3; + optional uint32 match_behavior = 4; +} + +message CSODOTALobby { + message CExtraMsg { + optional uint32 id = 1; + optional bytes contents = 2; + } + + enum State { + UI = 0; + READYUP = 4; + SERVERSETUP = 1; + RUN = 2; + POSTGAME = 3; + NOTREADY = 5; + SERVERASSIGN = 6; + } + + enum LobbyType { + INVALID = -1; + CASUAL_MATCH = 0; + PRACTICE = 1; + COOP_BOT_MATCH = 4; + COMPETITIVE_MATCH = 7; + WEEKEND_TOURNEY = 9; + LOCAL_BOT_MATCH = 10; + SPECTATOR = 11; + EVENT_MATCH = 12; + NEW_PLAYER_POOL = 14; + FEATURED_GAMEMODE = 15; + } + + optional uint64 lobby_id = 1 [(key_field) = true]; + repeated .CSODOTALobbyMember all_members = 120; + repeated uint32 member_indices = 121; + repeated uint32 left_member_indices = 122; + repeated uint32 free_member_indices = 123; + optional fixed64 leader_id = 11; + optional fixed64 server_id = 6 [default = 0]; + optional uint32 game_mode = 3; + repeated fixed64 pending_invites = 10; + optional .CSODOTALobby.State state = 4 [default = UI]; + optional string connect = 5; + optional .CSODOTALobby.LobbyType lobby_type = 12 [default = INVALID]; + optional bool allow_cheats = 13; + optional bool fill_with_bots = 14; + optional string game_name = 16; + repeated .CLobbyTeamDetails team_details = 17; + optional uint32 tournament_id = 19; + optional uint32 tournament_game_id = 20; + optional uint32 server_region = 21 [default = 0]; + optional .DOTA_GameState game_state = 22 [default = DOTA_GAMERULES_STATE_INIT]; + optional uint32 num_spectators = 23; + optional uint32 matchgroup = 25; + optional .DOTA_CM_PICK cm_pick = 28 [default = DOTA_CM_RANDOM]; + optional uint64 match_id = 30; + optional bool allow_spectating = 31 [default = true]; + optional .DOTABotDifficulty bot_difficulty_radiant = 36 [default = BOT_DIFFICULTY_HARD]; + optional string pass_key = 39; + optional uint32 leagueid = 42; + optional uint32 penalty_level_radiant = 43 [default = 0]; + optional uint32 penalty_level_dire = 44 [default = 0]; + optional uint32 series_type = 46; + optional uint32 radiant_series_wins = 47; + optional uint32 dire_series_wins = 48; + optional bool allchat = 51 [default = false]; + optional .LobbyDotaTVDelay dota_tv_delay = 53 [default = LobbyDotaTV_10]; + optional string custom_game_mode = 54; + optional string custom_map_name = 55; + optional uint32 custom_difficulty = 56; + optional bool lan = 57; + repeated .CLobbyBroadcastChannelInfo broadcast_channel_info = 58; + optional uint32 first_leaver_accountid = 59; + optional uint32 series_id = 60; + optional bool low_priority = 61; + repeated .CSODOTALobby.CExtraMsg extra_messages = 62; + optional bool first_blood_happened = 65; + optional .EMatchOutcome match_outcome = 70 [default = k_EMatchOutcome_Unknown]; + optional bool mass_disconnect = 67; + optional uint64 custom_game_id = 68; + optional uint32 custom_min_players = 71; + optional uint32 custom_max_players = 72; + optional .DOTALobbyVisibility visibility = 75 [default = DOTALobbyVisibility_Public]; + optional fixed64 custom_game_crc = 76; + optional bool custom_game_auto_created_lobby = 77; + optional fixed32 custom_game_timestamp = 80; + repeated uint64 previous_series_matches = 81; + optional uint64 previous_match_override = 82; + optional uint32 game_start_time = 87; + optional .LobbyDotaPauseSetting pause_setting = 88 [default = LobbyDotaPauseSetting_Unlimited]; + optional uint32 weekend_tourney_division_id = 90; + optional uint32 weekend_tourney_skill_level = 91; + optional uint32 weekend_tourney_bracket_round = 92; + optional .DOTABotDifficulty bot_difficulty_dire = 93 [default = BOT_DIFFICULTY_HARD]; + optional uint64 bot_radiant = 94; + optional uint64 bot_dire = 95; + repeated .EEvent event_progression_enabled = 96; + optional .DOTASelectionPriorityRules selection_priority_rules = 97 [default = k_DOTASelectionPriorityRules_Manual]; + optional uint32 series_previous_selection_priority_team_id = 98; + optional uint32 series_current_selection_priority_team_id = 99; + optional .DOTASelectionPriorityChoice series_current_priority_team_choice = 100 [default = k_DOTASelectionPriorityChoice_Invalid]; + optional .DOTASelectionPriorityChoice series_current_non_priority_team_choice = 101 [default = k_DOTASelectionPriorityChoice_Invalid]; + optional bool series_current_selection_priority_used_coin_toss = 102; + optional .EEvent current_primary_event = 103 [default = EVENT_ID_NONE]; + repeated int32 emergency_disabled_hero_ids = 105; + optional fixed64 custom_game_private_key = 106; + optional bool custom_game_penalties = 107; + optional string lan_host_ping_location = 109; + optional uint32 league_node_id = 110; + optional uint32 match_duration = 111; + optional uint32 league_phase = 113; + optional bool experimental_gameplay_enabled = 116; + repeated .CLobbyGuildChallenge guild_challenges = 117; + repeated .CLobbyGuildDetails guild_details = 118; + repeated int32 requested_hero_ids = 124; + repeated .CMsgLobbyCoachFriendRequest coach_friend_requests = 125; + optional bool is_in_steam_china = 126; + optional bool with_scenario_save = 127; + optional uint32 lobby_creation_time = 128; + optional string event_game_definition = 129; + optional .CDOTALobbyMatchQualityData match_quality_data = 131; +} + +message CSODOTAServerLobby { + repeated .CSODOTAServerLobbyMember all_members = 1; + repeated .CSODOTALobby.CExtraMsg extra_startup_messages = 2; +} + +message CSODOTAStaticLobby { + repeated .CSODOTAStaticLobbyMember all_members = 1; + optional bool is_player_draft = 2; + optional bool is_last_match_in_series = 3; +} + +message CSODOTAServerStaticLobby { + repeated .CSODOTAServerStaticLobbyMember all_members = 1; + optional float post_patch_strategy_time_buffer = 2; + repeated .CMsgLobbyEventPoints lobby_event_points = 3; +} + +message CMsgAdditionalLobbyStartupAccountData { + message ChatWheelMessageRange { + optional uint32 message_id_start = 1 [default = 4294967295]; + optional uint32 message_id_end = 2 [default = 4294967295]; + } + + message PingWheelMessageRange { + optional uint32 message_id_start = 1 [default = 4294967295]; + optional uint32 message_id_end = 2 [default = 4294967295]; + } + + optional uint32 account_id = 1; + optional .CMsgLobbyPlayerPlusSubscriptionData plus_data = 2; + repeated .CMsgAdditionalLobbyStartupAccountData.ChatWheelMessageRange unlocked_chat_wheel_message_ranges = 3; + repeated .CMsgAdditionalLobbyStartupAccountData.PingWheelMessageRange unlocked_ping_wheel_message_ranges = 4; +} + +message CMsgLobbyInitializationComplete { +} + +message CMsgLobbyPlaytestDetails { + optional string json = 1; +} + +message CMsgLocalServerGuildData { + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint32 guild_points = 3; + optional uint64 guild_logo = 4; + optional uint32 guild_primary_color = 5; + optional uint32 guild_secondary_color = 6; + optional uint32 guild_pattern = 7; + optional uint32 guild_flags = 8; + optional uint32 guild_weekly_percentile = 9; +} + +message CMsgLocalServerFakeLobbyData { + optional uint32 account_id = 1; + repeated .CMsgLobbyEventPoints event_points = 2; + optional bool is_plus_subscriber = 3; + optional uint32 primary_event_id = 4; + optional uint32 favorite_team = 5; + optional uint32 favorite_team_quality = 6; + optional .CMsgLocalServerGuildData guild_info = 7; + optional uint32 teleport_fx_level = 8; + optional .CMsgAdditionalLobbyStartupAccountData additional_data = 9; +} diff --git a/game/shared/dota/dota_gcmessages_common_match_management.proto b/game/shared/dota/dota_gcmessages_common_match_management.proto new file mode 100644 index 00000000..ae4bfd1f --- /dev/null +++ b/game/shared/dota/dota_gcmessages_common_match_management.proto @@ -0,0 +1,501 @@ +import "steammessages.proto"; +import "gcsdk_gcmessages.proto"; +import "dota_shared_enums.proto"; + +enum ELaneSelection { + k_ELaneSelection_SAFELANE = 0; + k_ELaneSelection_OFFLANE = 1; + k_ELaneSelection_MIDLANE = 2; + k_ELaneSelection_SUPPORT = 3; + k_ELaneSelection_HARDSUPPORT = 4; +} + +enum ELaneSelectionFlags { + k_ELaneSelectionFlags_SAFELANE = 1; + k_ELaneSelectionFlags_OFFLANE = 2; + k_ELaneSelectionFlags_MIDLANE = 4; + k_ELaneSelectionFlags_SUPPORT = 8; + k_ELaneSelectionFlags_HARDSUPPORT = 16; + k_ELaneSelectionFlagGroup_None = 0; + k_ELaneSelectionFlagGroup_CORE = 7; + k_ELaneSelectionFlagGroup_SUPPORT = 24; + k_ELaneSelectionFlagGroup_ALL = 31; +} + +enum EPartyMatchmakingFlags { + k_EPartyMatchmakingFlags_None = 0; + k_EPartyMatchmakingFlags_LargeRankSpread = 1; +} + +enum EHighPriorityMMState { + k_EHighPriorityMM_Unknown = 0; + k_EHighPriorityMM_MissingMMData = 1; + k_EHighPriorityMM_ResourceMissing = 2; + k_EHighPriorityMM_ManuallyDisabled = 3; + k_EHighPriorityMM_Min_Enabled = 64; + k_EHighPriorityMM_AllRolesSelected = 65; + k_EHighPriorityMM_UsingResource = 66; + k_EHighPriorityMM_FiveStack = 67; + k_EHighPriorityMM_HighDemand = 68; +} + +enum EReadyCheckStatus { + k_EReadyCheckStatus_Unknown = 0; + k_EReadyCheckStatus_NotReady = 1; + k_EReadyCheckStatus_Ready = 2; +} + +enum EReadyCheckRequestResult { + k_EReadyCheckRequestResult_Success = 0; + k_EReadyCheckRequestResult_AlreadyInProgress = 1; + k_EReadyCheckRequestResult_NotInParty = 2; + k_EReadyCheckRequestResult_SendError = 3; + k_EReadyCheckRequestResult_UnknownError = 4; +} + +enum EMatchBehaviorScoreVariance { + k_EMatchBehaviorScoreVariance_Invalid = 0; + k_EMatchBehaviorScoreVariance_Low = 1; + k_EMatchBehaviorScoreVariance_Medium = 2; + k_EMatchBehaviorScoreVariance_High = 3; +} + +message CSODOTAPartyMember { + optional bool is_coach = 2; + repeated uint32 region_ping_codes = 4 [packed = true]; + repeated uint32 region_ping_times = 5 [packed = true]; + optional uint32 region_ping_failed_bitmask = 6; + optional bool is_plus_subscriber = 10; + optional uint32 tourney_skill_level = 7; + optional uint32 tourney_buyin = 8; + optional uint32 tourney_prevent_until = 9; + optional bool mm_data_valid = 13; + optional uint32 lane_selection_flags = 11; + optional bool high_priority_disabled = 14; + optional bool has_hp_resource = 15; + optional bool joined_from_partyfinder = 12; + optional bool is_steam_china = 16; + repeated int32 banned_hero_ids = 17; +} + +message CSODOTAParty { + enum State { + UI = 0; + FINDING_MATCH = 1; + IN_MATCH = 2; + } + + optional uint64 party_id = 1 [(key_field) = true]; + optional fixed64 leader_id = 2; + repeated fixed64 member_ids = 3; + optional uint32 game_modes = 4; + optional .CSODOTAParty.State state = 6 [default = UI]; + optional uint32 effective_started_matchmaking_time = 7; + optional uint32 raw_started_matchmaking_time = 32; + optional uint32 attempt_start_time = 33; + optional uint32 attempt_num = 34; + optional uint32 matchgroups = 11; + optional uint32 low_priority_account_id = 19; + optional .MatchType match_type = 21 [default = MATCH_TYPE_CASUAL]; + optional uint32 team_id = 23; + optional string team_name = 51; + optional uint64 team_ui_logo = 52; + optional uint64 team_base_logo = 53; + optional uint32 match_disabled_until_date = 24; + optional uint32 match_disabled_account_id = 25; + optional uint32 matchmaking_max_range_minutes = 26; + optional uint32 matchlanguages = 27; + repeated .CSODOTAPartyMember members = 29; + optional uint32 low_priority_games_remaining = 35; + optional bool open_for_join_requests = 40; + repeated .CSODOTAPartyInvite sent_invites = 41; + repeated .CSODOTAPartyInvite recv_invites = 42; + optional uint32 account_flags = 43; + optional uint32 region_select_flags = 44; + optional uint32 exclusive_tournament_id = 45; + optional uint32 tourney_division_id = 47; + optional uint32 tourney_schedule_time = 48; + optional uint32 tourney_skill_level = 49; + optional uint32 tourney_bracket_round = 50; + optional uint32 tourney_queue_deadline_time = 54; + optional .ETourneyQueueDeadlineState tourney_queue_deadline_state = 55 [default = k_ETourneyQueueDeadlineState_Normal]; + optional uint32 party_builder_slots_to_fill = 56; + optional uint32 party_builder_match_groups = 57; + optional uint32 party_builder_start_time = 58; + optional bool solo_queue = 59; + optional uint32 steam_clan_account_id = 61; + optional .CMsgReadyCheckStatus ready_check = 62; + optional uint32 custom_game_disabled_until_date = 63; + optional uint32 custom_game_disabled_account_id = 64; + optional bool is_challenge_match = 65; + optional bool party_search_beacon_active = 66; + optional uint32 matchmaking_flags = 67; + optional .EHighPriorityMMState high_priority_state = 68 [default = k_EHighPriorityMM_Unknown]; + optional bool lane_selections_enabled = 69; + optional uint32 custom_game_difficulty_mask = 70; + optional bool is_steam_china = 71; + optional uint32 bot_difficulty_mask = 72; + optional uint32 bot_script_index_mask = 73; + optional bool restricted_from_ranked = 74; + optional uint32 restricted_from_ranked_account_id = 75; + optional uint32 rank_spread_likert_scale = 76; + optional uint32 behavior_score_likert_scale = 77; +} + +message CSODOTAPartyInvite { + message PartyMember { + optional string name = 1; + optional fixed64 steam_id = 2; + optional bool is_coach = 4; + } + + optional uint64 group_id = 1 [(key_field) = true]; + optional fixed64 sender_id = 2; + optional string sender_name = 3; + repeated .CSODOTAPartyInvite.PartyMember members = 4; + optional uint32 team_id = 5; + optional bool low_priority_status = 6; + optional bool as_coach = 7; + optional fixed64 invite_gid = 8; +} + +message CMsgLeaverState { + optional uint32 lobby_state = 1; + optional .DOTA_GameState game_state = 2 [default = DOTA_GAMERULES_STATE_INIT]; + optional bool leaver_detected = 3; + optional bool first_blood_happened = 4; + optional bool discard_match_results = 5; + optional bool mass_disconnect = 6; +} + +message CMsgReadyCheckStatus { + message ReadyMember { + optional uint32 account_id = 1; + optional .EReadyCheckStatus ready_status = 2 [default = k_EReadyCheckStatus_Unknown]; + } + + optional uint32 start_timestamp = 1; + optional uint32 finish_timestamp = 2; + optional uint32 initiator_account_id = 3; + repeated .CMsgReadyCheckStatus.ReadyMember ready_members = 4; +} + +message CMsgPartyReadyCheckRequest { +} + +message CMsgPartyReadyCheckResponse { + optional .EReadyCheckRequestResult result = 1 [default = k_EReadyCheckRequestResult_Success]; +} + +message CMsgPartyReadyCheckAcknowledge { + optional .EReadyCheckStatus ready_status = 1 [default = k_EReadyCheckStatus_Unknown]; +} + +message CMsgLobbyEventGameDetails { + optional bytes kv_data = 1; +} + +message CMsgMatchMatchmakingStats { + optional uint32 average_queue_time = 1; + optional uint32 maximum_queue_time = 2; + optional .EMatchBehaviorScoreVariance behavior_score_variance = 3 [default = k_EMatchBehaviorScoreVariance_Invalid]; +} + +message CMvpData { + message MvpDatum { + message MvpAccolade { + enum MvpAccoladeType { + kills = 1; + deaths = 2; + assists = 3; + net_worth = 5; + item_value = 6; + support_gold_spent = 7; + wards_placed = 8; + dewards = 9; + camps_stacked = 10; + last_hits = 11; + denies = 12; + kKillEaterEvent_Killing_Sprees = 13; + kKillEaterEvent_Godlike = 14; + kKillEaterEvent_Towers_Destroyed = 15; + kKillEaterEventType_Invoker_SunstrikeKills = 16; + kKillEaterEventType_Axe_Culls = 17; + kKillEaterEventType_Axe_BattleHungerKills = 18; + kKillEaterEventType_LowHealthKills = 19; + kKillEaterEventType_Invoker_TornadoKills = 20; + kKillEaterEventType_Sven_DoubleStuns = 21; + kKillEaterEventType_Sven_WarcryAssists = 22; + kKillEaterEventType_Sven_CleaveDoubleKills = 23; + kKillEaterEventType_Sven_TeleportInterrupts = 24; + kKillEaterEventType_Faceless_MultiChrono = 25; + kKillEaterEventType_Faceless_ChronoKills = 26; + kKillEaterEventType_Ursa_MultiShocks = 27; + kKillEaterEventType_RoshanKills = 28; + kKillEaterEventType_Lion_FingerKills = 29; + kKillEaterEventType_Riki_SmokedHeroKills = 32; + kKillEaterEventType_HeroesRevealedWithDust = 33; + kKillEaterEventType_SkeletonKing_ReincarnationKills = 34; + kKillEaterEventType_Skywrath_FlareKills = 35; + kKillEaterEventType_Leshrac_SplitEarthStuns = 36; + kKillEaterEventType_Mirana_MaxStunArrows = 37; + kKillEaterEventType_PhantomAssassin_CoupdeGraceCrits = 38; + kKillEaterEventType_PhantomAssassin_DaggerCrits = 39; + kKillEaterEventType_Meepo_Earthbinds = 40; + kKillEaterEventType_Bloodseeker_RuptureKills = 41; + kKillEaterEventType_Slark_LeashedEnemies = 42; + kKillEaterEventType_Disruptor_FountainGlimpses = 43; + kKillEaterEventType_Rubick_SpellsStolen = 44; + kKillEaterEventType_Rubick_UltimatesStolen = 45; + kKillEaterEventType_Doom_EnemiesDoomed = 46; + kKillEaterEventType_Omniknight_Purifications = 47; + kKillEaterEventType_Omniknight_AlliesRepelled = 48; + kKillEaterEventType_Omniknight_EnemiesRepelled = 49; + kKillEaterEventType_Warlock_FiveHeroFatalBonds = 50; + kKillEaterEventType_CrystalMaiden_FrostbittenEnemies = 51; + kKillEaterEventType_CrystalMaiden_CrystalNovas = 52; + kKillEaterEventType_Kunkka_DoubleHeroTorrents = 53; + kKillEaterEventType_Kunkka_TripleHeroGhostShips = 54; + kKillEaterEventType_NagaSiren_EnemiesEnsnared = 55; + kKillEaterEventType_NagaSiren_TripleHeroRipTides = 56; + kKillEaterEventType_Lycan_KillsDuringShapeshift = 57; + kKillEaterEventType_Pudge_DismemberKills = 58; + kKillEaterEventType_Pudge_EnemyHeroesHooked = 59; + kKillEaterEventType_Pudge_HookKills = 60; + kKillEaterEventType_Pudge_UnseenEnemyHeroesHooked = 61; + kKillEaterEventType_DrowRanger_EnemiesSilenced = 62; + kKillEaterEventType_DrowRanger_MultiHeroSilences = 63; + kKillEaterEventType_DrowRanger_SilencedKills = 64; + kKillEaterEventType_DrowRanger_FrostArrowKills = 65; + kKillEaterEventType_DragonKnight_KillsInDragonForm = 66; + kKillEaterEventType_DragonKnight_BreatheFireKills = 67; + kKillEaterEventType_DragonKnight_SplashKills = 68; + kKillEaterEventType_WitchDoctor_CaskStuns = 69; + kKillEaterEventType_WitchDoctor_MaledictKills = 70; + kKillEaterEventType_WitchDoctor_MultiHeroMaledicts = 71; + kKillEaterEventType_WitchDoctor_DeathWardKills = 72; + kKillEaterEventType_Disruptor_ThunderStrikeKills = 73; + kKillEaterEventType_Disruptor_HeroesGlimpsed = 74; + kKillEaterEventType_CrystalMaiden_FreezingFieldKills = 75; + kKillEaterEventType_Medusa_EnemiesPetrified = 77; + kKillEaterEventType_Warlock_FatalBondsKills = 78; + kKillEaterEventType_Warlock_GolemKills = 79; + kKillEaterEventType_Tusk_WalrusPunches = 80; + kKillEaterEventType_Tusk_SnowballStuns = 81; + kKillEaterEventType_Earthshaker_FissureStuns = 82; + kKillEaterEventType_Earthshaker_3HeroEchoslams = 83; + kKillEaterEventType_SandKing_BurrowstrikeStuns = 84; + kKillEaterEventType_SandKing_EpicenterKills = 85; + kKillEaterEventType_SkywrathMage_AncientSealKills = 86; + kKillEaterEventType_SkywrathMage_ConcussiveShotKills = 87; + kKillEaterEventType_Luna_LucentBeamKills = 88; + kKillEaterEventType_Luna_EclipseKills = 89; + kKillEaterEventType_KeeperOfTheLight_IlluminateKills = 90; + kKillEaterEventType_KeeperOfTheLight_ManaLeakStuns = 91; + kKillEaterEventType_KeeperOfTheLight_TeammatesRecalled = 92; + kKillEaterEventType_LegionCommander_DuelsWon = 93; + kKillEaterEventType_Beastmaster_RoarKills = 94; + kKillEaterEventType_Beastmaster_RoarMultiKills = 95; + kKillEaterEventType_Windrunner_FocusFireBuildings = 96; + kKillEaterEventType_Windrunner_PowershotKills = 97; + kKillEaterEventType_PhantomAssassin_DaggerLastHits = 98; + kKillEaterEventType_PhantomAssassin_PhantomStrikeKills = 99; + kKillEaterEventType_DeathProphet_CryptSwarmKills = 100; + kKillEaterEventType_DeathProphet_ExorcismBuildingKills = 101; + kKillEaterEventType_DeathProphet_ExorcismSpiritsSummoned = 102; + kKillEaterEventType_DeathProphet_MultiHeroSilences = 103; + kKillEaterEventType_Abaddon_MistCoilKills = 104; + kKillEaterEventType_Abaddon_MistCoilHealed = 105; + kKillEaterEventType_Abaddon_AphoticShieldKills = 106; + kKillEaterEventType_Lich_ChainFrostTripleKills = 107; + kKillEaterEventType_Lich_ChainFrostMultiKills = 108; + kKillEaterEventType_Lich_ChainFrostBounces = 109; + kKillEaterEventType_Ursa_EnragedKills = 110; + kKillEaterEventType_Ursa_EarthshockKills = 111; + kKillEaterEventType_Lina_LagunaBladeKills = 112; + kKillEaterEventType_Lina_DragonSlaveKills = 113; + kKillEaterEventType_Lina_LightStrikeArrayStuns = 114; + kKillEaterEvent_Barracks_Destroyed = 115; + kKillEaterEvent_TemplarAssassin_MeldKills = 116; + kKillEaterEvent_TemplarAssassin_HeroesSlowed = 117; + kKillEaterEvent_Sniper_AssassinationKills = 118; + kKillEaterEvent_Sniper_HeadshotStuns = 119; + kKillEaterEvent_EarthSpirit_SmashStuns = 120; + kKillEaterEvent_EarthSpirit_GripSilences = 121; + kKillEaterEvent_ShadowShaman_ShackleKills = 122; + kKillEaterEvent_ShadowShaman_HexKills = 123; + kKillEaterEvent_Centaur_EnemiesStomped = 124; + kKillEaterEvent_Centaur_DoubleEdgeKills = 125; + kKillEaterEvent_Centaur_ReturnKills = 126; + kKillEaterEvent_EmberSpirit_EnemiesChained = 127; + kKillEaterEvent_EmberSpirit_SleightOfFistMultiKills = 128; + kKillEaterEvent_Puck_OrbKills = 129; + kKillEaterEvent_VengefulSpirit_EnemiesStunned = 130; + kKillEaterEvent_Lifestealer_RageKills = 131; + kKillEaterEvent_Lifestealer_OpenWoundsKills = 132; + kKillEaterEvent_Lifestealer_InfestKills = 133; + kKillEaterEvent_ElderTitan_SpiritKills = 134; + kKillEaterEvent_ElderTitan_GoodStomps = 135; + kKillEaterEvent_Clockwerk_RocketKills = 136; + kKillEaterEvent_Clockwerk_BlindRocketKills = 137; + kKillEaterEvent_StormSpirit_BallKills = 138; + kKillEaterEvent_StormSpirit_DoubleRemnantKills = 139; + kKillEaterEvent_StormSpirit_VortexKills = 140; + kKillEaterEvent_Tinker_DoubleMissileKills = 141; + kKillEaterEvent_Tinker_LaserKills = 142; + kKillEaterEvent_Techies_SuicideKills = 143; + kKillEaterEvent_Techies_LandMineKills = 144; + kKillEaterEvent_Techies_StatisTrapStuns = 145; + kKillEaterEvent_Techies_RemoteMineKills = 146; + kKillEaterEvent_ShadowFiend_TripleRazeKills = 147; + kKillEaterEvent_ShadowFiend_RequiemMultiKills = 148; + kKillEaterEvent_ShadowFiend_QRazeKills = 149; + kKillEaterEvent_ShadowFiend_WRazeKills = 150; + kKillEaterEvent_ShadowFiend_ERazeKills = 151; + kKillEaterEvent_Oracle_FatesEdictKills = 152; + kKillEaterEvent_Oracle_FalsePromiseSaves = 153; + kKillEaterEvent_Juggernaut_OmnislashKills = 154; + kKillEaterEventType_SkeletonKing_SkeletonHeroKills = 157; + kKillEaterEventType_DarkWillow_CursedCrownTripleStuns = 158; + kKillEaterEventType_Dazzle_ShallowGraveSaves = 159; + kKillEaterEventType_Dazzle_PoisonTouchKills = 160; + kKillEaterEventType_ThreeManMeks = 161; + kKillEaterEventType_Viper_PoisonAttackKills = 162; + kKillEaterEventType_Viper_CorrosiveSkinKills = 163; + kKillEaterEventType_ThreeHeroVeils = 164; + kKillEaterEventType_Viper_KillsDuringViperStrike = 165; + kKillEaterEventType_SolarCrestKills = 166; + kKillEaterEventType_Tiny_TreeThrowKills = 167; + kKillEaterEventType_Riki_BackstabKills = 168; + kKillEaterEventType_Phoenix_ThreeHeroSupernovaStuns = 169; + kKillEaterEventType_Terrorblade_MetamorphosisKills = 170; + kKillEaterEventType_Lion_GreatFingerKills = 171; + kKillEaterEventType_Antimage_SpellsBlockedWithAghanims = 172; + kKillEaterEventType_Antimage_ThreeManManaVoids = 173; + kKillEaterEventType_ArcWarden_TempestDoubleKills = 174; + kKillEaterEventType_ArcWarden_SparkWraithKills = 175; + kKillEaterEventType_Bane_BrainSapKills = 176; + kKillEaterEventType_Bane_FiendsGripKills = 177; + kKillEaterEventType_Batrider_TripleHeroFlamebreaks = 178; + kKillEaterEventType_Batrider_DoubleHeroLassoes = 179; + kKillEaterEventType_Brewmaster_KillsDuringPrimalSplit = 180; + kKillEaterEventType_Bristleback_KillsUnderFourQuillStacks = 181; + kKillEaterEventType_Bristleback_TripleHeroNasalGoo = 182; + kKillEaterEventType_Broodmother_SpiderlingHeroKills = 183; + kKillEaterEventType_Broodmother_KillsInsideWeb = 184; + kKillEaterEventType_Centaur_ThreeHeroStampede = 185; + kKillEaterEventType_ChaosKnight_RealityRiftKills = 186; + kKillEaterEventType_Chen_KillsWithPenitence = 187; + kKillEaterEventType_CrystalMaiden_TwoHeroCrystalNovas = 188; + kKillEaterEventType_CrystalMaiden_ThreeHeroFreezingFields = 189; + kKillEaterEventType_Dazzle_ShadowWaveKills = 190; + kKillEaterEventType_DeathProphet_SiphonKills = 191; + kKillEaterEventType_DeathProphet_ExorcismKillsDuringEuls = 192; + kKillEaterEventType_Disruptor_ThreeHeroKineticFieldStaticStorm = 193; + kKillEaterEventType_Doom_InfernalBladeBurnKills = 194; + kKillEaterEventType_DrowRanger_PrecisionAuraCreepTowerKills = 195; + kKillEaterEventType_EmberSpirit_RemnantKills = 196; + kKillEaterEventType_EmberSpirit_SleightOfFistKills = 197; + kKillEaterEventType_Enigma_MidnightPulseBlackHoleCombos = 198; + kKillEaterEventType_Enigma_ThreeManBlackHoles = 199; + kKillEaterEventType_FacelessVoid_MultiHeroTimeDilation = 200; + kKillEaterEventType_Gyrocopter_ThreeHeroFlakCannon = 201; + kKillEaterEventType_Gyrocopter_HomingMissileKills = 202; + kKillEaterEventType_Gyrocopter_RocketBarrageKills = 203; + kKillEaterEventType_Huskar_KillsDuringLifeBreak = 204; + kKillEaterEventType_Huskar_BurningSpearKills = 205; + kKillEaterEventType_Invoker_MultiHeroIceWall = 206; + kKillEaterEventType_Invoker_ThreeHeroEMP = 207; + kKillEaterEventType_Invoker_ThreeHeroDeafeningBlast = 208; + kKillEaterEventType_Invoker_MultiHeroChaosMeteor = 209; + kKillEaterEventType_Jakiro_MultiHeroDualBreath = 210; + kKillEaterEventType_Jakiro_IcePathMacropyreCombos = 211; + kKillEaterEventType_Leshrac_PulseNovaKills = 212; + kKillEaterEventType_Leshrac_ThreeHeroLightningStorm = 213; + kKillEaterEventType_Lion_ThreeHeroFingerOfDeath = 214; + kKillEaterEventType_Meepo_PoofKills = 215; + kKillEaterEventType_Meepo_MultiHeroEarthbinds = 216; + kKillEaterEventType_NightStalker_NighttimeKills = 217; + kKillEaterEventType_Morphling_KillsDuringReplicate = 218; + kKillEaterEventType_OgreMagi_FireblastKills = 219; + kKillEaterEventType_OgreMagi_IgniteKills = 220; + kKillEaterEventType_DominatingKillStreaks = 221; + kKillEaterEventType_MegaKillStreaks = 222; + kKillEaterEventType_Alchemist_AghanimsGiven = 223; + kKillEaterEventType_VeilsLeadingToKills = 224; + kKillEaterEventType_DustLeadingToKills = 225; + kKillEaterEventType_WitchDoctor_MultiHeroCaskStuns = 226; + kKillEaterEventType_Weaver_ShukuchiKills = 227; + kKillEaterEventType_Windrunner_ShackleFocusFireKills = 228; + kKillEaterEventType_VengefulSpirit_VengeanceAuraIllusionKills = 229; + kKillEaterEventType_Tusk_WalrusPunchKills = 230; + kKillEaterEventType_Tinker_MultiHeroLasers = 231; + kKillEaterEventType_TemplarAssassin_MultiHeroPsiBlades = 232; + kKillEaterEventType_Sven_KillsDuringGodsStrength = 233; + kKillEaterEventType_Sniper_ThreeHeroShrapnels = 234; + kKillEaterEventType_Slark_KillsDuringShadowDance = 235; + kKillEaterEventType_ShadowShaman_MultiHeroEtherShocks = 236; + kKillEaterEventType_ShadowShaman_SerpentWardShackleKills = 237; + kKillEaterEventType_Riki_ThreeHeroTricksOfTheTrade = 238; + kKillEaterEventType_Razor_EyeOfTheStormKills = 239; + kKillEaterEventType_Pugna_LifeDrainKills = 240; + kKillEaterEventType_ObsidianDestroyer_SanitysEclipseKills = 241; + kKillEaterEventType_Oracle_MultiHeroFortunesEnd = 242; + kKillEaterEventType_Omniknight_PurificationKills = 243; + kKillEaterEventType_NightStalker_EnemyMissesUnderCripplingFear = 244; + kKillEaterEventType_Warlock_ThreeHeroFatalBonds = 245; + kKillEaterEventType_Riki_TricksOfTheTradeKills = 246; + kKillEaterEventType_Earthshaker_AftershockHits10 = 247; + kKillEaterEventType_Earthshaker_5HeroEchoslams = 248; + kKillEaterEventType_Lina_LagunaBladeHeroKills = 249; + kKillEaterEventType_Lina_LightStrikeHeroStuns = 250; + kKillEaterEventType_Earthshaker_FissureMultiStuns = 251; + kKillEaterEventType_Earthshaker_TotemKills = 252; + kKillEaterEventType_Pangolier_SwashbuckleKills = 253; + kKillEaterEventType_Furion_EnemyHeroesTrapped = 254; + kKillEaterEventType_Pangolier_HeartpiercerKills = 255; + kKillEaterEventType_Medusa_MultiHeroStoneGaze = 256; + kKillEaterEventType_Medusa_SplitShotKills = 257; + kKillEaterEventType_Mirana_MultiHeroStarstorm = 258; + kKillEaterEventType_Mirana_KillsFromMoonlightShadow = 259; + kKillEaterEventType_Magnus_MultiHeroSkewers = 260; + kKillEaterEventType_Magnus_MultiHeroReversePolarity = 261; + kKillEaterEventType_Magnus_HeroesSlowedWithShockwave = 262; + kKillEaterEventType_NagaSiren_MultiHeroSong = 263; + kKillEaterEventType_NagaSiren_AlliesHealedBySong = 264; + kKillEaterEventType_LoneDruid_MultiHeroRoar = 265; + kKillEaterEventType_LoneDruid_BattleCryKills = 266; + kKillEaterEventType_WinterWyvern_ThreeHeroCurses = 267; + kKillEaterEventType_Antimage_SpellsBlockedWithCounterspell = 268; + kKillEaterEventType_Mars_EnemiesKilledInArena = 269; + kKillEaterEventType_Mars_MultiHeroGodsRebuke = 270; + kKillEaterEventType_Mars_GodsRebukeKills = 271; + kKillEaterEventType_Snapfire_LizardBlobsKills = 272; + kKillEaterEventType_Snapfire_TwoHeroCookieStuns = 273; + Custom_KillStreak = 274; + kKillEaterEventType_Muerta_DeadShotKills = 275; + kKillEaterEventType_Muerta_PierceTheVeilKills = 276; + kKillEaterEventType_Muerta_MultiHeroDeadShot = 277; + kKillEaterEventType_Muerta_DeadShotsIntoTheCalling = 278; + kKillEaterEventType_Ringmaster_LongRangeDaggerHits = 279; + kKillEaterEventType_Ringmaster_MultiHeroWhips = 280; + kKillEaterEventType_Ringmaster_MultiHeroMesmerizes = 281; + kKillEaterEventType_Kez_ParryCounterAttacks = 282; + kKillEaterEventType_Kez_RavensVeilKills = 283; + kKillEaterEventType_Kez_RaptorDanceHealing = 284; + kKillEaterEventType_Kez_KillsDuringFalconRush = 285; + kKillEaterEventType_Seasonal_PartyHatsStolen = 286; + kKillEaterEventType_Seasonal_TallestHat = 287; + } + + optional .CMvpData.MvpDatum.MvpAccolade.MvpAccoladeType type = 1 [default = kills]; + optional float detail_value = 2; + } + + optional uint32 player_slot = 1; + repeated .CMvpData.MvpDatum.MvpAccolade accolades = 2; + } + + repeated .CMvpData.MvpDatum mvps = 1; + repeated .CMvpData.MvpDatum event_mvps = 2; +} diff --git a/game/shared/dota/dota_gcmessages_common_overworld.proto b/game/shared/dota/dota_gcmessages_common_overworld.proto new file mode 100644 index 00000000..829941f3 --- /dev/null +++ b/game/shared/dota/dota_gcmessages_common_overworld.proto @@ -0,0 +1,497 @@ +import "steammessages.proto"; +import "dota_shared_enums.proto"; +import "dota_gcmessages_common.proto"; +import "dota_gcmessages_common_survivors.proto"; +import "gcsdk_gcmessages.proto"; + +enum EOverworldNodeState { + k_eOverworldNodeState_Invalid = 0; + k_eOverworldNodeState_Locked = 1; + k_eOverworldNodeState_Unlocked = 2; +} + +enum EOverworldPathState { + k_eOverworldPathState_Invalid = 0; + k_eOverworldPathState_Incomplete = 1; + k_eOverworldPathState_Complete = 2; +} + +enum EOverworldAuditAction { + k_eOverworldAuditAction_Invalid = 0; + k_eOverworldAuditAction_DevModifyTokens = 1; + k_eOverworldAuditAction_DevClearInventory = 2; + k_eOverworldAuditAction_DevGrantTokens = 3; + k_eOverworldAuditAction_CompletePath = 4; + k_eOverworldAuditAction_ClaimEncounterReward = 5; + k_eOverworldAuditAction_DevResetNode = 6; + k_eOverworldAuditAction_DevResetPath = 7; + k_eOverworldAuditAction_MatchRewardsFull = 8; + k_eOverworldAuditAction_MatchRewardsHalf = 9; + k_eOverworldAuditAction_EventActionTokenGrant = 10; + k_eOverworldAuditAction_TokenTraderLost = 11; + k_eOverworldAuditAction_TokenTraderGained = 12; + k_eOverworldAuditAction_EncounterRewardTokenCost = 13; + k_eOverworldAuditAction_EncounterRewardTokenReward = 14; + k_eOverworldAuditAction_SupportGrantTokens = 16; + k_eOverworldAuditAction_TokenGiftSent = 17; +} + +enum EOverworldMinigameAction { + k_eOverworldMinigameAction_Invalid = 0; + k_eOverworldMinigameAction_DevReset = 1; + k_eOverworldMinigameAction_DevGiveCurrency = 2; + k_eOverworldMinigameAction_Purchase = 3; + k_eOverworldMinigameAction_SetOption = 4; + k_eOverworldMinigameAction_ReportCurrencyGained = 5; + k_eOverworldMinigameAction_UnlockDifficulty = 6; +} + +message CMsgOverworldTokenCount { + optional uint32 token_id = 1; + optional uint32 token_count = 2; +} + +message CMsgOverworldTokenQuantity { + repeated .CMsgOverworldTokenCount token_counts = 1; +} + +message CMsgOverworldEncounterTokenTreasureData { + message RewardOption { + optional uint32 reward_data = 1; + optional .CMsgOverworldTokenQuantity token_cost = 2; + optional .CMsgOverworldTokenQuantity token_reward = 3; + } + + repeated .CMsgOverworldEncounterTokenTreasureData.RewardOption reward_options = 1; +} + +message CMsgOverworldEncounterTokenQuestData { + message Quest { + optional uint32 reward_data = 1; + optional .CMsgOverworldTokenQuantity token_cost = 2; + optional .CMsgOverworldTokenQuantity token_reward = 3; + } + + repeated .CMsgOverworldEncounterTokenQuestData.Quest quests = 1; +} + +message CMsgOverworldHeroList { + repeated int32 hero_ids = 1; +} + +message CMsgOverworldEncounterChooseHeroData { + optional .CMsgOverworldHeroList hero_list = 1; + optional bool additive = 2; +} + +message CMsgOverworldEncounterProgressData { + optional int32 choice = 1; + optional int32 progress = 2; + optional int32 max_progress = 3; + optional bool visited = 4; +} + +message CMsgOverworldEncounterData { + repeated .CExtraMsgBlock extra_encounter_data = 1; +} + +message CMsgOverworldNode { + optional uint32 node_id = 1; + optional .EOverworldNodeState node_state = 2 [default = k_eOverworldNodeState_Invalid]; + optional .CMsgOverworldEncounterData node_encounter_data = 3; +} + +message CMsgOverworldPath { + optional uint32 path_id = 1; + optional .CMsgOverworldTokenQuantity path_cost = 2; + optional .EOverworldPathState path_state = 3 [default = k_eOverworldPathState_Invalid]; +} + +message CMsgOverworldMinigameCustomData { + oneof minigame_type { + .CMsgSurvivorsUserData survivors_data = 1; + } +} + +message CMsgOverworldMinigameUserData { + optional uint32 node_id = 1; + optional uint32 currency_amount = 2; + optional .CMsgOverworldMinigameCustomData custom_data = 3; +} + +message CMsgOverworldUserData { + message MinigameDataEntry { + optional uint32 key = 1; + optional .CMsgOverworldMinigameUserData value = 2; + } + + optional .CMsgOverworldTokenQuantity token_inventory = 1; + repeated .CMsgOverworldNode overworld_nodes = 2; + repeated .CMsgOverworldPath overworld_paths = 3; + optional uint32 current_node_id = 4; + repeated .CMsgOverworldUserData.MinigameDataEntry minigame_data = 5; +} + +message CMsgOverworldMatchRewards { + message Player { + optional uint32 player_slot = 1; + optional .CMsgOverworldTokenQuantity tokens = 2; + optional uint32 overworld_id = 3; + } + + repeated .CMsgOverworldMatchRewards.Player players = 1; +} + +message CMsgClientToGCOverworldGetUserData { + optional uint32 overworld_id = 1; +} + +message CMsgClientToGCOverworldGetUserDataResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidOverworld = 5; + } + + optional .CMsgClientToGCOverworldGetUserDataResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgOverworldUserData user_data = 2; +} + +message CMsgGCToClientOverworldUserDataUpdated { + optional uint32 overworld_id = 1; + optional .CMsgOverworldUserData user_data = 2; +} + +message CMsgClientToGCOverworldCompletePath { + optional uint32 overworld_id = 1; + optional uint32 path_id = 2; +} + +message CMsgClientToGCOverworldCompletePathResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidOverworld = 5; + k_eInvalidPath = 6; + k_eNotEnoughTokens = 7; + k_ePathIsLocked = 8; + k_ePathAlreadyUnlocked = 9; + } + + optional .CMsgClientToGCOverworldCompletePathResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgDOTAClaimEventActionResponse claim_response = 2; +} + +message CMsgOverworldEncounterPitFighterRewardData { + optional uint32 token_id = 1; + optional uint32 choice = 2; +} + +message CMsgClientToGCOverworldClaimEncounterReward { + optional uint32 overworld_id = 1; + optional uint32 node_id = 2; + optional uint32 reward_data = 3; + optional uint32 periodic_resource_id = 4; + optional .CMsgOverworldEncounterData extra_reward_data = 5; + optional uint32 leaderboard_data = 6; + optional uint32 leaderboard_index = 7; + optional bool should_claim_reward = 8; +} + +message CMsgClientToGCOverworldClaimEncounterRewardResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidOverworld = 5; + k_eInvalidNode = 6; + k_eNodeLocked = 7; + k_eRewardAlreadyClaimed = 8; + k_eNodeNotEncounter = 9; + k_eEncounterMissingRewards = 10; + k_eInvalidEncounterRewardStyle = 11; + k_eInvalidEncounterData = 12; + k_eNotEnoughTokensForReward = 13; + k_eNotEnoughResourceForReward = 14; + k_eInvalidRewardData = 15; + } + + optional .CMsgClientToGCOverworldClaimEncounterRewardResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgDOTAClaimEventActionResponse claim_response = 2; + optional .CMsgOverworldTokenQuantity tokens_received = 3; +} + +message CMsgClientToGCOverworldVisitEncounter { + optional uint32 overworld_id = 1; + optional uint32 node_id = 2; +} + +message CMsgClientToGCOverworldVisitEncounterResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidOverworld = 5; + k_eInvalidNode = 6; + k_eNodeLocked = 7; + k_eNodeNotEncounter = 8; + k_eAlreadyVisited = 9; + } + + optional .CMsgClientToGCOverworldVisitEncounterResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldMoveToNode { + optional uint32 overworld_id = 1; + optional uint32 node_id = 2; +} + +message CMsgClientToGCOverworldMoveToNodeResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidOverworld = 5; + k_eInvalidNode = 6; + k_eNodeLocked = 7; + } + + optional .CMsgClientToGCOverworldMoveToNodeResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldTradeTokens { + optional uint32 overworld_id = 1; + optional .CMsgOverworldTokenQuantity token_offer = 2; + optional .CMsgOverworldTokenQuantity token_request = 3; + optional uint32 recipe = 4; + optional uint32 encounter_id = 5; +} + +message CMsgClientToGCOverworldTradeTokensResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eNodeLocked = 6; + k_eInvalidOverworld = 7; + k_eInvalidOffer = 8; + k_eNotEnoughTokens = 9; + k_eInvalidNode = 10; + k_eInvalidEncounter = 11; + k_eRewardDoesNotMatchRecipe = 12; + } + + optional .CMsgClientToGCOverworldTradeTokensResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgOverworldTokenQuantity tokens_received = 2; +} + +message CMsgClientToGCOverworldGiftTokens { + optional uint32 overworld_id = 1; + optional .CMsgOverworldTokenCount token_gift = 2; + optional uint32 recipient_account_id = 3; + optional uint32 periodic_resource_id = 4; +} + +message CMsgClientToGCOverworldGiftTokensResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eNodeLocked = 6; + k_eInvalidOverworld = 7; + k_eInvalidGift = 8; + k_eNotEnoughTokens = 9; + k_eInvalidRecipient = 10; + k_eNotEnoughPeriodicResource = 11; + } + + optional .CMsgClientToGCOverworldGiftTokensResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldRequestTokensNeededByFriend { + optional uint32 friend_account_id = 1; + optional uint32 overworld_id = 2; +} + +message CMsgClientToGCOverworldRequestTokensNeededByFriendResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eNodeLocked = 6; + k_eInvalidOverworld = 7; + k_eInvalidFriend = 8; + k_eTooManyRequests = 9; + } + + optional .CMsgClientToGCOverworldRequestTokensNeededByFriendResponse.EResponse response = 1 [default = k_eInternalError]; + optional .CMsgOverworldTokenQuantity token_quantity = 2; +} + +message CMsgClientToGCOverworldDevResetAll { + optional uint32 overworld_id = 1; +} + +message CMsgClientToGCOverworldDevResetAllResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidOverworld = 6; + } + + optional .CMsgClientToGCOverworldDevResetAllResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldDevResetNode { + optional uint32 overworld_id = 1; + optional uint32 node_id = 2; +} + +message CMsgClientToGCOverworldDevResetNodeResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidOverworld = 6; + k_eInvalidNode = 7; + } + + optional .CMsgClientToGCOverworldDevResetNodeResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldDevGrantTokens { + optional uint32 overworld_id = 1; + optional .CMsgOverworldTokenQuantity token_quantity = 2; +} + +message CMsgClientToGCOverworldDevGrantTokensResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidOverworld = 6; + } + + optional .CMsgClientToGCOverworldDevGrantTokensResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldDevClearInventory { + optional uint32 overworld_id = 1; +} + +message CMsgClientToGCOverworldDevClearInventoryResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidOverworld = 6; + } + + optional .CMsgClientToGCOverworldDevClearInventoryResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldFeedback { + optional uint32 language = 1; + optional uint32 overworld_id = 2; + optional string feedback = 3; +} + +message CMsgClientToGCOverworldFeedbackResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidOverworld = 6; + } + + optional .CMsgClientToGCOverworldFeedbackResponse.EResponse response = 1 [default = k_eInternalError]; +} + +message CMsgClientToGCOverworldGetDynamicImage { + optional uint32 magic = 1; + optional uint32 image_id = 2; + optional uint32 language = 3; +} + +message CMsgClientToGCOverworldGetDynamicImageResponse { + message Image { + optional uint32 width = 1; + optional uint32 height = 2; + optional .CMsgClientToGCOverworldGetDynamicImageResponse.EDynamicImageFormat format = 3 [default = k_eUnknown]; + optional bytes image_bytes = 4; + } + + enum EDynamicImageFormat { + k_eUnknown = 0; + k_ePNG = 1; + k_eData = 2; + } + + optional uint32 image_id = 1; + repeated .CMsgClientToGCOverworldGetDynamicImageResponse.Image images = 2; +} + +message CMsgClientToGCOverworldMinigameAction { + optional uint32 overworld_id = 1; + optional uint32 node_id = 2; + optional .EOverworldMinigameAction action = 3 [default = k_eOverworldMinigameAction_Invalid]; + optional uint32 selection = 4; + optional uint32 option_value = 5; + optional uint32 currency_amount = 6; +} + +message CMsgClientToGCOverworldMinigameActionResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eInvalidOverworld = 5; + k_eInvalidNode = 6; + k_eNodeLocked = 7; + k_eInvalidSelection = 8; + k_eNotEnoughTokens = 9; + k_eNotEnoughMinigameCurrency = 10; + k_eNotAllowed = 11; + } + + optional .CMsgClientToGCOverworldMinigameActionResponse.EResponse response = 1 [default = k_eInternalError]; +} diff --git a/game/shared/dota/dota_gcmessages_common_survivors.proto b/game/shared/dota/dota_gcmessages_common_survivors.proto new file mode 100644 index 00000000..98292e5a --- /dev/null +++ b/game/shared/dota/dota_gcmessages_common_survivors.proto @@ -0,0 +1,48 @@ +import "steammessages.proto"; +import "dota_shared_enums.proto"; +import "dota_gcmessages_common.proto"; +import "gcsdk_gcmessages.proto"; + +message CMsgSurvivorsUserData { + message AttributeLevelsEntry { + optional int32 key = 1; + optional uint32 value = 2; + } + + repeated .CMsgSurvivorsUserData.AttributeLevelsEntry attribute_levels = 1; + optional uint32 unlocked_difficulty = 2; +} + +message CMsgClientToGCSurvivorsPowerUpTelemetryData { + optional uint32 powerup_id = 1; + optional uint32 level = 2; + optional uint32 time_received = 3; + optional uint32 time_held = 4; + optional uint64 total_damage = 5; + optional uint32 dps = 6; + optional uint32 has_scepter = 7; +} + +message CMsgClientToGCSurvivorsGameTelemetryData { + optional uint32 time_survived = 1; + optional uint32 player_level = 2; + optional uint32 game_result = 3; + optional uint32 gold_earned = 4; + repeated .CMsgClientToGCSurvivorsPowerUpTelemetryData powerups = 5; + optional uint32 difficulty = 6; + optional uint32 metaprogression_level = 7; +} + +message CMsgClientToGCSurvivorsGameTelemetryDataResponse { + enum EResponse { + k_eInternalError = 0; + k_eSuccess = 1; + k_eTooBusy = 2; + k_eDisabled = 3; + k_eTimeout = 4; + k_eNotAllowed = 5; + k_eInvalidItem = 6; + } + + optional .CMsgClientToGCSurvivorsGameTelemetryDataResponse.EResponse response = 1 [default = k_eInternalError]; +} diff --git a/game/shared/dota/dota_gcmessages_msgid.proto b/game/shared/dota/dota_gcmessages_msgid.proto new file mode 100644 index 00000000..8234e952 --- /dev/null +++ b/game/shared/dota/dota_gcmessages_msgid.proto @@ -0,0 +1,959 @@ +enum EDOTAGCMsg { + k_EMsgGCDOTABase = 7000; + k_EMsgGCGameMatchSignOut = 7004; + k_EMsgGCGameMatchSignOutResponse = 7005; + k_EMsgGCJoinChatChannel = 7009; + k_EMsgGCJoinChatChannelResponse = 7010; + k_EMsgGCOtherJoinedChannel = 7013; + k_EMsgGCOtherLeftChannel = 7014; + k_EMsgServerToGCRequestStatus = 7026; + k_EMsgGCStartFindingMatch = 7033; + k_EMsgGCConnectedPlayers = 7034; + k_EMsgGCAbandonCurrentGame = 7035; + k_EMsgGCStopFindingMatch = 7036; + k_EMsgGCPracticeLobbyCreate = 7038; + k_EMsgGCPracticeLobbyLeave = 7040; + k_EMsgGCPracticeLobbyLaunch = 7041; + k_EMsgGCPracticeLobbyList = 7042; + k_EMsgGCPracticeLobbyListResponse = 7043; + k_EMsgGCPracticeLobbyJoin = 7044; + k_EMsgGCPracticeLobbySetDetails = 7046; + k_EMsgGCPracticeLobbySetTeamSlot = 7047; + k_EMsgGCInitialQuestionnaireResponse = 7049; + k_EMsgGCPracticeLobbyResponse = 7055; + k_EMsgGCBroadcastNotification = 7056; + k_EMsgGCLiveScoreboardUpdate = 7057; + k_EMsgGCRequestChatChannelList = 7060; + k_EMsgGCRequestChatChannelListResponse = 7061; + k_EMsgGCReadyUp = 7070; + k_EMsgGCKickedFromMatchmakingQueue = 7071; + k_EMsgGCLeaverDetected = 7072; + k_EMsgGCSpectateFriendGame = 7073; + k_EMsgGCSpectateFriendGameResponse = 7074; + k_EMsgGCReportsRemainingRequest = 7076; + k_EMsgGCReportsRemainingResponse = 7077; + k_EMsgGCSubmitPlayerReport = 7078; + k_EMsgGCSubmitPlayerReportResponse = 7079; + k_EMsgGCPracticeLobbyKick = 7081; + k_EMsgGCSubmitPlayerReportV2 = 7082; + k_EMsgGCSubmitPlayerReportResponseV2 = 7083; + k_EMsgGCRequestSaveGames = 7084; + k_EMsgGCRequestSaveGamesServer = 7085; + k_EMsgGCRequestSaveGamesResponse = 7086; + k_EMsgGCLeaverDetectedResponse = 7087; + k_EMsgGCPlayerFailedToConnect = 7088; + k_EMsgGCGCToRelayConnect = 7089; + k_EMsgGCGCToRelayConnectresponse = 7090; + k_EMsgGCWatchGame = 7091; + k_EMsgGCWatchGameResponse = 7092; + k_EMsgGCBanStatusRequest = 7093; + k_EMsgGCBanStatusResponse = 7094; + k_EMsgGCMatchDetailsRequest = 7095; + k_EMsgGCMatchDetailsResponse = 7096; + k_EMsgGCCancelWatchGame = 7097; + k_EMsgGCPopup = 7102; + k_EMsgGCFriendPracticeLobbyListRequest = 7111; + k_EMsgGCFriendPracticeLobbyListResponse = 7112; + k_EMsgGCPracticeLobbyJoinResponse = 7113; + k_EMsgGCCreateTeam = 7115; + k_EMsgGCCreateTeamResponse = 7116; + k_EMsgGCTeamInvite_InviterToGC = 7122; + k_EMsgGCTeamInvite_GCImmediateResponseToInviter = 7123; + k_EMsgGCTeamInvite_GCRequestToInvitee = 7124; + k_EMsgGCTeamInvite_InviteeResponseToGC = 7125; + k_EMsgGCTeamInvite_GCResponseToInviter = 7126; + k_EMsgGCTeamInvite_GCResponseToInvitee = 7127; + k_EMsgGCKickTeamMember = 7128; + k_EMsgGCKickTeamMemberResponse = 7129; + k_EMsgGCLeaveTeam = 7130; + k_EMsgGCLeaveTeamResponse = 7131; + k_EMsgGCApplyTeamToPracticeLobby = 7142; + k_EMsgGCTransferTeamAdmin = 7144; + k_EMsgGCPracticeLobbyJoinBroadcastChannel = 7149; + k_EMsgGC_TournamentItemEvent = 7150; + k_EMsgGC_TournamentItemEventResponse = 7151; + k_EMsgTeamFanfare = 7156; + k_EMsgResponseTeamFanfare = 7157; + k_EMsgGCEditTeamDetails = 7166; + k_EMsgGCEditTeamDetailsResponse = 7167; + k_EMsgGCReadyUpStatus = 7170; + k_EMsgGCToGCMatchCompleted = 7186; + k_EMsgGCBalancedShuffleLobby = 7188; + k_EMsgGCMatchmakingStatsRequest = 7197; + k_EMsgGCMatchmakingStatsResponse = 7198; + k_EMsgGCBotGameCreate = 7199; + k_EMsgGCSetMatchHistoryAccess = 7200; + k_EMsgGCSetMatchHistoryAccessResponse = 7201; + k_EMsgUpgradeLeagueItem = 7203; + k_EMsgUpgradeLeagueItemResponse = 7204; + k_EMsgGCWatchDownloadedReplay = 7206; + k_EMsgClientsRejoinChatChannels = 7217; + k_EMsgGCToGCGetUserChatInfo = 7218; + k_EMsgGCToGCGetUserChatInfoResponse = 7219; + k_EMsgGCToGCLeaveAllChatChannels = 7220; + k_EMsgGCToGCUpdateAccountChatBan = 7221; + k_EMsgGCToGCCanInviteUserToTeam = 7234; + k_EMsgGCToGCCanInviteUserToTeamResponse = 7235; + k_EMsgGCToGCGetUserRank = 7236; + k_EMsgGCToGCGetUserRankResponse = 7237; + k_EMsgGCToGCAdjustUserRank = 7238; + k_EMsgGCToGCAdjustUserRankResponse = 7239; + k_EMsgGCToGCUpdateTeamStats = 7240; + k_EMsgGCToGCValidateTeam = 7241; + k_EMsgGCToGCValidateTeamResponse = 7242; + k_EMsgGCToGCGetLeagueAdmin = 7255; + k_EMsgGCToGCGetLeagueAdminResponse = 7256; + k_EMsgGCLeaveChatChannel = 7272; + k_EMsgGCChatMessage = 7273; + k_EMsgGCGetHeroStandings = 7274; + k_EMsgGCGetHeroStandingsResponse = 7275; + k_EMsgGCItemEditorReservationsRequest = 7283; + k_EMsgGCItemEditorReservationsResponse = 7284; + k_EMsgGCItemEditorReserveItemDef = 7285; + k_EMsgGCItemEditorReserveItemDefResponse = 7286; + k_EMsgGCItemEditorReleaseReservation = 7287; + k_EMsgGCItemEditorReleaseReservationResponse = 7288; + k_EMsgGCFantasyLivePlayerStats = 7308; + k_EMsgGCFantasyFinalPlayerStats = 7309; + k_EMsgGCFlipLobbyTeams = 7320; + k_EMsgGCToGCEvaluateReportedPlayer = 7322; + k_EMsgGCToGCEvaluateReportedPlayerResponse = 7323; + k_EMsgGCToGCProcessPlayerReportForTarget = 7324; + k_EMsgGCToGCProcessReportSuccess = 7325; + k_EMsgGCNotifyAccountFlagsChange = 7326; + k_EMsgGCSetProfilePrivacy = 7327; + k_EMsgGCSetProfilePrivacyResponse = 7328; + k_EMsgGCClientSuspended = 7342; + k_EMsgGCPartyMemberSetCoach = 7343; + k_EMsgGCPracticeLobbySetCoach = 7346; + k_EMsgGCChatModeratorBan = 7359; + k_EMsgGCLobbyUpdateBroadcastChannelInfo = 7367; + k_EMsgGCToGCGrantTournamentItem = 7372; + k_EMsgGCToGCUpgradeTwitchViewerItems = 7375; + k_EMsgGCToGCGetLiveMatchAffiliates = 7376; + k_EMsgGCToGCGetLiveMatchAffiliatesResponse = 7377; + k_EMsgGCToGCUpdatePlayerPennantCounts = 7378; + k_EMsgGCToGCGetPlayerPennantCounts = 7379; + k_EMsgGCToGCGetPlayerPennantCountsResponse = 7380; + k_EMsgGCGameMatchSignOutPermissionRequest = 7381; + k_EMsgGCGameMatchSignOutPermissionResponse = 7382; + k_EMsgDOTAAwardEventPoints = 7384; + k_EMsgDOTAGetEventPoints = 7387; + k_EMsgDOTAGetEventPointsResponse = 7388; + k_EMsgGCPartyLeaderWatchGamePrompt = 7397; + k_EMsgGCCompendiumSetSelection = 7405; + k_EMsgGCCompendiumDataRequest = 7406; + k_EMsgGCCompendiumDataResponse = 7407; + k_EMsgDOTAGetPlayerMatchHistory = 7408; + k_EMsgDOTAGetPlayerMatchHistoryResponse = 7409; + k_EMsgGCToGCMatchmakingAddParty = 7410; + k_EMsgGCToGCMatchmakingRemoveParty = 7411; + k_EMsgGCToGCMatchmakingRemoveAllParties = 7412; + k_EMsgGCToGCMatchmakingMatchFound = 7413; + k_EMsgGCToGCUpdateMatchManagementStats = 7414; + k_EMsgGCToGCUpdateMatchmakingStats = 7415; + k_EMsgGCToServerPingRequest = 7416; + k_EMsgGCToServerPingResponse = 7417; + k_EMsgGCToServerEvaluateToxicChat = 7418; + k_EMsgServerToGCEvaluateToxicChat = 7419; + k_EMsgServerToGCEvaluateToxicChatResponse = 7420; + k_EMsgGCToGCProcessMatchLeaver = 7426; + k_EMsgGCNotificationsRequest = 7427; + k_EMsgGCNotificationsResponse = 7428; + k_EMsgGCToGCModifyNotification = 7429; + k_EMsgGCLeagueAdminList = 7434; + k_EMsgGCNotificationsMarkReadRequest = 7435; + k_EMsgServerToGCRequestBatchPlayerResources = 7450; + k_EMsgServerToGCRequestBatchPlayerResourcesResponse = 7451; + k_EMsgGCCompendiumSetSelectionResponse = 7453; + k_EMsgGCPlayerInfoSubmit = 7456; + k_EMsgGCPlayerInfoSubmitResponse = 7457; + k_EMsgGCToGCGetAccountLevel = 7458; + k_EMsgGCToGCGetAccountLevelResponse = 7459; + k_EMsgDOTAGetWeekendTourneySchedule = 7464; + k_EMsgDOTAWeekendTourneySchedule = 7465; + k_EMsgGCJoinableCustomGameModesRequest = 7466; + k_EMsgGCJoinableCustomGameModesResponse = 7467; + k_EMsgGCJoinableCustomLobbiesRequest = 7468; + k_EMsgGCJoinableCustomLobbiesResponse = 7469; + k_EMsgGCQuickJoinCustomLobby = 7470; + k_EMsgGCQuickJoinCustomLobbyResponse = 7471; + k_EMsgGCToGCGrantEventPointAction = 7472; + k_EMsgGCToGCSetCompendiumSelection = 7478; + k_EMsgGCHasItemQuery = 7484; + k_EMsgGCHasItemResponse = 7485; + k_EMsgGCToGCGrantEventPointActionMsg = 7488; + k_EMsgGCToGCGetCompendiumSelections = 7492; + k_EMsgGCToGCGetCompendiumSelectionsResponse = 7493; + k_EMsgServerToGCMatchConnectionStats = 7494; + k_EMsgGCToClientTournamentItemDrop = 7495; + k_EMsgSQLDelayedGrantLeagueDrop = 7496; + k_EMsgServerGCUpdateSpectatorCount = 7497; + k_EMsgGCToGCEmoticonUnlock = 7501; + k_EMsgSignOutDraftInfo = 7502; + k_EMsgClientToGCEmoticonDataRequest = 7503; + k_EMsgGCToClientEmoticonData = 7504; + k_EMsgGCPracticeLobbyToggleBroadcastChannelCameramanStatus = 7505; + k_EMsgDOTARedeemItem = 7518; + k_EMsgDOTARedeemItemResponse = 7519; + k_EMsgClientToGCGetAllHeroProgress = 7521; + k_EMsgClientToGCGetAllHeroProgressResponse = 7522; + k_EMsgGCToGCGetServerForClient = 7523; + k_EMsgGCToGCGetServerForClientResponse = 7524; + k_EMsgSQLProcessTournamentGameOutcome = 7525; + k_EMsgSQLGrantTrophyToAccount = 7526; + k_EMsgClientToGCGetTrophyList = 7527; + k_EMsgClientToGCGetTrophyListResponse = 7528; + k_EMsgGCToClientTrophyAwarded = 7529; + k_EMsgGCGameBotMatchSignOut = 7530; + k_EMsgGCGameBotMatchSignOutPermissionRequest = 7531; + k_EMsgSignOutBotInfo = 7532; + k_EMsgGCToGCUpdateProfileCards = 7533; + k_EMsgClientToGCGetProfileCard = 7534; + k_EMsgClientToGCGetProfileCardResponse = 7535; + k_EMsgClientToGCGetBattleReport = 7536; + k_EMsgClientToGCGetBattleReportResponse = 7537; + k_EMsgClientToGCSetProfileCardSlots = 7538; + k_EMsgGCToClientProfileCardUpdated = 7539; + k_EMsgServerToGCVictoryPredictions = 7540; + k_EMsgClientToGCGetBattleReportAggregateStats = 7541; + k_EMsgClientToGCGetBattleReportAggregateStatsResponse = 7542; + k_EMsgClientToGCGetBattleReportInfo = 7543; + k_EMsgClientToGCGetBattleReportInfoResponse = 7544; + k_EMsgSignOutCommunicationSummary = 7545; + k_EMsgServerToGCRequestStatus_Response = 7546; + k_EMsgClientToGCCreateHeroStatue = 7547; + k_EMsgGCToClientHeroStatueCreateResult = 7548; + k_EMsgGCGCToLANServerRelayConnect = 7549; + k_EMsgClientToGCAcknowledgeBattleReport = 7550; + k_EMsgClientToGCAcknowledgeBattleReportResponse = 7551; + k_EMsgClientToGCGetBattleReportMatchHistory = 7552; + k_EMsgClientToGCGetBattleReportMatchHistoryResponse = 7553; + k_EMsgServerToGCReportKillSummaries = 7554; + k_EMsgGCToGCUpdatePlayerPredictions = 7561; + k_EMsgGCToServerPredictionResult = 7562; + k_EMsgGCToGCReplayMonitorValidateReplay = 7569; + k_EMsgLobbyEventPoints = 7572; + k_EMsgGCToGCGetCustomGameTickets = 7573; + k_EMsgGCToGCGetCustomGameTicketsResponse = 7574; + k_EMsgGCToGCCustomGamePlayed = 7576; + k_EMsgGCToGCGrantEventPointsToUser = 7577; + k_EMsgGameserverCrashReport = 7579; + k_EMsgGameserverCrashReportResponse = 7580; + k_EMsgGCToClientSteamDatagramTicket = 7581; + k_EMsgGCToGCSendAccountsEventPoints = 7583; + k_EMsgClientToGCRerollPlayerChallenge = 7584; + k_EMsgServerToGCRerollPlayerChallenge = 7585; + k_EMsgGCRerollPlayerChallengeResponse = 7586; + k_EMsgSignOutUpdatePlayerChallenge = 7587; + k_EMsgClientToGCSetPartyLeader = 7588; + k_EMsgClientToGCCancelPartyInvites = 7589; + k_EMsgSQLGrantLeagueMatchToTicketHolders = 7592; + k_EMsgGCToGCEmoticonUnlockNoRollback = 7594; + k_EMsgClientToGCApplyGemCombiner = 7603; + k_EMsgClientToGCGetAllHeroOrder = 7606; + k_EMsgClientToGCGetAllHeroOrderResponse = 7607; + k_EMsgSQLGCToGCGrantBadgePoints = 7608; + k_EMsgGCToGCCheckOwnsEntireEmoticonRange = 7611; + k_EMsgGCToGCCheckOwnsEntireEmoticonRangeResponse = 7612; + k_EMsgGCToClientRequestLaneSelection = 7623; + k_EMsgGCToClientRequestLaneSelectionResponse = 7624; + k_EMsgServerToGCCavernCrawlIsHeroActive = 7625; + k_EMsgServerToGCCavernCrawlIsHeroActiveResponse = 7626; + k_EMsgClientToGCPlayerCardSpecificPurchaseRequest = 7627; + k_EMsgClientToGCPlayerCardSpecificPurchaseResponse = 7628; + k_EMsgSQLSetIsLeagueAdmin = 7630; + k_EMsgGCToGCGetLiveLeagueMatches = 7631; + k_EMsgGCToGCGetLiveLeagueMatchesResponse = 7632; + k_EMsgDOTALeagueInfoListAdminsRequest = 7633; + k_EMsgDOTALeagueInfoListAdminsReponse = 7634; + k_EMsgGCToGCLeagueMatchStarted = 7645; + k_EMsgGCToGCLeagueMatchCompleted = 7646; + k_EMsgGCToGCLeagueMatchStartedResponse = 7647; + k_EMsgDOTALeagueAvailableLobbyNodesRequest = 7650; + k_EMsgDOTALeagueAvailableLobbyNodes = 7651; + k_EMsgGCToGCLeagueRequest = 7652; + k_EMsgGCToGCLeagueResponse = 7653; + k_EMsgGCToGCLeagueNodeGroupRequest = 7654; + k_EMsgGCToGCLeagueNodeGroupResponse = 7655; + k_EMsgGCToGCLeagueNodeRequest = 7656; + k_EMsgGCToGCLeagueNodeResponse = 7657; + k_EMsgGCToGCRealtimeStatsTerseRequest = 7658; + k_EMsgGCToGCRealtimeStatsTerseResponse = 7659; + k_EMsgGCToGCGetTopMatchesRequest = 7660; + k_EMsgGCToGCGetTopMatchesResponse = 7661; + k_EMsgClientToGCGetFilteredPlayers = 7662; + k_EMsgGCToClientGetFilteredPlayersResponse = 7663; + k_EMsgClientToGCRemoveFilteredPlayer = 7664; + k_EMsgGCToClientRemoveFilteredPlayerResponse = 7665; + k_EMsgGCToClientPlayerBeaconState = 7666; + k_EMsgGCToClientPartyBeaconUpdate = 7667; + k_EMsgGCToClientPartySearchInvite = 7668; + k_EMsgClientToGCUpdatePartyBeacon = 7669; + k_EMsgClientToGCRequestActiveBeaconParties = 7670; + k_EMsgGCToClientRequestActiveBeaconPartiesResponse = 7671; + k_EMsgClientToGCManageFavorites = 7672; + k_EMsgGCToClientManageFavoritesResponse = 7673; + k_EMsgClientToGCJoinPartyFromBeacon = 7674; + k_EMsgGCToClientJoinPartyFromBeaconResponse = 7675; + k_EMsgClientToGCGetFavoritePlayers = 7676; + k_EMsgGCToClientGetFavoritePlayersResponse = 7677; + k_EMsgClientToGCVerifyFavoritePlayers = 7678; + k_EMsgGCToClientVerifyFavoritePlayersResponse = 7679; + k_EMsgGCToClientPartySearchInvites = 7680; + k_EMsgGCToClientRequestMMInfo = 7681; + k_EMsgClientToGCMMInfo = 7682; + k_EMsgSignOutTextMuteInfo = 7683; + k_EMsgClientToGCPurchaseLabyrinthBlessings = 7684; + k_EMsgClientToGCPurchaseLabyrinthBlessingsResponse = 7685; + k_EMsgClientToGCPurchaseFilteredPlayerSlot = 7686; + k_EMsgGCToClientPurchaseFilteredPlayerSlotResponse = 7687; + k_EMsgClientToGCUpdateFilteredPlayerNote = 7688; + k_EMsgGCToClientUpdateFilteredPlayerNoteResponse = 7689; + k_EMsgClientToGCClaimSwag = 7690; + k_EMsgGCToClientClaimSwagResponse = 7691; + k_EMsgServerToGCLockCharmTrading = 8004; + k_EMsgClientToGCPlayerStatsRequest = 8006; + k_EMsgGCToClientPlayerStatsResponse = 8007; + k_EMsgGCClearPracticeLobbyTeam = 8008; + k_EMsgClientToGCFindTopSourceTVGames = 8009; + k_EMsgGCToClientFindTopSourceTVGamesResponse = 8010; + k_EMsgGCLobbyList = 8011; + k_EMsgGCLobbyListResponse = 8012; + k_EMsgGCPlayerStatsMatchSignOut = 8013; + k_EMsgClientToGCSocialFeedPostCommentRequest = 8016; + k_EMsgGCToClientSocialFeedPostCommentResponse = 8017; + k_EMsgClientToGCCustomGamesFriendsPlayedRequest = 8018; + k_EMsgGCToClientCustomGamesFriendsPlayedResponse = 8019; + k_EMsgClientToGCFriendsPlayedCustomGameRequest = 8020; + k_EMsgGCToClientFriendsPlayedCustomGameResponse = 8021; + k_EMsgGCTopCustomGamesList = 8024; + k_EMsgClientToGCSetPartyOpen = 8029; + k_EMsgClientToGCMergePartyInvite = 8030; + k_EMsgGCToClientMergeGroupInviteReply = 8031; + k_EMsgClientToGCMergePartyResponse = 8032; + k_EMsgGCToClientMergePartyResponseReply = 8033; + k_EMsgClientToGCGetProfileCardStats = 8034; + k_EMsgClientToGCGetProfileCardStatsResponse = 8035; + k_EMsgClientToGCTopLeagueMatchesRequest = 8036; + k_EMsgClientToGCTopFriendMatchesRequest = 8037; + k_EMsgGCToClientProfileCardStatsUpdated = 8040; + k_EMsgServerToGCRealtimeStats = 8041; + k_EMsgGCToServerRealtimeStatsStartStop = 8042; + k_EMsgGCToGCGetServersForClients = 8045; + k_EMsgGCToGCGetServersForClientsResponse = 8046; + k_EMsgGCPracticeLobbyKickFromTeam = 8047; + k_EMsgDOTAChatGetMemberCount = 8048; + k_EMsgDOTAChatGetMemberCountResponse = 8049; + k_EMsgClientToGCSocialFeedPostMessageRequest = 8050; + k_EMsgGCToClientSocialFeedPostMessageResponse = 8051; + k_EMsgCustomGameListenServerStartedLoading = 8052; + k_EMsgCustomGameClientFinishedLoading = 8053; + k_EMsgGCPracticeLobbyCloseBroadcastChannel = 8054; + k_EMsgGCStartFindingMatchResponse = 8055; + k_EMsgSQLGCToGCGrantAccountFlag = 8057; + k_EMsgGCToClientTopLeagueMatchesResponse = 8061; + k_EMsgGCToClientTopFriendMatchesResponse = 8062; + k_EMsgClientToGCMatchesMinimalRequest = 8063; + k_EMsgClientToGCMatchesMinimalResponse = 8064; + k_EMsgGCToClientChatRegionsEnabled = 8067; + k_EMsgClientToGCPingData = 8068; + k_EMsgGCToGCEnsureAccountInParty = 8071; + k_EMsgGCToGCEnsureAccountInPartyResponse = 8072; + k_EMsgClientToGCGetProfileTickets = 8073; + k_EMsgClientToGCGetProfileTicketsResponse = 8074; + k_EMsgGCToClientMatchGroupsVersion = 8075; + k_EMsgClientToGCH264Unsupported = 8076; + k_EMsgClientToGCGetQuestProgress = 8078; + k_EMsgClientToGCGetQuestProgressResponse = 8079; + k_EMsgSignOutXPCoins = 8080; + k_EMsgGCToClientMatchSignedOut = 8081; + k_EMsgGCGetHeroStatsHistory = 8082; + k_EMsgGCGetHeroStatsHistoryResponse = 8083; + k_EMsgClientToGCPrivateChatInvite = 8084; + k_EMsgClientToGCPrivateChatKick = 8088; + k_EMsgClientToGCPrivateChatPromote = 8089; + k_EMsgClientToGCPrivateChatDemote = 8090; + k_EMsgGCToClientPrivateChatResponse = 8091; + k_EMsgClientToGCLatestConductScorecardRequest = 8095; + k_EMsgClientToGCLatestConductScorecard = 8096; + k_EMsgClientToGCWageringRequest = 8099; + k_EMsgGCToClientWageringResponse = 8100; + k_EMsgClientToGCEventGoalsRequest = 8103; + k_EMsgClientToGCEventGoalsResponse = 8104; + k_EMsgGCToGCLeaguePredictionsUpdate = 8108; + k_EMsgGCToGCAddUserToPostGameChat = 8110; + k_EMsgClientToGCHasPlayerVotedForMVP = 8111; + k_EMsgClientToGCHasPlayerVotedForMVPResponse = 8112; + k_EMsgClientToGCVoteForMVP = 8113; + k_EMsgClientToGCVoteForMVPResponse = 8114; + k_EMsgGCToGCGetEventParticipation = 8115; + k_EMsgGCToGCGetEventParticipationResponse = 8116; + k_EMsgGCToClientAutomatedTournamentStateChange = 8117; + k_EMsgClientToGCWeekendTourneyOpts = 8118; + k_EMsgClientToGCWeekendTourneyOptsResponse = 8119; + k_EMsgClientToGCWeekendTourneyLeave = 8120; + k_EMsgClientToGCWeekendTourneyLeaveResponse = 8121; + k_EMsgClientToGCTeammateStatsRequest = 8124; + k_EMsgClientToGCTeammateStatsResponse = 8125; + k_EMsgClientToGCGetGiftPermissions = 8126; + k_EMsgClientToGCGetGiftPermissionsResponse = 8127; + k_EMsgClientToGCVoteForArcana = 8128; + k_EMsgClientToGCVoteForArcanaResponse = 8129; + k_EMsgClientToGCRequestArcanaVotesRemaining = 8130; + k_EMsgClientToGCRequestArcanaVotesRemainingResponse = 8131; + k_EMsgGCTransferTeamAdminResponse = 8132; + k_EMsgGCToClientTeamInfo = 8135; + k_EMsgGCToClientTeamsInfo = 8136; + k_EMsgClientToGCMyTeamInfoRequest = 8137; + k_EMsgClientToGCPublishUserStat = 8140; + k_EMsgGCToGCSignoutSpendWager = 8141; + k_EMsgGCSubmitLobbyMVPVote = 8144; + k_EMsgGCSubmitLobbyMVPVoteResponse = 8145; + k_EMsgSignOutCommunityGoalProgress = 8150; + k_EMsgGCToClientLobbyMVPAwarded = 8152; + k_EMsgGCToClientQuestProgressUpdated = 8153; + k_EMsgGCToClientWageringUpdate = 8154; + k_EMsgGCToClientArcanaVotesUpdate = 8155; + k_EMsgClientToGCSetSpectatorLobbyDetails = 8157; + k_EMsgClientToGCSetSpectatorLobbyDetailsResponse = 8158; + k_EMsgClientToGCCreateSpectatorLobby = 8159; + k_EMsgClientToGCCreateSpectatorLobbyResponse = 8160; + k_EMsgClientToGCSpectatorLobbyList = 8161; + k_EMsgClientToGCSpectatorLobbyListResponse = 8162; + k_EMsgSpectatorLobbyGameDetails = 8163; + k_EMsgServerToGCCompendiumInGamePredictionResults = 8166; + k_EMsgServerToGCCloseCompendiumInGamePredictionVoting = 8167; + k_EMsgClientToGCOpenPlayerCardPack = 8168; + k_EMsgClientToGCOpenPlayerCardPackResponse = 8169; + k_EMsgClientToGCSelectCompendiumInGamePrediction = 8170; + k_EMsgClientToGCSelectCompendiumInGamePredictionResponse = 8171; + k_EMsgClientToGCWeekendTourneyGetPlayerStats = 8172; + k_EMsgClientToGCWeekendTourneyGetPlayerStatsResponse = 8173; + k_EMsgClientToGCRecyclePlayerCard = 8174; + k_EMsgClientToGCRecyclePlayerCardResponse = 8175; + k_EMsgClientToGCCreatePlayerCardPack = 8176; + k_EMsgClientToGCCreatePlayerCardPackResponse = 8177; + k_EMsgClientToGCGetPlayerCardRosterRequest = 8178; + k_EMsgClientToGCGetPlayerCardRosterResponse = 8179; + k_EMsgClientToGCSetPlayerCardRosterRequest = 8180; + k_EMsgClientToGCSetPlayerCardRosterResponse = 8181; + k_EMsgServerToGCCloseCompendiumInGamePredictionVotingResponse = 8183; + k_EMsgLobbyBattleCupVictory = 8186; + k_EMsgGCGetPlayerCardItemInfo = 8187; + k_EMsgGCGetPlayerCardItemInfoResponse = 8188; + k_EMsgClientToGCRequestSteamDatagramTicket = 8189; + k_EMsgClientToGCRequestSteamDatagramTicketResponse = 8190; + k_EMsgGCToClientBattlePassRollupRequest = 8191; + k_EMsgGCToClientBattlePassRollupResponse = 8192; + k_EMsgClientToGCTransferSeasonalMMRRequest = 8193; + k_EMsgClientToGCTransferSeasonalMMRResponse = 8194; + k_EMsgGCToGCPublicChatCommunicationBan = 8195; + k_EMsgGCToGCUpdateAccountInfo = 8196; + k_EMsgGCChatReportPublicSpam = 8197; + k_EMsgClientToGCSetPartyBuilderOptions = 8198; + k_EMsgClientToGCSetPartyBuilderOptionsResponse = 8199; + k_EMsgGCToClientPlaytestStatus = 8200; + k_EMsgClientToGCJoinPlaytest = 8201; + k_EMsgClientToGCJoinPlaytestResponse = 8202; + k_EMsgLobbyPlaytestDetails = 8203; + k_EMsgDOTASetFavoriteTeam = 8204; + k_EMsgGCToClientBattlePassRollupListRequest = 8205; + k_EMsgGCToClientBattlePassRollupListResponse = 8206; + k_EMsgDOTAClaimEventAction = 8209; + k_EMsgDOTAClaimEventActionResponse = 8210; + k_EMsgDOTAGetPeriodicResource = 8211; + k_EMsgDOTAGetPeriodicResourceResponse = 8212; + k_EMsgDOTAPeriodicResourceUpdated = 8213; + k_EMsgServerToGCSpendWager = 8214; + k_EMsgGCToGCSignoutSpendWagerToken = 8215; + k_EMsgSubmitTriviaQuestionAnswer = 8216; + k_EMsgSubmitTriviaQuestionAnswerResponse = 8217; + k_EMsgClientToGCGiveTip = 8218; + k_EMsgClientToGCGiveTipResponse = 8219; + k_EMsgStartTriviaSession = 8220; + k_EMsgStartTriviaSessionResponse = 8221; + k_EMsgAnchorPhoneNumberRequest = 8222; + k_EMsgAnchorPhoneNumberResponse = 8223; + k_EMsgUnanchorPhoneNumberRequest = 8224; + k_EMsgUnanchorPhoneNumberResponse = 8225; + k_EMsgGCToGCSignoutSpendRankWager = 8229; + k_EMsgGCToGCGetFavoriteTeam = 8230; + k_EMsgGCToGCGetFavoriteTeamResponse = 8231; + k_EMsgSignOutEventGameData = 8232; + k_EMsgClientToGCQuickStatsRequest = 8238; + k_EMsgClientToGCQuickStatsResponse = 8239; + k_EMsgGCToGCSubtractEventPointsFromUser = 8240; + k_EMsgSelectionPriorityChoiceRequest = 8241; + k_EMsgSelectionPriorityChoiceResponse = 8242; + k_EMsgGCToGCCompendiumInGamePredictionResults = 8243; + k_EMsgGameAutographReward = 8244; + k_EMsgGameAutographRewardResponse = 8245; + k_EMsgDestroyLobbyRequest = 8246; + k_EMsgDestroyLobbyResponse = 8247; + k_EMsgPurchaseItemWithEventPoints = 8248; + k_EMsgPurchaseItemWithEventPointsResponse = 8249; + k_EMsgServerToGCMatchPlayerItemPurchaseHistory = 8250; + k_EMsgGCToGCGrantPlusHeroMatchResults = 8251; + k_EMsgServerToGCMatchStateHistory = 8255; + k_EMsgPurchaseHeroRandomRelic = 8258; + k_EMsgPurchaseHeroRandomRelicResponse = 8259; + k_EMsgClientToGCClaimEventActionUsingItem = 8260; + k_EMsgClientToGCClaimEventActionUsingItemResponse = 8261; + k_EMsgPartyReadyCheckRequest = 8262; + k_EMsgPartyReadyCheckResponse = 8263; + k_EMsgPartyReadyCheckAcknowledge = 8264; + k_EMsgGetRecentPlayTimeFriendsRequest = 8265; + k_EMsgGetRecentPlayTimeFriendsResponse = 8266; + k_EMsgGCToClientCommendNotification = 8267; + k_EMsgProfileRequest = 8268; + k_EMsgProfileResponse = 8269; + k_EMsgProfileUpdate = 8270; + k_EMsgProfileUpdateResponse = 8271; + k_EMsgHeroGlobalDataRequest = 8274; + k_EMsgHeroGlobalDataResponse = 8275; + k_EMsgClientToGCRequestPlusWeeklyChallengeResult = 8276; + k_EMsgClientToGCRequestPlusWeeklyChallengeResultResponse = 8277; + k_EMsgGCToGCGrantPlusPrepaidTime = 8278; + k_EMsgPrivateMetadataKeyRequest = 8279; + k_EMsgPrivateMetadataKeyResponse = 8280; + k_EMsgGCToGCReconcilePlusStatus = 8281; + k_EMsgGCToGCCheckPlusStatus = 8282; + k_EMsgGCToGCCheckPlusStatusResponse = 8283; + k_EMsgGCToGCReconcilePlusAutoGrantItems = 8284; + k_EMsgGCToGCReconcilePlusStatusUnreliable = 8285; + k_EMsgGCToClientCavernCrawlMapPathCompleted = 8288; + k_EMsgClientToGCCavernCrawlClaimRoom = 8289; + k_EMsgClientToGCCavernCrawlClaimRoomResponse = 8290; + k_EMsgClientToGCCavernCrawlUseItemOnRoom = 8291; + k_EMsgClientToGCCavernCrawlUseItemOnRoomResponse = 8292; + k_EMsgClientToGCCavernCrawlUseItemOnPath = 8293; + k_EMsgClientToGCCavernCrawlUseItemOnPathResponse = 8294; + k_EMsgClientToGCCavernCrawlRequestMapState = 8295; + k_EMsgClientToGCCavernCrawlRequestMapStateResponse = 8296; + k_EMsgSignOutTips = 8297; + k_EMsgClientToGCRequestEventPointLogV2 = 8298; + k_EMsgClientToGCRequestEventPointLogResponseV2 = 8299; + k_EMsgClientToGCRequestEventTipsSummary = 8300; + k_EMsgClientToGCRequestEventTipsSummaryResponse = 8301; + k_EMsgClientToGCRequestSocialFeed = 8303; + k_EMsgClientToGCRequestSocialFeedResponse = 8304; + k_EMsgClientToGCRequestSocialFeedComments = 8305; + k_EMsgClientToGCRequestSocialFeedCommentsResponse = 8306; + k_EMsgClientToGCCavernCrawlGetClaimedRoomCount = 8308; + k_EMsgClientToGCCavernCrawlGetClaimedRoomCountResponse = 8309; + k_EMsgGCToGCReconcilePlusAutoGrantItemsUnreliable = 8310; + k_EMsgServerToGCAddBroadcastTimelineEvent = 8311; + k_EMsgGCToServerUpdateSteamBroadcasting = 8312; + k_EMsgClientToGCRecordContestVote = 8313; + k_EMsgGCToClientRecordContestVoteResponse = 8314; + k_EMsgGCToGCGrantAutograph = 8315; + k_EMsgGCToGCGrantAutographResponse = 8316; + k_EMsgSignOutConsumableUsage = 8317; + k_EMsgLobbyEventGameDetails = 8318; + k_EMsgDevGrantEventPoints = 8319; + k_EMsgDevGrantEventPointsResponse = 8320; + k_EMsgDevGrantEventAction = 8321; + k_EMsgDevGrantEventActionResponse = 8322; + k_EMsgDevResetEventState = 8323; + k_EMsgDevResetEventStateResponse = 8324; + k_EMsgGCToGCReconcileEventOwnership = 8325; + k_EMsgConsumeEventSupportGrantItem = 8326; + k_EMsgConsumeEventSupportGrantItemResponse = 8327; + k_EMsgGCToClientClaimEventActionUsingItemCompleted = 8328; + k_EMsgGCToClientCavernCrawlMapUpdated = 8329; + k_EMsgServerToGCRequestPlayerRecentAccomplishments = 8330; + k_EMsgServerToGCRequestPlayerRecentAccomplishmentsResponse = 8331; + k_EMsgClientToGCRequestPlayerRecentAccomplishments = 8332; + k_EMsgClientToGCRequestPlayerRecentAccomplishmentsResponse = 8333; + k_EMsgClientToGCRequestPlayerHeroRecentAccomplishments = 8334; + k_EMsgClientToGCRequestPlayerHeroRecentAccomplishmentsResponse = 8335; + k_EMsgSignOutEventActionGrants = 8336; + k_EMsgClientToGCRequestPlayerCoachMatches = 8337; + k_EMsgClientToGCRequestPlayerCoachMatchesResponse = 8338; + k_EMsgClientToGCSubmitCoachTeammateRating = 8341; + k_EMsgClientToGCSubmitCoachTeammateRatingResponse = 8342; + k_EMsgGCToClientCoachTeammateRatingsChanged = 8343; + k_EMsgClientToGCRequestPlayerCoachMatch = 8345; + k_EMsgClientToGCRequestPlayerCoachMatchResponse = 8346; + k_EMsgClientToGCRequestContestVotes = 8347; + k_EMsgClientToGCRequestContestVotesResponse = 8348; + k_EMsgClientToGCMVPVoteTimeout = 8349; + k_EMsgClientToGCMVPVoteTimeoutResponse = 8350; + k_EMsgMatchMatchmakingStats = 8360; + k_EMsgClientToGCSubmitPlayerMatchSurvey = 8361; + k_EMsgClientToGCSubmitPlayerMatchSurveyResponse = 8362; + k_EMsgSQLGCToGCGrantAllHeroProgressAccount = 8363; + k_EMsgSQLGCToGCGrantAllHeroProgressVictory = 8364; + k_EMsgDevDeleteEventActions = 8365; + k_EMsgDevDeleteEventActionsResponse = 8366; + k_EMsgGCToGCGetAllHeroCurrent = 8635; + k_EMsgGCToGCGetAllHeroCurrentResponse = 8636; + k_EMsgGCSubmitPlayerAvoidRequest = 8637; + k_EMsgGCSubmitPlayerAvoidRequestResponse = 8638; + k_EMsgGCToClientNotificationsUpdated = 8639; + k_EMsgGCtoGCAssociatedExploiterAccountInfo = 8640; + k_EMsgGCtoGCAssociatedExploiterAccountInfoResponse = 8641; + k_EMsgGCtoGCRequestRecalibrationCheck = 8642; + k_EMsgGCToClientVACReminder = 8643; + k_EMsgClientToGCUnderDraftBuy = 8644; + k_EMsgClientToGCUnderDraftBuyResponse = 8645; + k_EMsgClientToGCUnderDraftReroll = 8646; + k_EMsgClientToGCUnderDraftRerollResponse = 8647; + k_EMsgNeutralItemStats = 8648; + k_EMsgClientToGCCreateGuild = 8649; + k_EMsgClientToGCCreateGuildResponse = 8650; + k_EMsgClientToGCSetGuildInfo = 8651; + k_EMsgClientToGCSetGuildInfoResponse = 8652; + k_EMsgClientToGCAddGuildRole = 8653; + k_EMsgClientToGCAddGuildRoleResponse = 8654; + k_EMsgClientToGCModifyGuildRole = 8655; + k_EMsgClientToGCModifyGuildRoleResponse = 8656; + k_EMsgClientToGCRemoveGuildRole = 8657; + k_EMsgClientToGCRemoveGuildRoleResponse = 8658; + k_EMsgClientToGCJoinGuild = 8659; + k_EMsgClientToGCJoinGuildResponse = 8660; + k_EMsgClientToGCLeaveGuild = 8661; + k_EMsgClientToGCLeaveGuildResponse = 8662; + k_EMsgClientToGCInviteToGuild = 8663; + k_EMsgClientToGCInviteToGuildResponse = 8664; + k_EMsgClientToGCDeclineInviteToGuild = 8665; + k_EMsgClientToGCDeclineInviteToGuildResponse = 8666; + k_EMsgClientToGCCancelInviteToGuild = 8667; + k_EMsgClientToGCCancelInviteToGuildResponse = 8668; + k_EMsgClientToGCKickGuildMember = 8669; + k_EMsgClientToGCKickGuildMemberResponse = 8670; + k_EMsgClientToGCSetGuildMemberRole = 8671; + k_EMsgClientToGCSetGuildMemberRoleResponse = 8672; + k_EMsgClientToGCRequestGuildData = 8673; + k_EMsgClientToGCRequestGuildDataResponse = 8674; + k_EMsgGCToClientGuildDataUpdated = 8675; + k_EMsgClientToGCRequestGuildMembership = 8676; + k_EMsgClientToGCRequestGuildMembershipResponse = 8677; + k_EMsgGCToClientGuildMembershipUpdated = 8678; + k_EMsgClientToGCAcceptInviteToGuild = 8681; + k_EMsgClientToGCAcceptInviteToGuildResponse = 8682; + k_EMsgClientToGCSetGuildRoleOrder = 8683; + k_EMsgClientToGCSetGuildRoleOrderResponse = 8684; + k_EMsgClientToGCRequestGuildFeed = 8685; + k_EMsgClientToGCRequestGuildFeedResponse = 8686; + k_EMsgClientToGCRequestAccountGuildEventData = 8687; + k_EMsgClientToGCRequestAccountGuildEventDataResponse = 8688; + k_EMsgGCToClientAccountGuildEventDataUpdated = 8689; + k_EMsgClientToGCRequestActiveGuildContracts = 8690; + k_EMsgClientToGCRequestActiveGuildContractsResponse = 8691; + k_EMsgGCToClientActiveGuildContractsUpdated = 8692; + k_EMsgGCToClientGuildFeedUpdated = 8693; + k_EMsgClientToGCSelectGuildContract = 8694; + k_EMsgClientToGCSelectGuildContractResponse = 8695; + k_EMsgGCToGCCompleteGuildContracts = 8696; + k_EMsgClientToGCAddPlayerToGuildChat = 8698; + k_EMsgClientToGCAddPlayerToGuildChatResponse = 8699; + k_EMsgClientToGCUnderDraftSell = 8700; + k_EMsgClientToGCUnderDraftSellResponse = 8701; + k_EMsgClientToGCUnderDraftRequest = 8702; + k_EMsgClientToGCUnderDraftResponse = 8703; + k_EMsgClientToGCUnderDraftRedeemReward = 8704; + k_EMsgClientToGCUnderDraftRedeemRewardResponse = 8705; + k_EMsgGCToServerLobbyHeroBanRates = 8708; + k_EMsgSignOutGuildContractProgress = 8711; + k_EMsgSignOutMVPStats = 8712; + k_EMsgClientToGCRequestActiveGuildChallenge = 8713; + k_EMsgClientToGCRequestActiveGuildChallengeResponse = 8714; + k_EMsgGCToClientActiveGuildChallengeUpdated = 8715; + k_EMsgClientToGCRequestReporterUpdates = 8716; + k_EMsgClientToGCRequestReporterUpdatesResponse = 8717; + k_EMsgClientToGCAcknowledgeReporterUpdates = 8718; + k_EMsgSignOutGuildChallengeProgress = 8720; + k_EMsgClientToGCRequestGuildEventMembers = 8721; + k_EMsgClientToGCRequestGuildEventMembersResponse = 8722; + k_EMsgClientToGCReportGuildContent = 8725; + k_EMsgClientToGCReportGuildContentResponse = 8726; + k_EMsgClientToGCRequestAccountGuildPersonaInfo = 8727; + k_EMsgClientToGCRequestAccountGuildPersonaInfoResponse = 8728; + k_EMsgClientToGCRequestAccountGuildPersonaInfoBatch = 8729; + k_EMsgClientToGCRequestAccountGuildPersonaInfoBatchResponse = 8730; + k_EMsgGCToClientUnderDraftGoldUpdated = 8731; + k_EMsgGCToServerRecordTrainingData = 8732; + k_EMsgSignOutBounties = 8733; + k_EMsgLobbyFeaturedGamemodeProgress = 8734; + k_EMsgLobbyGauntletProgress = 8735; + k_EMsgClientToGCSubmitDraftTriviaMatchAnswer = 8736; + k_EMsgClientToGCSubmitDraftTriviaMatchAnswerResponse = 8737; + k_EMsgGCToGCSignoutSpendBounty = 8738; + k_EMsgClientToGCApplyGauntletTicket = 8739; + k_EMsgClientToGCUnderDraftRollBackBench = 8740; + k_EMsgClientToGCUnderDraftRollBackBenchResponse = 8741; + k_EMsgGCToGCGetEventActionScore = 8742; + k_EMsgGCToGCGetEventActionScoreResponse = 8743; + k_EMsgServerToGCGetGuildContracts = 8744; + k_EMsgServerToGCGetGuildContractsResponse = 8745; + k_EMsgLobbyEventGameData = 8746; + k_EMsgGCToClientGuildMembersDataUpdated = 8747; + k_EMsgSignOutReportActivityMarkers = 8748; + k_EMsgSignOutDiretideCandy = 8749; + k_EMsgGCToClientPostGameItemAwardNotification = 8750; + k_EMsgClientToGCGetOWMatchDetails = 8751; + k_EMsgClientToGCGetOWMatchDetailsResponse = 8752; + k_EMsgClientToGCSubmitOWConviction = 8753; + k_EMsgClientToGCSubmitOWConvictionResponse = 8754; + k_EMsgGCToGCGetAccountSteamChina = 8755; + k_EMsgGCToGCGetAccountSteamChinaResponse = 8756; + k_EMsgClientToGCClaimLeaderboardRewards = 8757; + k_EMsgClientToGCClaimLeaderboardRewardsResponse = 8758; + k_EMsgClientToGCRecalibrateMMR = 8759; + k_EMsgClientToGCRecalibrateMMRResponse = 8760; + k_EMsgGCToGCGrantEventPointActionList = 8761; + k_EMsgClientToGCChinaSSAURLRequest = 8764; + k_EMsgClientToGCChinaSSAURLResponse = 8765; + k_EMsgClientToGCChinaSSAAcceptedRequest = 8766; + k_EMsgClientToGCChinaSSAAcceptedResponse = 8767; + k_EMsgSignOutOverwatchSuspicion = 8768; + k_EMsgServerToGCGetSuspicionConfig = 8769; + k_EMsgServerToGCGetSuspicionConfigResponse = 8770; + k_EMsgGCToGCGrantPlusHeroChallengeMatchResults = 8771; + k_EMsgGCToClientOverwatchCasesAvailable = 8772; + k_EMsgServerToGCAccountCheck = 8773; + k_EMsgClientToGCStartWatchingOverwatch = 8774; + k_EMsgClientToGCStopWatchingOverwatch = 8775; + k_EMsgSignOutPerfData = 8776; + k_EMsgClientToGCGetDPCFavorites = 8777; + k_EMsgClientToGCGetDPCFavoritesResponse = 8778; + k_EMsgClientToGCSetDPCFavoriteState = 8779; + k_EMsgClientToGCSetDPCFavoriteStateResponse = 8780; + k_EMsgClientToGCOverwatchReplayError = 8781; + k_EMsgServerToGCPlayerChallengeHistory = 8782; + k_EMsgSignOutBanData = 8783; + k_EMsgWebapiDPCSeasonResults = 8784; + k_EMsgClientToGCCoachFriend = 8785; + k_EMsgClientToGCCoachFriendResponse = 8786; + k_EMsgClientToGCRequestPrivateCoachingSession = 8787; + k_EMsgClientToGCRequestPrivateCoachingSessionResponse = 8788; + k_EMsgClientToGCAcceptPrivateCoachingSession = 8789; + k_EMsgClientToGCAcceptPrivateCoachingSessionResponse = 8790; + k_EMsgClientToGCLeavePrivateCoachingSession = 8791; + k_EMsgClientToGCLeavePrivateCoachingSessionResponse = 8792; + k_EMsgClientToGCGetCurrentPrivateCoachingSession = 8793; + k_EMsgClientToGCGetCurrentPrivateCoachingSessionResponse = 8794; + k_EMsgGCToClientPrivateCoachingSessionUpdated = 8795; + k_EMsgClientToGCSubmitPrivateCoachingSessionRating = 8796; + k_EMsgClientToGCSubmitPrivateCoachingSessionRatingResponse = 8797; + k_EMsgClientToGCGetAvailablePrivateCoachingSessions = 8798; + k_EMsgClientToGCGetAvailablePrivateCoachingSessionsResponse = 8799; + k_EMsgClientToGCGetAvailablePrivateCoachingSessionsSummary = 8800; + k_EMsgClientToGCGetAvailablePrivateCoachingSessionsSummaryResponse = 8801; + k_EMsgClientToGCJoinPrivateCoachingSessionLobby = 8802; + k_EMsgClientToGCJoinPrivateCoachingSessionLobbyResponse = 8803; + k_EMsgClientToGCRespondToCoachFriendRequest = 8804; + k_EMsgClientToGCRespondToCoachFriendRequestResponse = 8805; + k_EMsgClientToGCSetEventActiveSeasonID = 8806; + k_EMsgClientToGCSetEventActiveSeasonIDResponse = 8807; + k_EMsgServerToGCMatchPlayerNeutralItemEquipHistory = 8808; + k_EMsgServerToGCCompendiumChosenInGamePredictions = 8809; + k_EMsgClientToGCCreateTeamPlayerCardPack = 8810; + k_EMsgClientToGCCreateTeamPlayerCardPackResponse = 8811; + k_EMsgGCToServerSubmitCheerData = 8812; + k_EMsgGCToServerCheerConfig = 8813; + k_EMsgServerToGCGetCheerConfig = 8814; + k_EMsgServerToGCGetCheerConfigResponse = 8815; + k_EMsgGCToGCGrantAutographByID = 8816; + k_EMsgGCToServerCheerScalesOverride = 8817; + k_EMsgGCToServerGetCheerState = 8818; + k_EMsgServerToGCReportCheerState = 8819; + k_EMsgGCToServerScenarioSave = 8820; + k_EMsgGCToServerAbilityDraftLobbyData = 8821; + k_EMsgSignOutReportCommunications = 8822; + k_EMsgClientToGCBatchGetPlayerCardRosterRequest = 8823; + k_EMsgClientToGCBatchGetPlayerCardRosterResponse = 8824; + k_EMsgClientToGCGetStickerbookRequest = 8825; + k_EMsgClientToGCGetStickerbookResponse = 8826; + k_EMsgClientToGCCreateStickerbookPageRequest = 8827; + k_EMsgClientToGCCreateStickerbookPageResponse = 8828; + k_EMsgClientToGCDeleteStickerbookPageRequest = 8829; + k_EMsgClientToGCDeleteStickerbookPageResponse = 8830; + k_EMsgClientToGCPlaceStickersRequest = 8831; + k_EMsgClientToGCPlaceStickersResponse = 8832; + k_EMsgClientToGCPlaceCollectionStickersRequest = 8833; + k_EMsgClientToGCPlaceCollectionStickersResponse = 8834; + k_EMsgClientToGCOrderStickerbookTeamPageRequest = 8835; + k_EMsgClientToGCOrderStickerbookTeamPageResponse = 8836; + k_EMsgServerToGCGetStickerHeroes = 8837; + k_EMsgServerToGCGetStickerHeroesResponse = 8838; + k_EMsgClientToGCCandyShopGetUserData = 8840; + k_EMsgClientToGCCandyShopGetUserDataResponse = 8841; + k_EMsgGCToClientCandyShopUserDataUpdated = 8842; + k_EMsgClientToGCCandyShopPurchaseReward = 8843; + k_EMsgClientToGCCandyShopPurchaseRewardResponse = 8844; + k_EMsgClientToGCCandyShopDoExchange = 8845; + k_EMsgClientToGCCandyShopDoExchangeResponse = 8846; + k_EMsgClientToGCCandyShopDoVariableExchange = 8847; + k_EMsgClientToGCCandyShopDoVariableExchangeResponse = 8848; + k_EMsgClientToGCCandyShopRerollRewards = 8849; + k_EMsgClientToGCCandyShopRerollRewardsResponse = 8850; + k_EMsgClientToGCSetHeroSticker = 8851; + k_EMsgClientToGCSetHeroStickerResponse = 8852; + k_EMsgClientToGCGetHeroStickers = 8853; + k_EMsgClientToGCGetHeroStickersResponse = 8854; + k_EMsgClientToGCSetFavoritePage = 8855; + k_EMsgClientToGCSetFavoritePageResponse = 8856; + k_EMsgClientToGCCandyShopDevGrantCandy = 8857; + k_EMsgClientToGCCandyShopDevGrantCandyResponse = 8858; + k_EMsgClientToGCCandyShopDevClearInventory = 8859; + k_EMsgClientToGCCandyShopDevClearInventoryResponse = 8860; + k_EMsgClientToGCCandyShopOpenBags = 8861; + k_EMsgClientToGCCandyShopOpenBagsResponse = 8862; + k_EMsgClientToGCCandyShopDevGrantCandyBags = 8863; + k_EMsgClientToGCCandyShopDevGrantCandyBagsResponse = 8864; + k_EMsgClientToGCCandyShopDevShuffleExchange = 8865; + k_EMsgClientToGCCandyShopDevShuffleExchangeResponse = 8866; + k_EMsgClientToGCCandyShopDevGrantRerollCharges = 8867; + k_EMsgClientToGCCandyShopDevGrantRerollChargesResponse = 8868; + k_EMsgLobbyAdditionalAccountData = 8869; + k_EMsgServerToGCLobbyInitialized = 8870; + k_EMsgClientToGCCollectorsCacheAvailableDataRequest = 8871; + k_EMsgGCToClientCollectorsCacheAvailableDataResponse = 8872; + k_EMsgClientToGCUploadMatchClip = 8873; + k_EMsgGCToClientUploadMatchClipResponse = 8874; + k_EMsgSignOutMuertaMinigame = 8877; + k_EMsgGCToServerLobbyHeroRoleStats = 8878; + k_EMsgClientToGCRankRequest = 8879; + k_EMsgGCToClientRankResponse = 8880; + k_EMsgGCToClientRankUpdate = 8881; + k_EMsgSignOutMapStats = 8882; + k_EMsgClientToGCMapStatsRequest = 8883; + k_EMsgGCToClientMapStatsResponse = 8884; + k_EMsgClientToGCShowcaseGetUserData = 8886; + k_EMsgClientToGCShowcaseGetUserDataResponse = 8887; + k_EMsgClientToGCShowcaseSetUserData = 8888; + k_EMsgClientToGCShowcaseSetUserDataResponse = 8889; + k_EMsgClientToGCFantasyCraftingGetData = 8890; + k_EMsgClientToGCFantasyCraftingGetDataResponse = 8891; + k_EMsgClientToGCFantasyCraftingPerformOperation = 8892; + k_EMsgClientToGCFantasyCraftingPerformOperationResponse = 8893; + k_EMsgGCToClientFantasyCraftingGetDataUpdated = 8894; + k_EMsgClientToGCFantasyCraftingDevModifyTablet = 8895; + k_EMsgClientToGCFantasyCraftingDevModifyTabletResponse = 8896; + k_EMsgClientToGCRoadToTIGetQuests = 8897; + k_EMsgClientToGCRoadToTIGetQuestsResponse = 8898; + k_EMsgClientToGCRoadToTIGetActiveQuest = 8899; + k_EMsgClientToGCRoadToTIGetActiveQuestResponse = 8900; + k_EMsgClientToGCBingoGetUserData = 8901; + k_EMsgClientToGCBingoGetUserDataResponse = 8902; + k_EMsgClientToGCBingoClaimRow = 8903; + k_EMsgClientToGCBingoClaimRowResponse = 8904; + k_EMsgClientToGCBingoDevRerollCard = 8905; + k_EMsgClientToGCBingoDevRerollCardResponse = 8906; + k_EMsgClientToGCBingoGetStatsData = 8907; + k_EMsgClientToGCBingoGetStatsDataResponse = 8908; + k_EMsgGCToClientBingoUserDataUpdated = 8909; + k_EMsgGCToClientRoadToTIQuestDataUpdated = 8910; + k_EMsgClientToGCRoadToTIUseItem = 8911; + k_EMsgClientToGCRoadToTIUseItemResponse = 8912; + k_EMsgClientToGCShowcaseSubmitReport = 8913; + k_EMsgClientToGCShowcaseSubmitReportResponse = 8914; + k_EMsgClientToGCShowcaseAdminGetReportsRollupList = 8915; + k_EMsgClientToGCShowcaseAdminGetReportsRollupListResponse = 8916; + k_EMsgClientToGCShowcaseAdminGetReportsRollup = 8917; + k_EMsgClientToGCShowcaseAdminGetReportsRollupResponse = 8918; + k_EMsgClientToGCShowcaseAdminGetUserDetails = 8919; + k_EMsgClientToGCShowcaseAdminGetUserDetailsResponse = 8920; + k_EMsgClientToGCShowcaseAdminConvict = 8921; + k_EMsgClientToGCShowcaseAdminConvictResponse = 8922; + k_EMsgClientToGCShowcaseAdminExonerate = 8923; + k_EMsgClientToGCShowcaseAdminExonerateResponse = 8924; + k_EMsgClientToGCShowcaseAdminReset = 8925; + k_EMsgClientToGCShowcaseAdminResetResponse = 8926; + k_EMsgClientToGCShowcaseAdminLockAccount = 8927; + k_EMsgClientToGCShowcaseAdminLockAccountResponse = 8928; + k_EMsgClientToGCFantasyCraftingSelectPlayer = 8929; + k_EMsgClientToGCFantasyCraftingSelectPlayerResponse = 8930; + k_EMsgClientToGCFantasyCraftingGenerateTablets = 8931; + k_EMsgClientToGCFantasyCraftingGenerateTabletsResponse = 8932; + k_EMsgClientToGcFantasyCraftingUpgradeTablets = 8933; + k_EMsgClientToGcFantasyCraftingUpgradeTabletsResponse = 8934; + k_EMsgClientToGCFantasyCraftingRerollOptions = 8936; + k_EMsgClientToGCFantasyCraftingRerollOptionsResponse = 8937; + k_EMsgClientToGCRoadToTIDevForceQuest = 8935; + k_EMsgLobbyRoadToTIMatchQuestData = 8939; + k_EMsgClientToGCShowcaseModerationGetQueue = 8940; + k_EMsgClientToGCShowcaseModerationGetQueueResponse = 8941; + k_EMsgClientToGCShowcaseModerationApplyModeration = 8942; + k_EMsgClientToGCShowcaseModerationApplyModerationResponse = 8943; + k_EMsgClientToGCOverworldGetUserData = 8944; + k_EMsgClientToGCOverworldGetUserDataResponse = 8945; + k_EMsgClientToGCOverworldCompletePath = 8946; + k_EMsgClientToGCOverworldCompletePathResponse = 8947; + k_EMsgClientToGCOverworldClaimEncounterReward = 8948; + k_EMsgClientToGCOverworldClaimEncounterRewardResponse = 8949; + k_EMsgClientToGCOverworldDevResetAll = 8950; + k_EMsgClientToGCOverworldDevResetAllResponse = 8951; + k_EMsgClientToGCOverworldDevResetNode = 8952; + k_EMsgClientToGCOverworldDevResetNodeResponse = 8953; + k_EMsgClientToGCOverworldDevResetPath = 8954; + k_EMsgClientToGCOverworldDevResetPathResponse = 8955; + k_EMsgClientToGCOverworldDevGrantTokens = 8956; + k_EMsgClientToGCOverworldDevGrantTokensResponse = 8957; + k_EMsgClientToGCOverworldDevClearInventory = 8958; + k_EMsgClientToGCOverworldDevClearInventoryResponse = 8959; + k_EMsgServerToGCNewBloomGift = 8960; + k_EMsgServerToGCNewBloomGiftResponse = 8961; + k_EMsgGCToClientOverworldUserDataUpdated = 8962; + k_EMsgClientToGCOverworldMoveToNode = 8963; + k_EMsgClientToGCOverworldMoveToNodeResponse = 8964; + k_EMsgClientToGCNewBloomGift = 8965; + k_EMsgClientToGCNewBloomGiftResponse = 8966; + k_EMsgSignOutOverworld = 8967; + k_EMsgClientToGCSetBannedHeroes = 8969; + k_EMsgClientToGCOverworldTradeTokens = 8970; + k_EMsgClientToGCOverworldTradeTokensResponse = 8971; + k_EMsgOverworldEncounterTokenTreasureData = 8972; + k_EMsgOverworldEncounterTokenQuestData = 8973; + k_EMsgOverworldEncounterChooseHeroData = 8974; + k_EMsgClientToGCUpdateComicBookStats = 8975; + k_EMsgClientToGCCandyShopDevResetShop = 8976; + k_EMsgClientToGCCandyShopDevResetShopResponse = 8977; + k_EMsgOverworldEncounterProgressData = 8978; + k_EMsgClientToGCOverworldFeedback = 8979; + k_EMsgClientToGCOverworldFeedbackResponse = 8980; + k_EMsgClientToGCOverworldVisitEncounter = 8981; + k_EMsgClientToGCOverworldVisitEncounterResponse = 8982; + k_EMsgClientToGCOverworldGiftTokens = 8983; + k_EMsgClientToGCOverworldGiftTokensResponse = 8984; + k_EMsgClientToGCDotaLabsFeedback = 8985; + k_EMsgClientToGCDotaLabsFeedbackResponse = 8986; + k_EMsgOverworldEncounterPitFighterRewardData = 8987; + k_EMsgClientToGCOverworldGetDynamicImage = 8988; + k_EMsgClientToGCOverworldGetDynamicImageResponse = 8989; + k_EMsgClientToGCFightingGameChallengeFriend = 8990; + k_EMsgClientToGCFightingGameChallengeFriendResponse = 8991; + k_EMsgClientToGCFightingGameCancelChallengeFriend = 8992; + k_EMsgClientToGCFightingGameAnswerChallenge = 8993; + k_EMsgClientToGCFightingGameAnswerChallengeResponse = 8994; + k_EMsgGCToClientFightingGameChallenge = 8995; + k_EMsgGCToClientFightingGameStartMatch = 8996; + k_EMsgGCToClientFightingGameChallengeCanceled = 8997; + k_EMsgClientToGCBingoShuffleCard = 8999; + k_EMsgClientToGCBingoShuffleCardResponse = 9000; + k_EMsgClientToGCBingoModifySquare = 9001; + k_EMsgClientToGCBingoModifySquareResponse = 9002; + k_EMsgClientToGCBingoDevAddTokens = 9003; + k_EMsgClientToGCBingoDevAddTokensResponse = 9004; + k_EMsgClientToGCBingoDevClearInventory = 9005; + k_EMsgClientToGCBingoDevClearInventoryResponse = 9006; + k_EMsgGCCompendiumRemoveAllSelections = 9007; + k_EMsgGCCompendiumRemoveAllSelectionsResponse = 9008; + k_EMsgClientToGCOverworldMinigameAction = 9009; + k_EMsgClientToGCOverworldMinigameActionResponse = 9010; + k_EMsgClientToGCSurvivorsTelemetry = 9011; + k_EMsgClientToGCSurvivorsTelemetryResponse = 9012; + k_EMsgClientToGCOverworldRequestTokensNeededByFriend = 9013; + k_EMsgClientToGCOverworldRequestTokensNeededByFriendResponse = 9014; + k_EMsgClientToGCCraftworksGetUserData = 9015; + k_EMsgClientToGCCraftworksGetUserDataResponse = 9016; + k_EMsgGCToClientCraftworksUserDataUpdated = 9017; + k_EMsgClientToGCCraftworksCraftRecipe = 9018; + k_EMsgClientToGCCraftworksCraftRecipeResponse = 9019; + k_EMsgClientToGCCraftworksDevModifyComponents = 9020; + k_EMsgClientToGCCraftworksDevModifyComponentsResponse = 9021; + k_EMsgSignOutCraftworks = 9022; +} diff --git a/game/shared/dota/dota_gcmessages_server.proto b/game/shared/dota/dota_gcmessages_server.proto new file mode 100644 index 00000000..d0fc6188 --- /dev/null +++ b/game/shared/dota/dota_gcmessages_server.proto @@ -0,0 +1,1514 @@ +import "steammessages.proto"; +import "valveextensions.proto"; +import "dota_shared_enums.proto"; +import "dota_gcmessages_common.proto"; +import "econ_gcmessages.proto"; +import "base_gcmessages.proto"; +import "network_connection.proto"; +import "dota_gcmessages_common_lobby.proto"; +import "dota_gcmessages_common_match_management.proto"; +import "dota_gcmessages_common_overworld.proto"; +import "dota_gcmessages_common_craftworks.proto"; +import "gcsdk_gcmessages.proto"; +import "steammessages_steamlearn.steamworkssdk.proto"; + +enum EPoorNetworkConditionsType { + k_EPoorNetworkConditions_None = 0; + k_EPoorNetworkConditions_Unknown = 1; + k_EPoorNetworkConditions_MassDisconnect = 2; + k_EPoorNetworkConditions_ExcessBadQosIntervals = 3; +} + +message CMsgPoorNetworkConditions { + message Player { + optional uint32 account_id = 1; + optional .ENetworkDisconnectionReason disconnect_reason = 2 [default = NETWORK_DISCONNECT_INVALID]; + optional uint32 num_bad_intervals = 3; + optional uint32 peak_loss_pct = 4; + } + + optional .EPoorNetworkConditionsType detection_type = 1 [default = k_EPoorNetworkConditions_None]; + repeated .CMsgPoorNetworkConditions.Player players = 2; +} + +message CMsgGameserverCrash { + optional uint64 match_id = 1; + optional fixed64 lobby_id = 2; + optional .DOTA_GameState game_state = 3 [default = DOTA_GAMERULES_STATE_INIT]; + optional fixed32 sentinel_save_time = 4; + optional fixed64 custom_game_id = 11; + optional uint32 tournament_id = 12; + optional fixed64 server_steam_id = 5; + optional fixed32 server_public_ip_addr = 6; + optional uint32 server_port = 7; + optional uint32 server_cluster = 8; + optional uint32 pid = 9; + optional uint32 engine = 10; +} + +message CMsgConnectedPlayers { + message Player { + optional fixed64 steam_id = 1; + optional int32 hero_id = 2; + optional .CMsgLeaverState leaver_state = 3; + optional .ENetworkDisconnectionReason disconnect_reason = 4 [default = NETWORK_DISCONNECT_INVALID]; + } + + message PlayerDraft { + optional fixed64 steam_id = 1; + optional .DOTA_GC_TEAM team = 2 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional int32 team_slot = 3; + } + + enum SendReason { + INVALID = 0; + HEARTBEAT = 1; + GAME_STATE = 2; + FIRST_BLOOD = 3; + PLAYER_CONNECTED = 4; + PLAYER_HERO = 5; + PLAYER_DISCONNECTED_CONSEQUENCES = 6; + PLAYER_DISCONNECTED_NOCONSEQUENCES = 7; + GAMESTATE_TIMEOUT = 10; + MASS_DISCONNECT = 11; + KILLS = 13; + BUILDING_STATE = 14; + } + + repeated .CMsgConnectedPlayers.Player connected_players = 1; + repeated .CMsgConnectedPlayers.Player disconnected_players = 7; + optional .DOTA_GameState game_state = 2 [default = DOTA_GAMERULES_STATE_INIT]; + optional bool first_blood_happened = 6; + optional .CMsgPoorNetworkConditions poor_network_conditions = 10; + optional .CMsgConnectedPlayers.SendReason send_reason = 8 [default = INVALID]; + optional uint32 radiant_kills = 11; + optional uint32 dire_kills = 12; + optional int32 radiant_lead = 14; + optional uint32 building_state = 15; + repeated .CMsgConnectedPlayers.PlayerDraft player_draft = 16; +} + +message CMsgGameServerInfo { + enum ServerType { + UNSPECIFIED = 0; + GAME = 1; + PROXY = 2; + DOTA_ONLY = 4; + CUSTOM_GAME_ONLY = 5; + EVENT_GAME_ONLY = 6; + } + + enum CustomGames { + BOTH = 0; + NONE = 1; + ONLY = 2; + EVENT = 3; + } + + optional fixed32 server_public_ip_addr = 1; + optional fixed32 server_private_ip_addr = 2; + optional uint32 server_port = 3; + optional uint32 server_tv_port = 4; + optional uint32 assigned_server_tv_port = 22; + optional bytes legacy_server_steamdatagram_address = 27; + optional string server_key = 5; + optional bool server_hibernation = 6; + optional .CMsgGameServerInfo.ServerType server_type = 7 [default = UNSPECIFIED]; + optional uint32 server_region = 8; + optional float server_loadavg = 9; + optional float server_tv_broadcast_time = 10; + optional float server_game_time = 11; + optional fixed64 server_relay_connected_steam_id = 12; + optional uint32 relay_slots_max = 13; + optional int32 relays_connected = 14; + optional int32 relay_clients_connected = 15; + optional fixed64 relayed_game_server_steam_id = 16; + optional uint32 parent_relay_count = 17; + optional fixed64 tv_secret_code = 18; + optional uint32 server_version = 19; + optional uint32 server_cluster = 20; + optional .CMsgGameServerInfo.CustomGames allow_custom_games = 23 [default = BOTH]; + optional uint32 build_version = 24; + optional uint32 srcds_instance = 26; + optional bool dev_force_server_type = 28; + optional bool is_recording_match_training_data = 29; +} + +message CMsgLeaverDetected { + optional fixed64 steam_id = 1; + optional .DOTALeaverStatus_t leaver_status = 2 [default = DOTA_LEAVER_NONE]; + optional .CMsgLeaverState leaver_state = 4; + optional uint32 server_cluster = 5; + optional .ENetworkDisconnectionReason disconnect_reason = 6 [default = NETWORK_DISCONNECT_INVALID]; + optional .CMsgPoorNetworkConditions poor_network_conditions = 7; +} + +message CMsgLeaverDetectedResponse { + optional uint32 result = 1; +} + +message CMsgDOTAFantasyFinalPlayerStats { + repeated .CMsgDOTAFantasyPlayerStats stats = 2; +} + +message CMsgDOTAFantasyLivePlayerStats { + repeated .CMsgDOTAFantasyPlayerStats stats = 2; +} + +message CMsgServerToGCRealtimeStats { + optional .CMsgDOTARealtimeGameStatsTerse delayed = 1; +} + +message CMsgGCToServerRealtimeStatsStartStop { + optional bool delayed = 1; +} + +message CMsgGCToServerUpdateSteamBroadcasting { + optional bool active = 1; +} + +message CMsgSignOutGameplayStats { + message CPlayer { + optional fixed64 steam_id = 1; + optional uint32 player_slot = 2; + optional int32 hero_id = 3; + repeated .CMatchPlayerTimedStats timed_player_stats = 4; + } + + message CTeam { + optional bool is_winning_team = 1; + optional bool is_radiant_team = 2; + repeated .CMatchTeamTimedStats timed_team_stats = 3; + repeated .CMsgSignOutGameplayStats.CPlayer players = 4; + } + + repeated .CMsgSignOutGameplayStats.CTeam teams = 1; +} + +message CMsgGameMatchSignOut { + message CTeam { + message CPlayer { + message CCustomGameData { + optional uint32 dota_team = 1; + optional bool winner = 2; + } + + message HeroDamageReceived { + optional uint32 pre_reduction = 1; + optional uint32 post_reduction = 2; + optional .CMsgGameMatchSignOut.CTeam.CPlayer.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL]; + } + + enum HeroDamageType { + HERO_DAMAGE_PHYSICAL = 0; + HERO_DAMAGE_MAGICAL = 1; + HERO_DAMAGE_PURE = 2; + } + + optional fixed64 steam_id = 1; + optional int32 hero_id = 3; + repeated int32 items = 4; + repeated uint32 item_purchase_times = 63; + optional uint32 gold = 5; + optional uint32 kills = 6; + optional uint32 deaths = 7; + optional uint32 assists = 8; + optional uint32 leaver_status = 9; + optional uint32 last_hits = 10; + optional uint32 denies = 11; + optional uint32 gold_per_min = 12; + optional uint32 xp_per_minute = 13; + optional uint32 gold_spent = 14; + optional uint32 level = 15; + optional uint32 scaled_hero_damage = 16; + optional uint32 scaled_tower_damage = 17; + optional uint32 scaled_hero_healing = 18; + optional uint32 time_last_seen = 19; + optional uint32 support_ability_value = 20; + optional uint64 party_id = 21; + optional uint32 claimed_farm_gold = 27; + optional uint32 support_gold = 28; + optional uint32 claimed_denies = 29; + optional uint32 claimed_misses = 30; + optional uint32 misses = 31; + optional uint32 net_worth = 34; + optional uint32 hero_damage = 37; + optional uint32 tower_damage = 38; + optional uint32 hero_healing = 39; + repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 32; + repeated .CMatchAdditionalUnitInventory additional_units_inventory = 33; + repeated .CMatchPlayerPermanentBuff permanent_buffs = 40; + optional .CMsgGameMatchSignOut.CTeam.CPlayer.CCustomGameData custom_game_data = 35; + optional uint32 match_player_flags = 36; + repeated int32 talent_ability_ids = 41; + optional uint32 hero_pick_order = 42; + optional bool hero_was_randomed = 43; + optional bool hero_was_dota_plus_suggestion = 50; + optional uint32 lane = 45; + optional bool is_using_plus_guide = 47; + repeated .CMsgGameMatchSignOut.CTeam.CPlayer.HeroDamageReceived hero_damage_received = 48; + repeated .CMsgGameMatchSignOut.CTeam.CPlayer.HeroDamageReceived hero_damage_dealt = 64; + optional uint32 seconds_dead = 51; + optional uint32 gold_lost_to_death = 52; + optional uint32 command_count = 53; + optional uint32 mouse_click_cast_command_count = 54; + optional uint32 teleports_used = 55; + optional uint32 cavern_crawl_preferred_map_variant = 56 [default = 255]; + optional uint32 bounty_runes = 57; + optional uint32 outposts_captured = 58; + optional uint32 dewards = 59; + optional uint32 wards_placed = 60; + optional uint32 camps_stacked = 61; + optional uint32 player_slot = 62; + optional uint32 predicted_position = 66; + optional uint32 lane_outcomes = 67 [default = 255]; + optional uint32 friendly_t1_destroyed_time = 68; + optional uint32 enemy_t1_destroyed_time = 69; + optional uint32 friendly_roshan_kills = 70; + optional uint32 enemy_roshan_kills = 71; + optional uint32 power_runes = 72; + optional uint32 water_runes = 73; + optional float stun_duration = 74; + optional .DOTA_GC_TEAM team_number = 75 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional uint32 team_slot = 76; + optional uint32 time_purchased_shard = 77; + optional uint32 time_purchased_aghs = 78; + repeated int32 ability_draft_abilities = 79; + repeated .CMsgTrackedStat player_tracked_stats = 80; + optional uint32 predicted_rank = 81; + optional uint32 selected_facet = 82; + } + + repeated .CMsgGameMatchSignOut.CTeam.CPlayer players = 1; + repeated .CMsgTrackedStat team_tracked_stats = 2; + } + + message CAdditionalSignoutMsg { + optional uint32 id = 1; + optional bytes contents = 2; + } + + message CSocialFeedMatchEvent { + optional uint32 account_id = 1; + optional uint32 timestamp = 2; + optional uint32 event_type = 3; + optional int32 game_time = 4; + optional uint32 replay_time = 5; + } + + message CCustomGameData { + optional uint32 publish_timestamp = 1; + } + + message EventGameLeaderboardEntry { + optional string name_suffix = 1; + optional int32 score = 2; + optional uint32 extra_data_1 = 3; + optional uint32 extra_data_2 = 4; + optional uint32 extra_data_3 = 5; + optional uint32 extra_data_4 = 6; + optional uint32 extra_data_5 = 7; + } + + message WardPlacement { + optional int32 player_id = 1 [default = -1]; + optional uint32 team_id = 2; + optional uint32 placed_time = 3; + optional uint32 building_state = 4; + optional uint32 creep_state = 5; + optional bool roshan_alive = 6; + optional uint32 position_x = 7; + optional uint32 position_y = 8; + } + + optional uint64 match_id = 1 [(key_field) = true]; + optional uint32 duration = 2; + optional bool good_guys_win = 3; + optional fixed32 date = 4; + repeated .CMsgGameMatchSignOut.CTeam teams = 6; + repeated uint32 tower_status = 8; + repeated uint32 barracks_status = 9; + optional uint32 cluster = 10; + optional string server_addr = 11; + optional uint32 first_blood_time = 12; + optional uint32 event_score = 14; + repeated .CMsgDOTAFantasyPlayerStats fantasy_stats = 41; + repeated .CMsgEconPlayerStrangeCountAdjustment player_strange_count_adjustments = 17; + optional bool automatic_surrender = 18; + optional uint32 server_version = 19; + optional .CMsgPoorNetworkConditions poor_network_conditions = 35; + repeated .CMsgGameMatchSignOut.CAdditionalSignoutMsg additional_msgs = 20; + repeated .CMsgGameMatchSignOut.CSocialFeedMatchEvent social_feed_events = 36; + optional sint32 average_networth_delta = 22; + optional .CMsgGameMatchSignOut.CCustomGameData custom_game_data = 37; + optional uint32 match_flags = 38; + repeated uint32 team_scores = 39; + optional uint32 pre_game_duration = 40; + repeated .CMsgGameMatchSignOut.EventGameLeaderboardEntry event_game_leaderboard_entries = 42; + repeated .CMsgGameMatchSignOut.WardPlacement ward_placements = 43; + optional .CMsgSignOutGameplayStats gameplay_stats = 44; + repeated .CExtraMsgBlock extra_messages = 54; + optional bool training_data_recorded = 55; + optional .DOTA_GC_TEAM winning_team = 56 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional float normalized_win_probability_diff = 57; + repeated .CMsgTrackedStat match_tracked_stats = 58; +} + +message CMsgSignOutDraftInfo { + optional uint32 radiant_captain_account_id = 1; + optional uint32 dire_captain_account_id = 2; + repeated .CMatchHeroSelectEvent picks_bans = 3; +} + +message CMsgSignOutBotInfo { + optional bool allow_cheats = 1; + optional .DOTABotDifficulty bot_difficulty_radiant = 2 [default = BOT_DIFFICULTY_PASSIVE]; + optional bool created_lobby = 3; + optional .DOTABotDifficulty bot_difficulty_dire = 5 [default = BOT_DIFFICULTY_PASSIVE]; +} + +message CMsgSignOutTextMuteInfo { + message TextMuteMessage { + optional uint32 region = 1; + optional bool caused_text_mute = 2; + optional string chat_message = 3; + } + + repeated .CMsgSignOutTextMuteInfo.TextMuteMessage text_mute_messages = 1; +} + +message CMsgSignOutPlayerStats { + optional int32 account_id = 1; + optional uint64 match_id = 2; + optional uint32 rank = 3; + optional int32 hero_id = 4; + optional uint32 rampages = 5; + optional uint32 triple_kills = 6; + optional uint32 first_blood_claimed = 7; + optional uint32 first_blood_given = 8; + optional uint32 couriers_killed = 9; + optional uint32 aegises_snatched = 10; + optional uint32 cheeses_eaten = 11; + optional uint32 creeps_stacked = 12; + optional float fight_score = 13; + optional float farm_score = 14; + optional float support_score = 15; + optional float push_score = 16; + optional uint32 kills = 17; + optional uint32 deaths = 18; + optional uint32 assists = 19; + optional uint32 last_hits = 20; + optional uint32 denies = 21; + optional float gpm = 22; + optional float xppm = 23; + optional float net_worth = 24; + optional float damage = 25; + optional float heals = 26; + optional uint32 rapiers_purchased = 27; + optional uint32 observer_wards_placed = 28; + optional uint32 wards_destroyed = 29; + optional uint32 lobby_type = 30; +} + +message CMsgSignOutCommunicationSummary { + message PlayerCommunication { + message PingDetail { + optional uint32 type = 1 [default = 4294967295]; + optional uint32 count = 2; + } + + optional uint32 account_id = 1; + optional uint32 pings = 2; + optional uint32 max_pings_per_interval = 3; + optional uint32 teammate_pings = 4; + optional uint32 max_teammate_pings_per_interval = 5; + optional uint32 team_chat_messages = 6; + optional uint32 all_chat_messages = 7; + optional uint32 chat_wheel_messages = 8; + optional uint32 pauses = 9; + optional uint32 unpauses = 10; + optional uint32 lines_drawn = 11; + optional uint32 voice_chat_seconds = 12; + optional uint32 chat_mutes = 13; + optional uint32 voice_mutes = 14; + repeated .CMsgSignOutCommunicationSummary.PlayerCommunication.PingDetail ping_details = 15; + optional uint32 comms_blocks_solo = 16; + optional uint32 comms_blocks_mass = 17; + repeated string chat_log = 18; + } + + repeated .CMsgSignOutCommunicationSummary.PlayerCommunication players = 1; +} + +message CMsgGameMatchSignoutResponse { + message PlayerMetadata { + optional int32 hero_id = 1; + optional uint32 avg_kills_x16 = 2; + optional uint32 avg_deaths_x16 = 3; + optional uint32 avg_assists_x16 = 4; + optional uint32 avg_gpm_x16 = 5; + optional uint32 avg_xpm_x16 = 6; + optional uint32 best_kills_x16 = 7; + optional uint32 best_assists_x16 = 8; + optional uint32 best_gpm_x16 = 9; + optional uint32 best_xpm_x16 = 10; + optional uint32 win_streak = 11; + optional uint32 best_win_streak = 12; + optional uint32 games_played = 13; + } + + optional uint64 match_id = 1; + optional fixed32 replay_salt = 2; + optional uint32 leagueid = 5; + optional fixed32 metadata_private_key = 7; + optional .CMsgDOTAMatch match_details = 8; + repeated .CMsgGameMatchSignoutResponse.PlayerMetadata players_metadata = 9; + optional .CMvpData mvp_data = 10; + optional fixed64 ow_private_key = 11; + optional fixed32 ow_salt = 12; + optional uint64 ow_replay_id = 13; + optional .CMsgOverworldMatchRewards overworld_rewards = 14; +} + +message CMsgGameMatchSignOutPermissionRequest { + optional uint32 server_version = 1; + optional uint32 local_attempt = 2; + optional uint32 total_attempt = 3; + optional uint32 seconds_waited = 4; +} + +message CMsgGameMatchSignOutPermissionResponse { + optional bool permission_granted = 1 [default = false]; + optional bool abandon_signout = 2 [default = false]; + optional uint32 retry_delay_seconds = 3 [default = 0]; +} + +message CMsgGameMatchSignOutEventGameData { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional string game_name = 2; + optional string map_name = 3; + optional bytes event_game_data = 4; + optional uint32 start_time = 5; +} + +message CMsgGameMatchSignOutPerfData { + repeated float average_frame_time = 1; + repeated float max_frame_time = 2; + optional float server_average_frame_time = 3; + optional float server_max_frame_time = 4; + repeated float average_compute_time = 5; + repeated float max_compute_time = 6; + repeated float average_client_tick_time = 7; + repeated float max_client_tick_time = 8; + repeated float average_client_simulate_time = 9; + repeated float max_client_simulate_time = 10; + repeated float average_output_time = 11; + repeated float max_output_time = 12; + repeated float average_wait_for_rendering_to_complete_time = 13; + repeated float max_wait_for_rendering_to_complete_time = 14; + repeated float average_swap_time = 15; + repeated float max_swap_time = 16; + repeated float average_frame_update_time = 17; + repeated float max_frame_update_time = 18; + repeated float average_idle_time = 19; + repeated float max_idle_time = 20; + repeated float average_input_processing_time = 21; + repeated float max_input_processing_time = 22; +} + +message CMsgGameMatchSignOutBanData { + repeated int32 hero_bans = 1; + repeated int32 hero_ban_votes = 2; +} + +message CMsgDOTALiveScoreboardUpdate { + message Team { + message Player { + message HeroAbility { + optional int32 ability_id = 1 [default = -1]; + optional uint32 ability_level = 2; + } + + enum DOTAUltimateState { + k_EDOTAUltimateStateNotLearned = 0; + k_EDOTAUltimateStateCooldown = 1; + k_EDOTAUltimateStateNeedsMana = 2; + k_EDOTAUltimateStateReady = 3; + } + + optional uint32 player_slot = 1; + optional string player_name = 2; + optional string hero_name = 3; + optional int32 hero_id = 4; + optional uint32 kills = 5; + optional uint32 deaths = 6; + optional uint32 assists = 7; + optional uint32 last_hits = 8; + optional uint32 denies = 9; + optional uint32 gold = 10; + optional uint32 level = 11; + optional float gold_per_min = 12; + optional float xp_per_min = 13; + optional .CMsgDOTALiveScoreboardUpdate.Team.Player.DOTAUltimateState ultimate_state = 14 [default = k_EDOTAUltimateStateNotLearned]; + optional float ultimate_cooldown = 15; + optional int32 item0 = 16 [default = -1]; + optional int32 item1 = 17 [default = -1]; + optional int32 item2 = 18 [default = -1]; + optional int32 item3 = 19 [default = -1]; + optional int32 item4 = 20 [default = -1]; + optional int32 item5 = 21 [default = -1]; + optional uint32 respawn_timer = 22; + optional uint32 account_id = 23; + optional float position_x = 24; + optional float position_y = 25; + optional uint32 net_worth = 26; + repeated .CMsgDOTALiveScoreboardUpdate.Team.Player.HeroAbility abilities = 27; + } + + repeated .CMsgDOTALiveScoreboardUpdate.Team.Player players = 1; + optional uint32 score = 2; + optional uint32 tower_state = 3; + optional uint32 barracks_state = 4; + repeated int32 hero_picks = 5; + repeated int32 hero_bans = 6; + } + + optional uint32 tournament_id = 1; + optional uint32 tournament_game_id = 2; + optional float duration = 3; + optional int32 hltv_delay = 4; + optional .CMsgDOTALiveScoreboardUpdate.Team team_good = 5; + optional .CMsgDOTALiveScoreboardUpdate.Team team_bad = 6; + optional uint32 roshan_respawn_timer = 7; + optional uint32 league_id = 8; + optional uint64 match_id = 9; +} + +message CMsgServerToGCRequestBatchPlayerResources { + repeated uint32 account_ids = 1 [packed = true]; + repeated uint32 rank_types = 4 [packed = true]; + optional int32 lobby_type = 5; +} + +message CMsgServerToGCRequestBatchPlayerResourcesResponse { + message Result { + optional uint32 account_id = 1; + optional uint32 rank = 4; + optional bool rank_calibrated = 5; + optional bool low_priority = 6; + optional bool is_new_player = 7; + optional bool is_guide_player = 8; + optional int32 comm_level = 9; + optional int32 behavior_level = 10; + optional int32 wins = 11; + optional int32 losses = 12; + optional int32 smurf_category = 13; + optional int32 comm_score = 14; + optional int32 behavior_score = 15; + optional int32 rank_uncertainty = 16; + } + + repeated .CMsgServerToGCRequestBatchPlayerResourcesResponse.Result results = 6; +} + +message CMsgDOTAPlayerFailedToConnect { + repeated fixed64 failed_loaders = 1; + repeated fixed64 abandoned_loaders = 2; +} + +message CMsgGCToRelayConnect { + optional uint32 source_tv_public_addr = 1; + optional uint32 source_tv_private_addr = 2; + optional uint32 source_tv_port = 3; + optional uint64 game_server_steam_id = 4; + optional uint32 parent_count = 5; + optional fixed64 tv_unique_secret_code = 6; + optional fixed64 source_tv_steamid = 7; +} + +message CMsgGCGCToLANServerRelayConnect { + optional fixed64 relay_steamid = 1; +} + +message CMsgGCBanStatusRequest { + optional uint32 account_id = 1; +} + +message CMsgGCBanStatusResponse { + optional uint32 result = 1; + optional bool low_priority = 2; + optional bool text_chat_banned = 3; + optional bool voice_chat_banned = 4; +} + +message CMsgTournamentItemEvent { + optional fixed32 killer_account_id = 1; + optional fixed32 victim_account_id = 2; + optional .DOTA_TournamentEvents event_type = 3 [default = TE_FIRST_BLOOD]; + optional int32 tv_delay = 4; + optional int32 dota_time = 5; + optional float replay_time = 6; + optional string loot_list = 7; + optional uint32 event_team = 8; + optional uint32 multi_kill_count = 9; + optional uint32 winner_score = 10; + optional uint32 loser_score = 11; + repeated .CProtoItemHeroStatue hero_statues = 12; +} + +message CMsgTournamentItemEventResponse { + optional .DOTA_TournamentEvents event_type = 1 [default = TE_FIRST_BLOOD]; + optional uint32 viewers_granted = 6; +} + +message CMsgTeamFanfare { + optional uint64 match_id = 1; +} + +message CMsgResponseTeamFanfare { + optional uint32 fanfare_goodguys = 1; + optional uint32 fanfare_badguys = 2; +} + +message CMsgDOTAAwardEventPoints { + message AwardPoints { + optional uint32 account_id = 1; + optional int32 points = 2; + optional int32 premium_points = 3; + optional uint32 trade_ban_time = 5; + optional bool eligible_for_periodic_adjustment = 6 [default = false]; + optional uint32 point_cap_periodic_resource_id = 7; + } + + repeated .CMsgDOTAAwardEventPoints.AwardPoints award_points = 1; + optional uint64 match_id = 2; + optional .EEvent event_id = 4 [default = EVENT_ID_NONE]; + optional uint32 timestamp = 5; + optional uint32 audit_action = 6; +} + +message CMsgGCToServerPingRequest { + optional fixed64 request_id = 1; + optional uint64 request_time = 2; +} + +message CMsgGCToServerPingResponse { + optional fixed64 request_id = 1; + optional uint64 request_time = 2; + optional uint32 cluster = 3; +} + +message CMsgServerToGCMatchConnectionStats { + message Player { + optional uint32 account_id = 1; + optional fixed32 ip = 2; + optional uint32 avg_ping_ms = 3; + optional float packet_loss = 5; + optional float ping_deviation = 6; + optional uint32 full_resends = 7; + } + + optional uint64 match_id = 1; + optional uint32 region_id = 2; + optional uint32 league_id = 3; + repeated .CMsgServerToGCMatchConnectionStats.Player players = 4; + optional uint32 cluster_id = 5; +} + +message CMsgServerGCUpdateSpectatorCount { + optional uint32 spectator_count = 1; +} + +message CSerializedCombatLog { + message Dictionary { + message DictString { + required uint32 id = 1; + required string value = 2; + } + + repeated .CSerializedCombatLog.Dictionary.DictString strings = 1; + } + + optional uint32 version = 1; + optional .CSerializedCombatLog.Dictionary dictionary = 2; + repeated .CMsgDOTACombatLogEntry entries = 3; +} + +message CMsgServerToGCVictoryPredictions { + message PredictionItem { + optional uint64 item_id = 1; + optional uint32 item_def = 2; + } + + message Record { + optional uint32 account_id = 1; + repeated uint64 item_ids = 5; + repeated .CMsgServerToGCVictoryPredictions.PredictionItem prediction_items = 6; + } + + repeated .CMsgServerToGCVictoryPredictions.Record records = 1; +} + +message CMsgServerToGCRequestStatus { +} + +message CMsgServerToGCRequestStatus_Response { + optional uint32 response = 1; +} + +message CMsgGCToServerEvaluateToxicChat { + optional uint32 target_account_id = 1; + optional uint32 reporter_account_id = 2; +} + +message CMsgServerToGCEvaluateToxicChat { + optional uint32 target_account_id = 1; + optional uint32 reporter_account_id = 2; + optional fixed64 match_id = 3; + repeated uint32 timestamp = 4; + repeated string line = 5; +} + +message CMsgServerToGCEvaluateToxicChatResponse { + optional uint32 target_account_id = 1; + optional uint32 reporter_account_id = 2; + optional uint32 ban_reason = 3; + optional uint32 ban_duration = 4; + optional float toxicity_score = 5; +} + +message CMsgSignOutAssassinMiniGameInfo { + repeated fixed64 winning_players = 1; + repeated fixed64 losing_players = 2; + repeated fixed64 arcana_owners = 3; + optional bool assassin_won = 4; + optional int32 target_hero_id = 5; + optional bool contract_completed = 6; + optional float contract_complete_time = 7; + optional bool pa_is_radiant = 8; +} + +message CMsgServerToGCKillSummaries { + message KillSummary { + optional uint32 killer_hero_id = 1; + optional uint32 victim_hero_id = 2; + optional uint32 kill_count = 3; + } + + optional uint32 ingameevent_id = 1; + repeated .CMsgServerToGCKillSummaries.KillSummary summaries = 2; +} + +message CMsgServerToGCLockCharmTrading { + optional uint32 account_id = 1; + optional uint64 item_id = 2; +} + +message CMsgSignOutUpdatePlayerChallenge { + message Challenge { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 slot_id = 2; + optional uint32 sequence_id = 3; + optional uint32 progress = 4; + optional uint32 challenge_rank = 5; + } + + optional uint32 account_id = 1; + repeated .CMsgSignOutUpdatePlayerChallenge.Challenge completed = 2; + repeated .CMsgSignOutUpdatePlayerChallenge.Challenge rerolled = 3; + optional uint64 match_id = 4; + optional int32 hero_id = 5; +} + +message CMsgServerToGCRerollPlayerChallenge { + optional uint32 account_id = 1; + optional .CMsgClientToGCRerollPlayerChallenge reroll_msg = 2; +} + +message CMsgSpendWager { + message Player { + optional uint32 account_id = 1; + optional uint32 wager = 2; + optional uint64 wager_token_item_id = 3; + } + + repeated .CMsgSpendWager.Player players = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint32 timestamp = 3; + optional uint64 match_id = 4; + optional uint64 server_steam_id = 5; +} + +message CMsgSignOutXPCoins { + message Player { + optional uint32 account_id = 1; + optional uint32 xp_gained = 2; + optional uint32 coins_spent = 3; + optional uint64 wager_token_item_id = 4; + optional uint32 rank_wager = 5; + optional uint32 wager_streak = 6; + } + + repeated .CMsgSignOutXPCoins.Player players = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint64 match_id = 3; + optional uint32 timestamp = 4; +} + +message CMsgSignOutBounties { + message Bounty { + optional uint32 issuer_account_id = 1; + optional uint32 completer_account_id = 2; + optional uint32 target_account_id = 3; + } + + repeated .CMsgSignOutBounties.Bounty bounties = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint64 match_id = 3; + optional uint32 timestamp = 4; +} + +message CMsgSignOutCommunityGoalProgress { + message EventGoalIncrement { + optional uint32 event_goal_id = 1; + optional uint32 increment_amount = 2; + } + + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + repeated .CMsgSignOutCommunityGoalProgress.EventGoalIncrement event_increments = 2; +} + +message CMsgServerToGCCloseCompendiumInGamePredictionVoting { + optional uint64 match_id = 1; + optional uint32 hltv_delay = 2; + optional uint32 league_id = 3; +} + +message CMsgServerToGCCloseCompendiumInGamePredictionVotingResponse { + optional bool result = 1; +} + +message CMsgServerToGCCompendiumInGamePredictionResults { + message PredictionResult { + optional uint32 prediction_id = 1; + optional uint32 prediction_value = 2; + optional bool prediction_value_is_mask = 3; + } + + optional uint64 match_id = 1; + repeated .CMsgServerToGCCompendiumInGamePredictionResults.PredictionResult results = 2; + optional uint32 league_id = 3; + optional uint32 league_node_id = 4; +} + +message CMsgServerToGCCompendiumChosenInGamePredictions { + message Prediction { + optional uint32 prediction_id = 1; + } + + optional uint64 match_id = 1; + repeated .CMsgServerToGCCompendiumChosenInGamePredictions.Prediction predictions_chosen = 2; + optional uint32 league_id = 3; +} + +message CMsgGCToGCCompendiumInGamePredictionResults { + optional .CMsgServerToGCCompendiumInGamePredictionResults results = 1; +} + +message CMsgServerToGCMatchPlayerItemPurchaseHistory { + message ItemPurchase { + optional int32 item = 1 [default = -1]; + optional uint32 gold = 2; + optional uint32 net_worth = 3; + optional uint32 game_time = 4; + repeated int32 inventory_items = 5; + repeated bool talents_skilled = 7; + } + + message Player { + optional uint32 player_slot = 1; + optional uint32 account_id = 2; + optional int32 hero_id = 3; + repeated int32 allied_hero_ids = 4; + repeated int32 enemy_hero_ids = 5; + repeated .CMsgServerToGCMatchPlayerItemPurchaseHistory.ItemPurchase item_purchases = 6; + optional uint32 lane = 7; + optional bool is_winner = 8; + } + + optional uint64 match_id = 1; + optional uint32 mmr = 2; + repeated .CMsgServerToGCMatchPlayerItemPurchaseHistory.Player players = 3; +} + +message CMsgServerToGCMatchPlayerNeutralItemEquipHistory { + message ItemEquip { + optional int32 item = 1 [default = -1]; + optional uint32 game_time = 2; + repeated int32 inventory_items = 3; + repeated bool talents_skilled = 4; + repeated int32 available_neutral_items = 5; + } + + message Player { + optional uint32 account_id = 1; + repeated int32 allied_hero_ids = 2; + repeated int32 enemy_hero_ids = 3; + repeated .CMsgServerToGCMatchPlayerNeutralItemEquipHistory.ItemEquip item_equips = 4; + optional bool is_winner = 5; + } + + optional uint64 match_id = 1; + repeated .CMsgServerToGCMatchPlayerNeutralItemEquipHistory.Player players = 2; +} + +message CMsgServerToGCMatchStateHistory { + message PlayerState { + optional int32 hero_id = 1; + optional uint32 net_worth = 2; + optional uint32 level = 3; + optional uint32 deaths = 4; + optional uint32 respawn_time = 5; + optional bool has_buyback = 6; + optional bool has_aegis = 7; + optional bool has_rapier = 8; + optional uint32 distance = 9; + } + + message TeamState { + optional uint32 team = 1; + repeated .CMsgServerToGCMatchStateHistory.PlayerState player_states = 2 [(steamml_max_entries) = 5]; + repeated uint32 tower_health_pct = 3 [(steamml_max_entries) = 11]; + repeated uint32 barracks_health_pct = 4 [(steamml_max_entries) = 3]; + optional uint32 ancient_health_pct = 5; + optional uint32 glyph_cooldown = 6; + optional uint32 kills = 7; + optional uint32 creep_distance_safe = 8; + optional uint32 creep_distance_mid = 9; + optional uint32 creep_distance_off = 10; + } + + message MatchState { + optional uint32 game_time = 1; + optional .CMsgServerToGCMatchStateHistory.TeamState radiant_state = 2; + optional .CMsgServerToGCMatchStateHistory.TeamState dire_state = 3; + } + + optional uint64 match_id = 1; + optional bool radiant_won = 2; + optional uint32 mmr = 3; + repeated .CMsgServerToGCMatchStateHistory.MatchState match_states = 4; +} + +message CMsgMatchStateSteamMLEntry { + optional .CMsgServerToGCMatchStateHistory.MatchState match_state = 1; + optional uint32 mmr = 2; + optional bool radiant_won = 3; +} + +message CMsgLaneSelectionSteamMLEntry { + repeated int32 hero_ids = 1 [(steamml_max_entries) = 10]; + repeated uint32 lanes = 2 [(steamml_max_entries) = 6]; +} + +message CMsgAbilitySelectionSteamMLEntry { + optional uint32 mmr = 1; + optional int32 hero_id = 2; + repeated int32 enemy_hero_ids = 3 [(steamml_max_entries) = 4]; + optional uint32 lane = 4; + repeated int32 abilities = 5 [(steamml_max_entries) = 25]; + optional int32 selected_ability = 6 [default = -1]; +} + +message CMsgItemPurchasePregameSteamMLEntry { + optional uint32 mmr = 1; + optional uint32 lane = 2; + optional float balance = 3; + optional int32 hero_id = 4; + repeated int32 allied_hero_ids = 5 [(steamml_max_entries) = 4]; + repeated int32 enemy_hero_ids = 6 [(steamml_max_entries) = 5]; + repeated int32 items = 7 [(steamml_max_entries) = 9]; +} + +message CMsgItemPurchaseSteamMLEntry { + optional uint32 mmr = 1; + optional uint32 lane = 2; + optional int32 hero_id = 3; + repeated int32 allied_hero_ids = 4 [(steamml_max_entries) = 4]; + repeated int32 enemy_hero_ids = 5 [(steamml_max_entries) = 5]; + repeated int32 items = 6 [(steamml_max_entries) = 20]; + repeated int32 items_to_be_purchased = 7 [(steamml_max_entries) = 20]; +} + +message CMsgItemPurchaseSequenceSteamMLEntry { + optional uint32 mmr = 1; + optional uint32 lane = 2; + optional int32 hero_id = 3; + repeated int32 allied_hero_ids = 4 [(steamml_max_entries) = 4]; + repeated int32 enemy_hero_ids = 5 [(steamml_max_entries) = 5]; + repeated int32 items = 6 [(steamml_max_entries) = 20]; + optional int32 item_to_be_purchased = 7 [default = -1]; +} + +message CMsgServerToGCCavernCrawlIsHeroActive { + optional uint32 event_id = 1; + optional uint32 account_id = 2; + optional uint32 preferred_map_variant = 3 [default = 255]; + optional int32 hero_id = 4; + optional bool turbo_mode = 5; +} + +message CMsgServerToGCPlayerChallengeHistory { + message PlayerChallenge { + optional uint32 account_id = 1; + optional .EPlayerChallengeHistoryType challenge_type = 2 [default = k_EPlayerChallengeHistoryType_Invalid]; + optional uint32 challenge_id1 = 3; + optional uint32 challenge_id2 = 4; + optional uint32 progress_value_start = 5; + optional uint32 progress_value_end = 6; + optional bool team_won = 7; + optional uint64 audit_data = 8; + optional int32 hero_id = 9; + optional uint32 rank_completed = 10; + } + + optional uint64 match_id = 1; + optional uint32 average_rank = 2; + repeated .CMsgServerToGCPlayerChallengeHistory.PlayerChallenge challenge_records = 3; +} + +message CMsgServerToGCCavernCrawlIsHeroActiveResponse { + message MapResults { + optional uint32 path_id_completed = 1 [default = 255]; + optional uint32 room_id_claimed = 2 [default = 255]; + } + + optional bool result = 1; + optional uint32 map_variant = 5 [default = 255]; + optional uint32 potential_winnings = 2; + repeated .CMsgServerToGCCavernCrawlIsHeroActiveResponse.MapResults map_results = 3; + optional uint32 potential_plus_shard_winnings = 4; +} + +message CMsgNeutralItemStats { + message NeutralItem { + optional int32 item_id = 1 [default = -1]; + optional uint32 time_dropped = 2; + optional uint32 team = 3; + optional uint32 time_last_equipped = 4; + optional uint32 time_last_unequipped = 5; + optional uint32 duration_equipped = 6; + } + + repeated .CMsgNeutralItemStats.NeutralItem neutral_items = 1; +} + +message CMsgGCToServerLobbyHeroBanRates { + message HeroBanEntry { + optional int32 hero_id = 1; + optional uint32 ban_count = 2; + optional uint32 pick_count = 3; + } + + repeated .CMsgGCToServerLobbyHeroBanRates.HeroBanEntry ban_data = 1; +} + +message CMsgSignOutGuildContractProgress { + message CompletedGuildEventContracts { + optional uint32 guild_id = 1; + optional uint32 event_id = 2; + repeated uint64 contracts = 3; + } + + message PlayerContract { + optional uint32 account_id = 1; + repeated .CMsgSignOutGuildContractProgress.CompletedGuildEventContracts completed_contracts = 2; + } + + repeated .CMsgSignOutGuildContractProgress.PlayerContract player_contracts = 1; +} + +message CMsgSignOutGuildChallengeProgress { + message ChallengeProgress { + optional uint32 guild_id = 1; + optional uint32 event_id = 2; + optional uint32 challenge_instance_id = 3; + optional uint32 challenge_instance_timestamp = 4; + optional uint32 challenge_period_serial = 5; + optional uint32 progress = 6; + optional uint32 challenge_parameter = 7; + } + + repeated .CMsgSignOutGuildChallengeProgress.ChallengeProgress guild_challenges_progresses = 1; +} + +message CMsgSignOutMVPStats { + message Player { + message KillEaterEvent { + required uint32 event_type = 1; + required uint32 amount = 2; + } + + optional uint32 team_id = 1; + optional uint32 team_networth_rank = 2; + optional uint32 account_id = 3; + optional uint32 player_slot = 32; + optional uint32 rank = 33; + optional int32 hero_id = 4; + optional uint32 role = 5; + optional int32 kills = 6; + optional int32 deaths = 7; + optional int32 assists = 8; + optional int32 xp = 9; + optional int32 net_worth = 10; + optional int32 support_gold_spent = 12; + optional int32 wards_placed = 13; + optional int32 wards_spotted_for_dewarding = 14; + optional int32 camps_stacked = 15; + optional int32 last_hits = 16; + optional int32 denies = 17; + optional int32 building_damage = 19; + optional int32 other_damage = 20; + optional int32 triple_kills = 26; + optional int32 rampages = 28; + optional int32 first_blood = 31; + repeated .CMsgSignOutMVPStats.Player.KillEaterEvent kill_eater_events = 34; + optional uint32 highest_killstreak = 35; + } + + optional uint64 match_id = 1; + optional uint32 game_mode = 2; + optional uint32 winning_team = 3; + optional float game_time = 4; + repeated .CMsgSignOutMVPStats.Player players = 5; +} + +message CMsgGCToServerRecordTrainingData { + optional bool enable = 1; +} + +message CMsgServerToGCGetGuildContracts { + repeated uint32 account_ids = 1; +} + +message CMsgServerToGCGetGuildContractsResponse { + message ContractDetails { + optional uint64 contract_id = 1; + optional uint32 challenge_instance_id = 2; + optional uint32 challenge_parameter = 3; + optional uint32 contract_stars = 4; + optional uint32 contract_slot = 5; + } + + message Player { + optional uint32 account_id = 1; + optional uint32 guild_id = 2; + optional .EEvent event_id = 3 [default = EVENT_ID_NONE]; + repeated .CMsgServerToGCGetGuildContractsResponse.ContractDetails contracts = 4; + } + + repeated .CMsgServerToGCGetGuildContractsResponse.Player player_contracts = 1; +} + +message CMsgMatchDiretideCandy { + message CandyDetails { + optional uint32 amount = 1; + optional uint32 audit = 2; + } + + message PlayerCandy { + optional uint32 account_id = 1; + optional uint32 candy_amount = 3; + optional bool consumes_periodic_resource = 4; + repeated .CMsgMatchDiretideCandy.CandyDetails candy_breakdown = 5; + } + + repeated .CMsgMatchDiretideCandy.PlayerCandy player_candy_data = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; +} + +message CMsgGCToServerCheerData { + message CheerTypeCount { + optional uint32 cheer_type = 1; + optional uint32 cheer_count = 2; + } + + repeated .CMsgGCToServerCheerData.CheerTypeCount cheer_types = 1; +} + +message CMsgCheerConfig { + optional bool cheers_enabled = 1; + optional bool is_valid_league_id = 2; + optional float window_duration = 3; + optional uint32 window_bucket_count = 4; + optional float crowd_level_push_time = 6; + optional uint32 crowd_level_low = 10; + optional uint32 crowd_level_medium = 11; + optional uint32 crowd_level_high = 12; + optional float cheer_scale_start = 13; + optional float cheer_scale_speed = 14; + optional uint32 cheer_scale_push_mark = 15; + optional uint32 cheer_scale_pull_mark = 16; + optional float cheer_scale_pct_of_max_cps_clamp = 17; + optional float cheer_scale_dampener_value = 21; + optional uint32 cheer_scale_dampener_lerp_time = 22; + optional float cheer_factor_bronze = 18; + optional float cheer_factor_silver = 19; + optional float cheer_factor_gold = 20; +} + +message CMsgGCToServerCheerConfig { + optional .CMsgCheerConfig cheer_config = 1; +} + +message CMsgServerToGCGetCheerConfig { + optional uint32 league_id = 1; +} + +message CMsgServerToGCGetCheerConfigResponse { + optional .CMsgCheerConfig cheer_config = 2; +} + +message CMsgGCToServerCheerScalesOverride { + repeated float scales = 1; +} + +message CMsgGCToServerGetCheerState { +} + +message CMsgCheerTypeState { + repeated uint32 cheer_counts = 1; + optional float max_per_second = 2; + optional float cheer_scale = 3; + optional float override_scale = 4; +} + +message CMsgCheerState { + repeated .CMsgCheerTypeState cheer_types = 1; + optional uint32 radiant_crowd_level = 2; + optional uint32 dire_crowd_level = 3; +} + +message CMsgServerToGCReportCheerState { + optional .CMsgCheerConfig cheer_config = 1; + optional .CMsgCheerState cheer_state = 2; +} + +message CMsgServerToGCGetStickerHeroes { + repeated uint32 account_ids = 1; +} + +message CMsgServerToGCGetStickerHeroesResponse { + message Player { + optional uint32 account_id = 1; + optional .CMsgStickerHeroes stickers = 2; + } + + repeated .CMsgServerToGCGetStickerHeroesResponse.Player players = 1; +} + +message CMsgSteamLearnMatchInfo { + optional uint32 average_mmr = 1; + optional bool radiant_won = 2; + optional uint32 duration = 3; + optional uint32 game_mode = 4; + optional uint32 lobby_type = 5; +} + +message CMsgSteamLearnMatchInfoPlayer { + optional uint32 average_mmr = 1; + optional bool team_won = 2; + optional uint32 duration = 3; + optional uint32 game_mode = 4; + optional uint32 lobby_type = 5; + optional uint32 player_mmr = 6; +} + +message CMsgSteamLearnMatchInfoTeam { + message Player { + optional uint32 prematch_mmr = 1; + optional uint32 prematch_rank_uncertainty = 2; + optional uint32 prematch_behavior_score = 3; + optional uint32 prematch_comm_score = 4; + optional uint32 num_players_in_party = 5; + } + + repeated .CMsgSteamLearnMatchInfoTeam.Player radiant_players = 1 [(steamlearn_count) = 5]; + repeated .CMsgSteamLearnMatchInfoTeam.Player dire_players = 2 [(steamlearn_count) = 5]; + optional bool radiant_team_won = 3; +} + +message CMsgSteamLearnMatchHeroesV3 { + repeated int32 radiant_hero_ids = 1 [(steamlearn_count) = 5]; + repeated int32 dire_hero_ids = 2 [(steamlearn_count) = 5]; + repeated uint32 radiant_lanes = 3 [(steamlearn_count) = 5]; + repeated uint32 dire_lanes = 4 [(steamlearn_count) = 5]; + repeated uint32 radiant_hero_facets = 5 [(steamlearn_count) = 5]; + repeated uint32 dire_hero_facets = 6 [(steamlearn_count) = 5]; + repeated uint32 radiant_positions = 7 [(steamlearn_count) = 5]; + repeated uint32 dire_positions = 8 [(steamlearn_count) = 5]; +} + +message CMsgSteamLearnMatchHeroV3 { + optional int32 hero_id = 1; + optional uint32 lane = 2; + optional uint32 position = 8; + repeated int32 allied_hero_ids = 3 [(steamlearn_count) = 4]; + repeated int32 enemy_hero_ids = 4 [(steamlearn_count) = 5]; + optional uint32 hero_facet = 5; + repeated uint32 allied_hero_facets = 6 [(steamlearn_count) = 4]; + repeated uint32 enemy_herofacets = 7 [(steamlearn_count) = 5]; +} + +message CMsgSteamLearnPlayerTimedStats { + message StatBucket { + optional float game_time = 1; + optional uint32 kills = 2; + optional uint32 deaths = 3; + optional uint32 assists = 4; + optional uint32 experience = 5; + optional uint32 last_hits = 6; + optional uint32 denies = 7; + optional uint32 net_worth = 8; + optional float idle_time = 9; + optional uint32 commands_issued = 10; + optional uint32 sentry_wards_placed = 11; + optional uint32 observer_wards_placed = 12; + } + + repeated .CMsgSteamLearnPlayerTimedStats.StatBucket stat_buckets = 1 [(steamlearn_count) = 90]; +} + +message CMsgSteamLearnMatchStateV5 { + message PlayerState { + optional int32 hero_id = 1; + optional uint32 net_worth = 2; + optional uint32 level = 3; + optional uint32 deaths = 4; + optional uint32 respawn_time = 5; + optional bool has_buyback = 6; + optional bool has_aegis = 7; + optional bool has_rapier = 8; + optional uint32 distance = 9; + optional uint32 hero_facet = 10; + } + + message TeamState { + optional uint32 team = 1; + repeated .CMsgSteamLearnMatchStateV5.PlayerState player_states = 2 [(steamlearn_count) = 5]; + repeated uint32 tower_health_pct = 3 [(steamlearn_count) = 11]; + repeated uint32 barracks_health_pct = 4 [(steamlearn_count) = 6]; + optional uint32 ancient_health_pct = 5; + optional uint32 glyph_cooldown = 6; + optional uint32 kills = 7; + optional uint32 creep_distance_safe = 8; + optional uint32 creep_distance_mid = 9; + optional uint32 creep_distance_off = 10; + } + + optional float game_time = 1; + optional .CMsgSteamLearnMatchStateV5.TeamState radiant_state = 2; + optional .CMsgSteamLearnMatchStateV5.TeamState dire_state = 3; +} + +message CMsgSteamLearnItemPurchase { + optional int32 item_id = 1 [default = -1]; + repeated int32 inventory_items = 2 [(steamlearn_count) = 20]; + repeated int32 purchase_history = 3 [(steamlearn_count) = 20]; + optional uint32 gold = 4; + optional uint32 net_worth = 5; + optional uint32 is_radiant_team = 6; + optional float game_time = 7; + optional bool is_using_dota_plus = 8; +} + +message CMsgSteamLearnPreGameItemPurchases { + repeated int32 item_ids = 1 [(steamlearn_count) = 10]; + optional uint32 is_radiant_team = 2; + optional bool is_using_dota_plus = 3; +} + +message CMsgSteamLearnNeutralItemPurchase { + optional int32 item_id = 1 [default = -1]; + optional uint32 tier = 2; + optional uint32 is_radiant_team = 3; + optional bool is_using_dota_plus = 4; +} + +message CMsgSteamLearnAbilitySkill { + optional int32 ability_id = 1 [default = -1]; + repeated int32 skilled_abilities = 2 [(steamlearn_count) = 30]; + optional float game_time = 3; + optional bool is_using_dota_plus = 4; +} + +message CMsgSteamLearnEarlyGameItemPurchasesV2 { + repeated int32 item_ids = 1 [(steamlearn_count) = 10]; + repeated int32 other_item_ids = 2 [(steamlearn_count) = 30]; +} + +message CMsgSteamLearnLateGameItemPurchasesV2 { + repeated int32 item_ids = 1 [(steamlearn_count) = 10]; + repeated int32 other_item_ids = 2 [(steamlearn_count) = 30]; +} + +message CMsgSteamLearnMainGameItemPurchases { + repeated int32 item_ids = 1 [(steamlearn_count) = 10]; +} + +message CMsgSteamLearnWardPlacement { + message Location { + optional float x = 1; + optional float y = 2; + } + + optional .CMsgSteamLearnWardPlacement.Location ward_loc = 1; + repeated .CMsgSteamLearnWardPlacement.Location existing_ward_locs = 2 [(steamlearn_count) = 6]; + optional uint32 team = 3; +} + +message CMsgSignOutMuertaMinigame { + optional bytes event_game_data = 1; +} + +message CMsgSignOutMapStats { + message Player { + optional uint32 account_id = 1; + optional .CMsgMapStatsSnapshot personal_stats = 2; + } + + repeated .CMsgSignOutMapStats.Player players = 1; + optional .CMsgMapStatsSnapshot global_stats = 2; +} + +message CMsgServerToGCNewBloomGift { + optional uint32 defindex = 1; + optional uint32 gifter_account_id = 2; + repeated uint32 target_account_ids = 3; +} + +message CMsgServerToGCNewBloomGiftResponse { + optional .ENewBloomGiftingResponse result = 1 [default = kENewBloomGifting_UnknownFailure]; + repeated uint32 received_account_ids = 2; +} + +message CMsgSignOutOverworld { + message Player { + optional uint32 account_id = 1; + optional uint32 overworld_id = 2; + repeated uint32 desired_token_rewards = 3; + } + + repeated .CMsgSignOutOverworld.Player players = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; +} + +message CMsgSignOutCraftworks { + message Player { + optional uint32 account_id = 1; + optional .CMsgCraftworksComponents components = 2; + } + + repeated .CMsgSignOutCraftworks.Player players = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; +} diff --git a/game/shared/dota/dota_match_metadata.proto b/game/shared/dota/dota_match_metadata.proto new file mode 100644 index 00000000..1ec74ba7 --- /dev/null +++ b/game/shared/dota/dota_match_metadata.proto @@ -0,0 +1,355 @@ +import "base_gcmessages.proto"; +import "dota_gcmessages_common_match_management.proto"; +import "dota_gcmessages_common_lobby.proto"; +import "dota_gcmessages_common_overworld.proto"; +import "dota_gcmessages_common_craftworks.proto"; +import "dota_gcmessages_common.proto"; +import "dota_shared_enums.proto"; +import "gcsdk_gcmessages.proto"; + +message CDOTAMatchMetadataFile { + required int32 version = 1; + required uint64 match_id = 2; + optional .CDOTAMatchMetadata metadata = 3; + optional bytes private_metadata = 5; +} + +message CDOTAMatchMetadata { + message EconItem { + optional uint32 def_index = 1; + optional uint32 quality = 2 [default = 4]; + repeated .CSOEconItemAttribute attribute = 3; + optional uint32 style = 4 [default = 0]; + repeated .CSOEconItemEquipped equipped_state = 5; + } + + message Team { + message PlayerKill { + optional uint32 victim_slot = 1; + optional uint32 count = 2; + } + + message ItemPurchase { + optional int32 item_id = 1 [default = -1]; + optional int32 purchase_time = 2; + } + + message InventorySnapshot { + repeated int32 item_id = 1; + optional int32 game_time = 2; + optional uint32 kills = 3; + optional uint32 deaths = 4; + optional uint32 assists = 5; + optional uint32 level = 6; + repeated int32 backpack_item_id = 7; + optional int32 neutral_item_id = 8 [default = -1]; + } + + message AutoStyleCriteria { + optional uint32 name_token = 1; + optional float value = 2; + } + + message StrangeGemProgress { + optional uint32 kill_eater_type = 1; + optional uint32 gem_item_def_index = 2; + optional int32 required_hero_id = 3; + optional uint32 starting_value = 4; + optional uint32 ending_value = 5; + optional uint32 owner_item_def_index = 6; + optional uint64 owner_item_id = 7; + } + + message VictoryPrediction { + optional uint64 item_id = 1; + optional uint32 item_def_index = 2; + optional uint32 starting_value = 3; + optional bool is_victory = 4; + } + + message SubChallenge { + optional uint32 slot_id = 1; + optional uint32 start_value = 2; + optional uint32 end_value = 3; + optional bool completed = 4; + } + + message CavernChallengeResult { + optional uint32 completed_path_id = 1 [default = 255]; + optional uint32 claimed_room_id = 2 [default = 255]; + } + + message ActionGrant { + optional uint32 action_id = 1; + optional uint32 quantity = 2; + optional uint32 audit = 3; + optional uint64 audit_data = 5; + } + + message CandyGrant { + optional uint32 points = 1; + optional uint32 reason = 2; + } + + message PeriodicResourceData { + optional uint32 periodic_resource_id = 1; + optional uint32 remaining = 2; + optional uint32 max = 3; + } + + message EventData { + optional uint32 event_id = 1; + optional uint32 event_points = 2; + optional uint32 challenge_instance_id = 3; + optional uint32 challenge_quest_id = 4; + optional uint32 challenge_quest_challenge_id = 5; + optional bool challenge_completed = 6; + optional uint32 challenge_rank_completed = 7; + optional uint32 challenge_rank_previously_completed = 8; + optional bool event_owned = 9; + repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10; + optional uint32 wager_winnings = 11; + optional bool cavern_challenge_active = 12; + optional uint32 cavern_challenge_winnings = 13; + optional uint32 amount_wagered = 14; + optional uint32 periodic_point_adjustments = 16; + repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17; + optional uint32 cavern_challenge_plus_shard_winnings = 18; + repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19; + optional uint32 cavern_crawl_map_variant = 20 [default = 255]; + optional uint32 team_wager_bonus_pct = 21; + optional uint32 wager_streak_pct = 22; + repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23; + optional uint32 active_season_id = 24; + optional bool cavern_crawl_half_credit = 25; + repeated .CDOTAMatchMetadata.Team.PeriodicResourceData periodic_resources = 26; + repeated .CExtraMsgBlock extra_event_messages = 27; + } + + message FeaturedGamemodeProgress { + optional uint32 start_value = 1; + optional uint32 end_value = 2; + optional uint32 max_value = 3; + } + + message Player { + message ContractProgress { + optional uint32 guild_id = 1; + optional uint32 event_id = 2; + optional uint32 challenge_instance_id = 3; + optional uint32 challenge_parameter = 4; + optional uint32 contract_stars = 5; + optional uint32 contract_slot = 6; + optional bool completed = 7; + } + + message OverworldRewards { + optional uint32 overworld_id = 1; + optional .CMsgOverworldTokenQuantity tokens = 2; + } + + repeated int32 ability_upgrades = 2; + optional uint32 player_slot = 3; + repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5; + repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6; + optional uint32 avg_kills_x16 = 7; + optional uint32 avg_deaths_x16 = 8; + optional uint32 avg_assists_x16 = 9; + optional uint32 avg_gpm_x16 = 10; + optional uint32 avg_xpm_x16 = 11; + optional uint32 best_kills_x16 = 12; + optional uint32 best_assists_x16 = 13; + optional uint32 best_gpm_x16 = 14; + optional uint32 best_xpm_x16 = 15; + optional uint32 win_streak = 16; + optional uint32 best_win_streak = 17; + optional float fight_score = 18; + optional float farm_score = 19; + optional float support_score = 20; + optional float push_score = 21; + repeated uint32 level_up_times = 22; + repeated float graph_net_worth = 23; + repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24; + optional bool avg_stats_calibrated = 25; + repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26; + repeated .CDOTAMatchMetadata.Team.EventData event_data = 29; + repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30; + optional uint32 hero_xp = 31; + optional uint32 camps_stacked = 32; + repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33; + optional uint32 lane_selection_flags = 34; + optional uint32 rampages = 35; + optional uint32 triple_kills = 36; + optional uint32 aegis_snatched = 37; + optional uint32 rapiers_purchased = 38; + optional uint32 couriers_killed = 39; + optional uint32 net_worth_rank = 40; + optional uint32 support_gold_spent = 41; + optional uint32 observer_wards_placed = 42; + optional uint32 sentry_wards_placed = 43; + optional uint32 wards_dewarded = 44; + optional float stun_duration = 45; + optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None]; + repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48; + repeated uint32 guild_ids = 49; + repeated float graph_hero_damage = 50; + optional .DOTA_GC_TEAM team_number = 51 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional uint32 team_slot = 52; + optional .CDOTAMatchMetadata.Team.FeaturedGamemodeProgress featured_gamemode_progress = 53; + optional uint32 featured_hero_sticker_index = 54; + optional uint32 featured_hero_sticker_quality = 55; + repeated .CDOTAMatchMetadata.EconItem equipped_econ_items = 56; + optional int32 game_player_id = 57 [default = -1]; + repeated .CMsgTrackedStat player_tracked_stats = 58; + optional .CDOTAMatchMetadata.Team.Player.OverworldRewards overworld_rewards = 59; + repeated .CMsgCraftworksQuestReward craftworks_quest_rewards = 60; + } + + optional uint32 dota_team = 1; + repeated .CDOTAMatchMetadata.Team.Player players = 2; + repeated float graph_experience = 3; + repeated float graph_gold_earned = 4; + repeated float graph_net_worth = 5; + optional bool cm_first_pick = 6; + optional int32 cm_captain_player_id = 7 [default = -1]; + optional uint32 cm_penalty = 10; + repeated .CMsgTrackedStat team_tracked_stats = 11; + } + + message GuildChallengeProgress { + message IndividualProgress { + optional uint32 progress = 2; + optional uint32 player_slot = 3; + } + + optional uint32 guild_id = 1; + optional .EEvent event_id = 2 [default = EVENT_ID_NONE]; + optional uint32 challenge_instance_id = 3; + optional uint32 challenge_parameter = 4; + optional uint32 challenge_timestamp = 5; + optional uint32 challenge_progress_at_start = 6; + optional uint32 challenge_progress_accumulated = 7; + repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8; + } + + message Tip { + optional uint32 source_player_slot = 1; + optional uint32 target_player_slot = 2; + optional uint32 tip_amount = 3; + optional .EEvent event_id = 4 [default = EVENT_ID_NONE]; + } + + repeated .CDOTAMatchMetadata.Team teams = 1; + optional fixed64 lobby_id = 3; + optional fixed64 report_until_time = 4; + optional bytes event_game_custom_table = 5; + optional uint32 primary_event_id = 6; + optional .CMsgMatchMatchmakingStats matchmaking_stats = 8; + optional .CMvpData mvp_data = 9; + repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10; + optional bytes custom_post_game_table = 11; + repeated .CDOTAMatchMetadata.Tip match_tips = 12; + repeated .CMsgTrackedStat match_tracked_stats = 13; +} + +message CDOTAMatchPrivateMetadata { + message StringName { + optional uint32 id = 1; + optional string name = 2; + } + + message Team { + message Player { + message CombatSegment { + message DamageByAbility { + message ByHeroTarget { + optional int32 hero_id = 1; + optional uint32 damage = 2; + } + + optional uint32 source_unit_index = 3; + optional int32 ability_id = 1 [default = -1]; + repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2; + } + + message HealingByAbility { + message ByHeroTarget { + optional int32 hero_id = 1; + optional uint32 healing = 2; + } + + optional uint32 source_unit_index = 3; + optional int32 ability_id = 1 [default = -1]; + repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2; + } + + optional int32 game_time = 1; + repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2; + repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3; + } + + message BuffRecord { + message ByHeroTarget { + optional int32 hero_id = 1; + optional float elapsed_duration = 2; + optional bool is_hidden = 3; + } + + optional int32 buff_ability_id = 1 [default = -1]; + optional string buff_modifier_name = 3; + repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2; + } + + message GoldReceived { + optional uint32 creep = 1; + optional uint32 heroes = 2; + optional uint32 bounty_runes = 3; + optional uint32 passive = 4; + optional uint32 buildings = 5; + optional uint32 abilities = 6; + optional uint32 wards = 7; + optional uint32 other = 8; + } + + message XPReceived { + optional uint32 creep = 1; + optional uint32 heroes = 2; + optional uint32 roshan = 3; + optional uint32 tome_of_knowledge = 4; + optional uint32 outpost = 5; + optional uint32 other = 6; + optional uint32 abilities = 7; + } + + optional uint32 player_slot = 2; + optional bytes position_stream = 3; + repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4; + repeated string damage_unit_names = 5; + repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6; + repeated float graph_kills = 7; + repeated float graph_deaths = 8; + repeated float graph_assists = 9; + repeated float graph_lasthits = 10; + repeated float graph_denies = 11; + optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12; + optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13; + optional .DOTA_GC_TEAM team_number = 14 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional uint32 team_slot = 15; + } + + message Building { + optional string unit_name = 1; + optional uint32 position_quant_x = 2; + optional uint32 position_quant_y = 3; + optional float death_time = 4; + } + + optional uint32 dota_team = 1; + repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2; + repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3; + } + + repeated .CDOTAMatchPrivateMetadata.Team teams = 1; + repeated float graph_win_probability = 2; + repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3; +} diff --git a/game/shared/dota/dota_messages_mlbot.proto b/game/shared/dota/dota_messages_mlbot.proto new file mode 100644 index 00000000..af81c50f --- /dev/null +++ b/game/shared/dota/dota_messages_mlbot.proto @@ -0,0 +1,62 @@ +import "dota_gcmessages_common_bot_script.proto"; +import "dota_commonmessages.proto"; +import "dota_shared_enums.proto"; + +enum MLBot_MessageId { + mlbot_MatchMetadata = 1; + mlbot_TickBoundary = 2; + mlbot_TeamState_Radiant = 3; + mlbot_TeamState_Radiant_Delta = 4; + mlbot_TeamState_Dire = 5; + mlbot_TeamState_Dire_Delta = 6; + mlbot_PlayerCommand = 7; + mlbot_PlayerOrder = 8; +} + +message CMsgMLBotMatchMetadata { + message Player { + optional int32 player_id = 1 [default = -1]; + optional int32 team_id = 2; + optional int32 hero_id = 3; + optional int32 rank = 4; + } + + optional uint64 match_id = 1; + optional uint64 lobby_id = 2; + optional int32 lobby_type = 3 [default = -1]; + optional uint32 game_mode = 4; + repeated .CMsgMLBotMatchMetadata.Player players = 5; +} + +message CMsgMLBotTickBoundary { + optional uint32 tick_number = 1; +} + +message CMsgMLBot_PlayerOrder { + optional int32 player_id = 1 [default = -1]; + optional int32 team_id = 2; + optional int32 order_type = 3; + repeated uint32 selected_unit_handles = 4; + optional int32 target_index = 5 [default = -1]; + optional uint32 target_handle = 6 [default = 4294967295]; + optional int32 ability_index = 7 [default = -1]; + optional uint32 ability_handle = 8 [default = 4294967295]; + optional float pos_x = 9; + optional float pos_y = 10; + optional float pos_z = 11; + optional bool queue = 12; +} + +message CMsgMLBot_TeamInference { + optional int32 team_id = 1; + repeated int32 bot_player_ids = 2; + optional .CMsgBotWorldState world_state = 3; +} + +message CMsgMLBot_TeamInferenceResponse { + repeated .CMsgMLBot_PlayerOrder orders = 1; +} + +message CMsgMLBot_TeamInferenceList { + repeated .CMsgMLBot_TeamInference messages = 1; +} diff --git a/game/shared/dota/dota_modifiers.proto b/game/shared/dota/dota_modifiers.proto new file mode 100644 index 00000000..b7ac555b --- /dev/null +++ b/game/shared/dota/dota_modifiers.proto @@ -0,0 +1,53 @@ +import "networkbasetypes.proto"; + +enum DOTA_MODIFIER_ENTRY_TYPE { + DOTA_MODIFIER_ENTRY_TYPE_ACTIVE = 1; + DOTA_MODIFIER_ENTRY_TYPE_REMOVED = 2; +} + +message CDOTAModifierBuffTableEntry { + required .DOTA_MODIFIER_ENTRY_TYPE entry_type = 1 [default = DOTA_MODIFIER_ENTRY_TYPE_ACTIVE]; + required uint32 parent = 2 [default = 16777215]; + required int32 index = 3; + required int32 serial_num = 4; + optional int32 modifier_class = 5; + optional int32 ability_level = 6; + optional int32 stack_count = 7; + optional float creation_time = 8; + optional float duration = 9 [default = -1]; + optional uint32 caster = 10 [default = 16777215]; + optional uint32 ability = 11 [default = 16777215]; + optional int32 armor = 12; + optional float fade_time = 13; + optional bool subtle = 14; + optional float channel_time = 15; + optional .CMsgVector v_start = 16; + optional .CMsgVector v_end = 17; + optional string portal_loop_appear = 18; + optional string portal_loop_disappear = 19; + optional string hero_loop_appear = 20; + optional string hero_loop_disappear = 21; + optional int32 movement_speed = 22; + optional bool aura = 23; + optional int32 activity = 24; + optional int32 damage = 25; + optional int32 range = 26; + optional int32 dd_modifier_index = 27; + optional int32 dd_ability_id = 28 [default = -1]; + optional string illusion_label = 29; + optional bool active = 30; + optional string player_ids = 31; + optional string lua_name = 32; + optional int32 attack_speed = 33; + optional uint32 aura_owner = 34 [default = 16777215]; + optional int32 bonus_all_stats = 35; + optional int32 bonus_health = 36; + optional int32 bonus_mana = 37; + optional uint32 custom_entity = 38 [default = 16777215]; + optional bool aura_within_range = 39; +} + +message CDOTALuaModifierEntry { + required int32 modifier_type = 1; + required string modifier_filename = 2; +} diff --git a/game/shared/dota/dota_scenariomessages.proto b/game/shared/dota/dota_scenariomessages.proto new file mode 100644 index 00000000..84e9755c --- /dev/null +++ b/game/shared/dota/dota_scenariomessages.proto @@ -0,0 +1,227 @@ +import "dota_shared_enums.proto"; + +message CScenario_Position { + optional float x = 1; + optional float y = 2; +} + +message CScenarioGame_RoshanSpawner { + optional int32 kill_count = 1; + optional int32 state = 2; + optional float cooldown = 3; + optional int32 killer_team = 4; +} + +message CScenarioEnt_Courier { + optional int32 team_number = 1; + optional int32 owner_player_id = 2 [default = -1]; + optional float cooldown = 3 [default = -1]; +} + +message CScenarioEnt_NPC { + optional .CScenario_Position position = 1; + optional string unit_name = 2; + optional int32 team_number = 3; + optional float health_frac = 4 [default = 1]; + optional string owning_camp = 10; + optional .CScenario_Position owning_camp_position = 11; + optional string invade_goal = 20; +} + +message CScenarioEnt_SpiritBear { + optional int32 owner_id = 1 [default = -1]; + optional int32 team_id = 2; +} + +message CScenarioEnt_DroppedItem { + optional .CScenario_Position position = 1; +} + +message CMsgDotaScenario { + message EntityRef { + optional int32 player_id = 1 [default = -1]; + optional int32 neutral_stash_id = 2 [default = -1]; + optional int32 entity_idx = 3 [default = -1]; + optional bool roshan = 4 [default = false]; + optional string ability_name = 10; + } + + message Game { + optional uint64 match_id = 1; + optional int32 game_mode = 2; + optional float clock_time = 3; + optional float internal_time = 4; + optional .CScenarioGame_RoshanSpawner roshan = 5; + } + + message TeamNeutralItem { + optional string name = 1; + optional bool consumed = 2; + optional int32 tier = 3; + } + + message Team { + optional int32 team_number = 1; + repeated .CMsgDotaScenario.TeamNeutralItem neutral_items = 2; + optional int32 hero_kills = 3; + optional int32 tower_kills = 4; + optional int32 barracks_kills = 5; + optional float glyph_cooldown = 6; + optional float radar_cooldown = 7; + } + + message HeroHeroInt { + optional int32 player_id = 1 [default = -1]; + optional int32 value = 2; + } + + message HeroHeroFloat { + optional int32 player_id = 1 [default = -1]; + optional float value = 2; + } + + message DamageStatsByType { + optional int32 damage_type = 1; + optional int32 received_pre_reduction = 2; + optional int32 received_post_reduction = 3; + optional int32 outgoing_pre_reduction = 4; + optional int32 outgoing_post_reduction = 5; + } + + message HeroAbility { + optional string name = 1; + optional int32 level = 2; + } + + message Hero { + optional fixed64 steam_id = 1; + optional int32 player_id = 2 [default = -1]; + optional int32 team_id = 3; + optional string hero = 4; + optional int32 total_xp = 5; + optional int32 bkb_charges_used = 6; + optional int32 aeon_charges_used = 7; + optional int32 reliable_gold = 8; + optional int32 unreliable_gold = 9; + optional int32 total_earned_gold = 10; + optional int32 shared_gold = 11; + optional int32 hero_kill_gold = 12; + optional int32 creep_kill_gold = 13; + optional int32 neutral_kill_gold = 14; + optional int32 courier_gold = 15; + optional int32 bounty_gold = 16; + optional int32 roshan_gold = 17; + optional int32 building_gold = 18; + optional int32 other_gold = 19; + optional int32 income_gold = 26; + optional int32 ward_kill_gold = 27; + optional int32 ability_gold = 28; + optional int32 denies = 29; + optional int32 last_hits = 30; + optional int32 last_hit_streak = 31; + optional int32 last_hit_multikill = 32; + optional int32 nearby_creep_death_count = 33; + optional int32 claimed_deny_count = 34; + optional int32 claimed_miss_count = 35; + optional int32 miss_count = 36; + optional float buyback_cooldown_time = 40; + optional float buyback_gold_limit_time = 41; + optional float stun_duration = 44; + optional float healing = 45; + optional int32 tower_kills = 46; + optional int32 roshan_kills = 47; + optional int32 observer_wards_placed = 48; + optional int32 sentry_wards_placed = 49; + optional int32 creeps_stacked = 50; + optional int32 camps_stacked = 51; + optional int32 rune_pickups = 52; + optional int32 gold_spent_on_support = 53; + optional int32 hero_damage = 54; + optional int32 wards_purchased = 55; + optional int32 wards_destroyed = 56; + optional int32 gold_spent_on_consumables = 58; + optional int32 gold_spent_on_items = 59; + optional int32 gold_spent_on_buybacks = 60; + optional int32 gold_lost_to_death = 61; + optional int32 kills = 62; + optional int32 assists = 63; + optional int32 deaths = 64; + optional int32 kill_streak = 65; + optional int32 respawn_seconds = 68 [default = -1]; + optional int32 last_buyback_time = 69; + optional bool first_blood_claimed = 71; + optional bool first_blood_given = 72; + optional int32 bounty_runes = 73; + optional int32 outposts_captured = 74; + optional .CScenario_Position position = 75; + repeated .CMsgDotaScenario.HeroHeroInt enemy_kills = 150; + repeated .CMsgDotaScenario.DamageStatsByType damage_stats = 151; + repeated .CMsgDotaScenario.HeroAbility abilities = 152; + optional uint32 hero_facet = 153; + } + + message Stock { + optional string name = 1; + optional int32 team_number = 2 [default = -1]; + optional int32 player_id = 3 [default = -1]; + optional int32 current_stock = 4; + optional float cooldown = 5; + optional int32 bonus_stock = 6; + } + + message Building { + optional string entity_name = 1; + optional string entity_class = 2; + optional int32 team_id = 3; + optional bool is_destroyed = 4; + optional float health_frac = 5 [default = 1]; + } + + message Entity { + optional .CScenarioEnt_Courier courier = 1; + optional .CScenarioEnt_NPC npc = 2; + optional .CScenarioEnt_SpiritBear spirit_bear = 3; + optional .CScenarioEnt_DroppedItem dropped_item = 4; + } + + message Item { + optional string name = 1; + optional .CMsgDotaScenario.EntityRef location = 2; + optional int32 owner_id = 3 [default = -1]; + optional int32 item_slot = 4; + optional int32 neutral_drop_team = 5; + optional int32 charges = 6; + optional int32 secondary_charges = 7; + optional float lifetime = 8 [default = -1]; + optional int32 stored_rune_type = 9 [default = -1]; + } + + message Modifier { + optional string name = 1; + optional .CMsgDotaScenario.EntityRef parent = 2; + optional .CMsgDotaScenario.EntityRef caster = 3; + optional .CMsgDotaScenario.EntityRef ability = 4; + optional float duration = 5 [default = -1]; + optional float lifetime_remaining = 6 [default = 0]; + optional int32 stack_count = 7; + optional bool create_even_if_existing = 8; + optional bool create_without_caster = 9; + optional bool create_without_ability = 10; + optional int32 moonshard_consumed_bonus = 100; + optional int32 moonshard_consumed_bonus_night_vision = 101; + optional int32 wardtruesight_range = 110; + optional int32 ultimate_scepter_consumed_alchemist_bonus_all_stats = 120; + optional int32 ultimate_scepter_consumed_alchemist_bonus_health = 121; + optional int32 ultimate_scepter_consumed_alchemist_bonus_mana = 122; + } + + optional uint64 lobby_id = 1; + optional .CMsgDotaScenario.Game game = 2; + repeated .CMsgDotaScenario.Team teams = 3; + repeated .CMsgDotaScenario.Hero heroes = 4; + repeated .CMsgDotaScenario.Stock stock = 5; + repeated .CMsgDotaScenario.Building buildings = 6; + repeated .CMsgDotaScenario.Entity entities = 7; + repeated .CMsgDotaScenario.Item items = 8; + repeated .CMsgDotaScenario.Modifier modifiers = 9; +} diff --git a/game/shared/dota/dota_shared_enums.proto b/game/shared/dota/dota_shared_enums.proto new file mode 100644 index 00000000..37432cda --- /dev/null +++ b/game/shared/dota/dota_shared_enums.proto @@ -0,0 +1,844 @@ +enum DOTA_GameMode { + DOTA_GAMEMODE_NONE = 0; + DOTA_GAMEMODE_AP = 1; + DOTA_GAMEMODE_CM = 2; + DOTA_GAMEMODE_RD = 3; + DOTA_GAMEMODE_SD = 4; + DOTA_GAMEMODE_AR = 5; + DOTA_GAMEMODE_INTRO = 6; + DOTA_GAMEMODE_HW = 7; + DOTA_GAMEMODE_REVERSE_CM = 8; + DOTA_GAMEMODE_XMAS = 9; + DOTA_GAMEMODE_TUTORIAL = 10; + DOTA_GAMEMODE_MO = 11; + DOTA_GAMEMODE_LP = 12; + DOTA_GAMEMODE_POOL1 = 13; + DOTA_GAMEMODE_FH = 14; + DOTA_GAMEMODE_CUSTOM = 15; + DOTA_GAMEMODE_CD = 16; + DOTA_GAMEMODE_BD = 17; + DOTA_GAMEMODE_ABILITY_DRAFT = 18; + DOTA_GAMEMODE_EVENT = 19; + DOTA_GAMEMODE_ARDM = 20; + DOTA_GAMEMODE_1V1MID = 21; + DOTA_GAMEMODE_ALL_DRAFT = 22; + DOTA_GAMEMODE_TURBO = 23; + DOTA_GAMEMODE_MUTATION = 24; + DOTA_GAMEMODE_COACHES_CHALLENGE = 25; +} + +enum DOTA_GameState { + DOTA_GAMERULES_STATE_INIT = 0; + DOTA_GAMERULES_STATE_WAIT_FOR_PLAYERS_TO_LOAD = 1; + DOTA_GAMERULES_STATE_HERO_SELECTION = 2; + DOTA_GAMERULES_STATE_STRATEGY_TIME = 3; + DOTA_GAMERULES_STATE_PRE_GAME = 4; + DOTA_GAMERULES_STATE_GAME_IN_PROGRESS = 5; + DOTA_GAMERULES_STATE_POST_GAME = 6; + DOTA_GAMERULES_STATE_DISCONNECT = 7; + DOTA_GAMERULES_STATE_TEAM_SHOWCASE = 8; + DOTA_GAMERULES_STATE_CUSTOM_GAME_SETUP = 9; + DOTA_GAMERULES_STATE_WAIT_FOR_MAP_TO_LOAD = 10; + DOTA_GAMERULES_STATE_SCENARIO_SETUP = 11; + DOTA_GAMERULES_STATE_PLAYER_DRAFT = 12; + DOTA_GAMERULES_STATE_LAST = 13; +} + +enum DOTA_GC_TEAM { + DOTA_GC_TEAM_GOOD_GUYS = 0; + DOTA_GC_TEAM_BAD_GUYS = 1; + DOTA_GC_TEAM_BROADCASTER = 2; + DOTA_GC_TEAM_SPECTATOR = 3; + DOTA_GC_TEAM_PLAYER_POOL = 4; + DOTA_GC_TEAM_NOTEAM = 5; + DOTA_GC_TEAM_CUSTOM_1 = 6; + DOTA_GC_TEAM_CUSTOM_2 = 7; + DOTA_GC_TEAM_CUSTOM_3 = 8; + DOTA_GC_TEAM_CUSTOM_4 = 9; + DOTA_GC_TEAM_CUSTOM_5 = 10; + DOTA_GC_TEAM_CUSTOM_6 = 11; + DOTA_GC_TEAM_CUSTOM_7 = 12; + DOTA_GC_TEAM_CUSTOM_8 = 13; + DOTA_GC_TEAM_NEUTRALS = 14; +} + +enum EEvent { + EVENT_ID_NONE = 0; + EVENT_ID_DIRETIDE = 1; + EVENT_ID_SPRING_FESTIVAL = 2; + EVENT_ID_FROSTIVUS_2013 = 3; + EVENT_ID_COMPENDIUM_2014 = 4; + EVENT_ID_NEXON_PC_BANG = 5; + EVENT_ID_PWRD_DAC_2015 = 6; + EVENT_ID_NEW_BLOOM_2015 = 7; + EVENT_ID_INTERNATIONAL_2015 = 8; + EVENT_ID_FALL_MAJOR_2015 = 9; + EVENT_ID_ORACLE_PA = 10; + EVENT_ID_NEW_BLOOM_2015_PREBEAST = 11; + EVENT_ID_FROSTIVUS = 12; + EVENT_ID_WINTER_MAJOR_2016 = 13; + EVENT_ID_INTERNATIONAL_2016 = 14; + EVENT_ID_FALL_MAJOR_2016 = 15; + EVENT_ID_WINTER_MAJOR_2017 = 16; + EVENT_ID_NEW_BLOOM_2017 = 17; + EVENT_ID_INTERNATIONAL_2017 = 18; + EVENT_ID_PLUS_SUBSCRIPTION = 19; + EVENT_ID_SINGLES_DAY_2017 = 20; + EVENT_ID_FROSTIVUS_2017 = 21; + EVENT_ID_INTERNATIONAL_2018 = 22; + EVENT_ID_FROSTIVUS_2018 = 23; + EVENT_ID_NEW_BLOOM_2019 = 24; + EVENT_ID_INTERNATIONAL_2019 = 25; + EVENT_ID_NEW_PLAYER_EXPERIENCE = 26; + EVENT_ID_FROSTIVUS_2019 = 27; + EVENT_ID_NEW_BLOOM_2020 = 28; + EVENT_ID_INTERNATIONAL_2020 = 29; + EVENT_ID_TEAM_FANDOM = 30; + EVENT_ID_DIRETIDE_2020 = 31; + EVENT_ID_SPRING_2021 = 32; + EVENT_ID_FALL_2021 = 33; + EVENT_ID_TEAM_FANDOM_FALL_2021 = 34; + EVENT_ID_TEAM_2021_2022_TOUR2 = 35; + EVENT_ID_INTERNATIONAL_2022 = 36; + EVENT_ID_TEAM_2021_2022_TOUR3 = 37; + EVENT_ID_TEAM_INTERNATIONAL_2022 = 38; + EVENT_ID_PERMANENT_GRANTS = 39; + EVENT_ID_MUERTA_RELEASE_SPRING2023 = 40; + EVENT_ID_TEAM_2023_TOUR1 = 41; + EVENT_ID_TEAM_2023_TOUR2 = 42; + EVENT_ID_TEAM_2023_TOUR3 = 43; + EVENT_ID_INTERNATIONAL_2023 = 45; + EVENT_ID_10TH_ANNIVERSARY = 46; + EVENT_ID_CROWNFALL = 47; + EVENT_ID_FROSTIVUS_2023 = 48; + EVENT_ID_INTERNATIONAL_2024 = 49; + EVENT_ID_FROSTIVUS_2024 = 50; +} + +enum ERankType { + k_ERankType_Invalid = 0; + k_ERankType_Casual = 1; + k_ERankType_Ranked = 2; + k_ERankType_CasualLegacy = 3; + k_ERankType_RankedLegacy = 4; + k_ERankType_CasualGlicko = 5; + k_ERankType_RankedGlicko = 6; + k_ERankType_RankMax = 7; + k_ERankType_BehaviorPrivate = 100; + k_ERankType_BehaviorPublic = 101; + k_ERankType_Max = 102; +} + +enum DOTALeaverStatus_t { + DOTA_LEAVER_NONE = 0; + DOTA_LEAVER_DISCONNECTED = 1; + DOTA_LEAVER_DISCONNECTED_TOO_LONG = 2; + DOTA_LEAVER_ABANDONED = 3; + DOTA_LEAVER_AFK = 4; + DOTA_LEAVER_NEVER_CONNECTED = 5; + DOTA_LEAVER_NEVER_CONNECTED_TOO_LONG = 6; + DOTA_LEAVER_FAILED_TO_READY_UP = 7; + DOTA_LEAVER_DECLINED = 8; + DOTA_LEAVER_DECLINED_REQUEUE = 9; +} + +enum DOTAConnectionState_t { + DOTA_CONNECTION_STATE_UNKNOWN = 0; + DOTA_CONNECTION_STATE_NOT_YET_CONNECTED = 1; + DOTA_CONNECTION_STATE_CONNECTED = 2; + DOTA_CONNECTION_STATE_DISCONNECTED = 3; + DOTA_CONNECTION_STATE_ABANDONED = 4; + DOTA_CONNECTION_STATE_LOADING = 5; + DOTA_CONNECTION_STATE_FAILED = 6; +} + +enum Fantasy_Roles { + FANTASY_ROLE_UNDEFINED = 0; + FANTASY_ROLE_CORE = 1; + FANTASY_ROLE_SUPPORT = 2; + FANTASY_ROLE_OFFLANE = 3; + FANTASY_ROLE_MID = 4; +} + +enum Fantasy_Scoring { + FANTASY_SCORING_KILLS = 0; + FANTASY_SCORING_DEATHS = 1; + FANTASY_SCORING_CS = 2; + FANTASY_SCORING_GPM = 3; + FANTASY_SCORING_TOWER_KILLS = 4; + FANTASY_SCORING_ROSHAN_KILLS = 5; + FANTASY_SCORING_TEAMFIGHT_PARTICIPATION = 6; + FANTASY_SCORING_WARDS_PLANTED = 7; + FANTASY_SCORING_CAMPS_STACKED = 8; + FANTASY_SCORING_RUNES_GRABBED = 9; + FANTASY_SCORING_FIRST_BLOOD = 10; + FANTASY_SCORING_STUNS = 11; + FANTASY_SCORING_SMOKES_USED = 12; + FANTASY_SCORING_NEUTRAL_TOKENS_FOUND = 13; + FANTASY_SCORING_WATCHERS_TAKEN = 14; + FANTASY_SCORING_LOTUSES_GAINED = 15; + FANTASY_SCORING_TORMENTOR_KILLS = 16; + FANTASY_SCORING_COURIER_KILLS = 17; + FANTASY_SCORING_TYPES = 18; + FANTASY_SCORING_INVALID = 19; +} + +enum Fantasy_Team_Slots { + FANTASY_SLOT_NONE = 0; + FANTASY_SLOT_CORE = 1; + FANTASY_SLOT_SUPPORT = 2; + FANTASY_SLOT_ANY = 3; + FANTASY_SLOT_BENCH = 4; +} + +enum Fantasy_Selection_Mode { + FANTASY_SELECTION_INVALID = 0; + FANTASY_SELECTION_LOCKED = 1; + FANTASY_SELECTION_SHUFFLE = 2; + FANTASY_SELECTION_FREE_PICK = 3; + FANTASY_SELECTION_ENDED = 4; + FANTASY_SELECTION_PRE_SEASON = 5; + FANTASY_SELECTION_PRE_DRAFT = 6; + FANTASY_SELECTION_DRAFTING = 7; + FANTASY_SELECTION_REGULAR_SEASON = 8; + FANTASY_SELECTION_CARD_BASED = 9; +} + +enum Fantasy_Gem_Type { + FANTASY_GEM_TYPE_RUBY = 0; + FANTASY_GEM_TYPE_SAPPHIRE = 1; + FANTASY_GEM_TYPE_EMERALD = 2; +} + +enum DOTAChatChannelType_t { + DOTAChannelType_Regional = 0; + DOTAChannelType_Custom = 1; + DOTAChannelType_Party = 2; + DOTAChannelType_Lobby = 3; + DOTAChannelType_Team = 4; + DOTAChannelType_Guild = 5; + DOTAChannelType_Fantasy = 6; + DOTAChannelType_Whisper = 7; + DOTAChannelType_Console = 8; + DOTAChannelType_Tab = 9; + DOTAChannelType_Invalid = 10; + DOTAChannelType_GameAll = 11; + DOTAChannelType_GameAllies = 12; + DOTAChannelType_GameSpectator = 13; + DOTAChannelType_GameCoaching = 14; + DOTAChannelType_Cafe = 15; + DOTAChannelType_CustomGame = 16; + DOTAChannelType_Private = 17; + DOTAChannelType_PostGame = 18; + DOTAChannelType_BattleCup = 19; + DOTAChannelType_HLTVSpectator = 20; + DOTAChannelType_GameEvents = 21; + DOTAChannelType_Trivia = 22; + DOTAChannelType_NewPlayer = 23; + DOTAChannelType_PrivateCoaching = 24; +} + +enum EChatSpecialPrivileges { + k_EChatSpecialPrivileges_None = 0; + k_EChatSpecialPrivileges_Moderator = 1; + k_EChatSpecialPrivileges_SuperModerator = 2; +} + +enum DOTACommType_t { + DOTA_COMM_TYPE_NONE = 0; + DOTA_COMM_TYPE_PING = 1; + DOTA_COMM_TYPE_CHATWHEEL = 2; + DOTA_COMM_TYPE_TIP = 3; + DOTA_COMM_TYPE_TEXT = 4; + DOTA_COMM_TYPE_SHOWCASE = 5; + DOTA_COMM_TYPE_VOICE = 6; + DOTA_COMM_TYPE_ALLY_ABILITY = 7; + DOTA_COMM_TYPE_PAUSE = 8; + DOTA_COMM_TYPE_COACHING = 9; + DOTA_COMM_TYPE_NOCOOLDOWN = 10; + DOTA_COMM_TYPE_RANKEDMATCHMAKE = 11; + DOTA_COMM_TYPE_DROPS = 12; + DOTA_COMM_TYPE_NEWPLAYER_EXPERT = 13; + DOTA_COMM_TYPE_COACHED = 14; + DOTA_COMM_TYPE_MAPDRAWING = 15; +} + +enum DOTACommLevel_t { + DOTA_COMM_LEVEL_NONE = 0; + DOTA_COMM_LEVEL_COOLDOWN = 1; + DOTA_COMM_LEVEL_PINGS = 2; + DOTA_COMM_LEVEL_MAPDRAWING = 3; + DOTA_COMM_LEVEL_CHAT = 4; + DOTA_COMM_LEVEL_TIPPING = 5; + DOTA_COMM_LEVEL_VOICE = 6; + DOTA_COMM_LEVEL_ALLIED_ABILITY = 7; +} + +enum DOTABehaviorLevel_t { + DOTA_BEHAVIOR_LEVEL_NONE = 0; + DOTA_BEHAVIOR_LEVEL_RANKED_ALLOWED = 1; + DOTA_BEHAVIOR_LEVEL_PAUSING = 2; + DOTA_BEHAVIOR_LEVEL_DROPS = 3; + DOTA_BEHAVIOR_LEVEL_COACHING = 4; +} + +enum EProfileCardSlotType { + k_EProfileCardSlotType_Empty = 0; + k_EProfileCardSlotType_Stat = 1; + k_EProfileCardSlotType_Trophy = 2; + k_EProfileCardSlotType_Item = 3; + k_EProfileCardSlotType_Hero = 4; + k_EProfileCardSlotType_Emoticon = 5; + k_EProfileCardSlotType_Team = 6; +} + +enum EMatchGroupServerStatus { + k_EMatchGroupServerStatus_OK = 0; + k_EMatchGroupServerStatus_LimitedAvailability = 1; + k_EMatchGroupServerStatus_Offline = 2; +} + +enum DOTA_CM_PICK { + DOTA_CM_RANDOM = 0; + DOTA_CM_GOOD_GUYS = 1; + DOTA_CM_BAD_GUYS = 2; +} + +enum DOTALowPriorityBanType { + DOTA_LOW_PRIORITY_BAN_ABANDON = 0; + DOTA_LOW_PRIORITY_BAN_REPORTS = 1; + DOTA_LOW_PRIORITY_BAN_SECONDARY_ABANDON = 2; + DOTA_LOW_PRIORITY_BAN_PRE_GAME_ROLE = 3; +} + +enum DOTALobbyReadyState { + DOTALobbyReadyState_UNDECLARED = 0; + DOTALobbyReadyState_ACCEPTED = 1; + DOTALobbyReadyState_DECLINED = 2; + DOTALobbyReadyState_DECLINED_REQUEUE = 3; +} + +enum DOTAJoinLobbyResult { + DOTA_JOIN_RESULT_SUCCESS = 0; + DOTA_JOIN_RESULT_ALREADY_IN_GAME = 1; + DOTA_JOIN_RESULT_INVALID_LOBBY = 2; + DOTA_JOIN_RESULT_INCORRECT_PASSWORD = 3; + DOTA_JOIN_RESULT_ACCESS_DENIED = 4; + DOTA_JOIN_RESULT_GENERIC_ERROR = 5; + DOTA_JOIN_RESULT_INCORRECT_VERSION = 6; + DOTA_JOIN_RESULT_IN_TEAM_PARTY = 7; + DOTA_JOIN_RESULT_NO_LOBBY_FOUND = 8; + DOTA_JOIN_RESULT_LOBBY_FULL = 9; + DOTA_JOIN_RESULT_CUSTOM_GAME_INCORRECT_VERSION = 10; + DOTA_JOIN_RESULT_TIMEOUT = 11; + DOTA_JOIN_RESULT_CUSTOM_GAME_COOLDOWN = 12; + DOTA_JOIN_RESULT_BUSY = 13; + DOTA_JOIN_RESULT_NO_PLAYTIME = 14; +} + +enum DOTASelectionPriorityRules { + k_DOTASelectionPriorityRules_Manual = 0; + k_DOTASelectionPriorityRules_Automatic = 1; +} + +enum DOTASelectionPriorityChoice { + k_DOTASelectionPriorityChoice_Invalid = 0; + k_DOTASelectionPriorityChoice_FirstPick = 1; + k_DOTASelectionPriorityChoice_SecondPick = 2; + k_DOTASelectionPriorityChoice_Radiant = 3; + k_DOTASelectionPriorityChoice_Dire = 4; +} + +enum DOTAMatchVote { + DOTAMatchVote_INVALID = 0; + DOTAMatchVote_POSITIVE = 1; + DOTAMatchVote_NEGATIVE = 2; +} + +enum DOTALobbyVisibility { + DOTALobbyVisibility_Public = 0; + DOTALobbyVisibility_Friends = 1; + DOTALobbyVisibility_Unlisted = 2; +} + +enum EDOTAPlayerMMRType { + k_EDOTAPlayerMMRType_Invalid = 0; + k_EDOTAPlayerMMRType_GeneralHidden = 1; + k_EDOTAPlayerMMRType_GeneralCompetitive = 3; +} + +enum EDOTAMMRBoostType { + k_EDOTAMMRBoostType_None = 0; + k_EDOTAMMRBoostType_Leader = 1; + k_EDOTAMMRBoostType_Follower = 2; +} + +enum MatchType { + MATCH_TYPE_CASUAL = 0; + MATCH_TYPE_COOP_BOTS = 1; + MATCH_TYPE_COMPETITIVE = 4; + MATCH_TYPE_WEEKEND_TOURNEY = 5; + MATCH_TYPE_EVENT = 7; + MATCH_TYPE_COACHES_CHALLENGE = 12; + MATCH_TYPE_NEW_PLAYER_POOL = 14; +} + +enum DOTABotDifficulty { + BOT_DIFFICULTY_PASSIVE = 0; + BOT_DIFFICULTY_EASY = 1; + BOT_DIFFICULTY_MEDIUM = 2; + BOT_DIFFICULTY_HARD = 3; + BOT_DIFFICULTY_UNFAIR = 4; + BOT_DIFFICULTY_INVALID = 5; + BOT_DIFFICULTY_EXTRA1 = 6; + BOT_DIFFICULTY_EXTRA2 = 7; + BOT_DIFFICULTY_EXTRA3 = 8; + BOT_DIFFICULTY_NPX = 9; +} + +enum DOTA_BOT_MODE { + DOTA_BOT_MODE_NONE = 0; + DOTA_BOT_MODE_LANING = 1; + DOTA_BOT_MODE_ATTACK = 2; + DOTA_BOT_MODE_ROAM = 3; + DOTA_BOT_MODE_RETREAT = 4; + DOTA_BOT_MODE_SECRET_SHOP = 5; + DOTA_BOT_MODE_SIDE_SHOP = 6; + DOTA_BOT_MODE_RUNE = 7; + DOTA_BOT_MODE_PUSH_TOWER_TOP = 8; + DOTA_BOT_MODE_PUSH_TOWER_MID = 9; + DOTA_BOT_MODE_PUSH_TOWER_BOT = 10; + DOTA_BOT_MODE_DEFEND_TOWER_TOP = 11; + DOTA_BOT_MODE_DEFEND_TOWER_MID = 12; + DOTA_BOT_MODE_DEFEND_TOWER_BOT = 13; + DOTA_BOT_MODE_ASSEMBLE = 14; + DOTA_BOT_MODE_ASSEMBLE_WITH_HUMANS = 15; + DOTA_BOT_MODE_TEAM_ROAM = 16; + DOTA_BOT_MODE_FARM = 17; + DOTA_BOT_MODE_DEFEND_ALLY = 18; + DOTA_BOT_MODE_EVASIVE_MANEUVERS = 19; + DOTA_BOT_MODE_ROSHAN = 20; + DOTA_BOT_MODE_ITEM = 21; + DOTA_BOT_MODE_WARD = 22; + DOTA_BOT_MODE_COMPANION = 23; + DOTA_BOT_MODE_TUTORIAL_BOSS = 24; + DOTA_BOT_MODE_MINION = 25; + DOTA_BOT_MODE_OUTPOST = 26; +} + +enum MatchLanguages { + MATCH_LANGUAGE_INVALID = 0; + MATCH_LANGUAGE_ENGLISH = 1; + MATCH_LANGUAGE_RUSSIAN = 2; + MATCH_LANGUAGE_CHINESE = 3; + MATCH_LANGUAGE_KOREAN = 4; + MATCH_LANGUAGE_SPANISH = 5; + MATCH_LANGUAGE_PORTUGUESE = 6; + MATCH_LANGUAGE_ENGLISH2 = 7; +} + +enum ETourneyQueueDeadlineState { + k_ETourneyQueueDeadlineState_Normal = 0; + k_ETourneyQueueDeadlineState_Missed = 1; + k_ETourneyQueueDeadlineState_ExpiredOK = 2; + k_ETourneyQueueDeadlineState_SeekingBye = 3; + k_ETourneyQueueDeadlineState_EligibleForRefund = 4; + k_ETourneyQueueDeadlineState_NA = -1; + k_ETourneyQueueDeadlineState_ExpiringSoon = 101; +} + +enum EMatchOutcome { + k_EMatchOutcome_Unknown = 0; + k_EMatchOutcome_RadVictory = 2; + k_EMatchOutcome_DireVictory = 3; + k_EMatchOutcome_NeutralVictory = 4; + k_EMatchOutcome_NoTeamWinner = 5; + k_EMatchOutcome_Custom1Victory = 6; + k_EMatchOutcome_Custom2Victory = 7; + k_EMatchOutcome_Custom3Victory = 8; + k_EMatchOutcome_Custom4Victory = 9; + k_EMatchOutcome_Custom5Victory = 10; + k_EMatchOutcome_Custom6Victory = 11; + k_EMatchOutcome_Custom7Victory = 12; + k_EMatchOutcome_Custom8Victory = 13; + k_EMatchOutcome_NotScored_PoorNetworkConditions = 64; + k_EMatchOutcome_NotScored_Leaver = 65; + k_EMatchOutcome_NotScored_ServerCrash = 66; + k_EMatchOutcome_NotScored_NeverStarted = 67; + k_EMatchOutcome_NotScored_Canceled = 68; + k_EMatchOutcome_NotScored_Suspicious = 69; +} + +enum ELaneType { + LANE_TYPE_UNKNOWN = 0; + LANE_TYPE_SAFE = 1; + LANE_TYPE_OFF = 2; + LANE_TYPE_MID = 3; + LANE_TYPE_JUNGLE = 4; + LANE_TYPE_ROAM = 5; +} + +enum EBadgeType { + k_EBadgeType_Invalid = 0; + k_EBadgeType_TI7_Midweek = 1; + k_EBadgeType_TI7_Finals = 2; + k_EBadgeType_TI7_AllEvent = 3; + k_EBadgeType_TI8_Midweek = 4; + k_EBadgeType_TI8_Finals = 5; + k_EBadgeType_TI8_AllEvent = 6; + k_EBadgeType_TI10 = 7; + k_EBadgeType_TI11_PlayoffsDay1 = 8; + k_EBadgeType_TI11_PlayoffsDay2 = 9; + k_EBadgeType_TI11_PlayoffsDay3 = 10; + k_EBadgeType_TI11_PlayoffsDay4 = 11; + k_EBadgeType_TI11_FinalsWeekend = 12; + k_EBadgeType_TI12_PlayoffsDay1 = 13; + k_EBadgeType_TI12_PlayoffsDay2 = 14; + k_EBadgeType_TI12_PlayoffsDay3 = 15; + k_EBadgeType_TI12_FinalsWeekend = 16; + k_EBadgeType_TI12_Special = 17; + k_EBadgeType_TI13_FinalsDay1 = 18; + k_EBadgeType_TI13_FinalsDay2 = 19; + k_EBadgeType_TI13_FinalsDay3 = 20; + k_EBadgeType_TI13_Special = 21; +} + +enum ELeagueStatus { + LEAGUE_STATUS_UNSET = 0; + LEAGUE_STATUS_UNSUBMITTED = 1; + LEAGUE_STATUS_SUBMITTED = 2; + LEAGUE_STATUS_ACCEPTED = 3; + LEAGUE_STATUS_REJECTED = 4; + LEAGUE_STATUS_CONCLUDED = 5; + LEAGUE_STATUS_DELETED = 6; +} + +enum ELeagueRegion { + LEAGUE_REGION_UNSET = 0; + LEAGUE_REGION_NA = 1; + LEAGUE_REGION_SA = 2; + LEAGUE_REGION_WEU = 3; + LEAGUE_REGION_EEU = 4; + LEAGUE_REGION_CHINA = 5; + LEAGUE_REGION_SEA = 6; +} + +enum ELeagueTier { + LEAGUE_TIER_UNSET = 0; + LEAGUE_TIER_AMATEUR = 1; + LEAGUE_TIER_PROFESSIONAL = 2; + LEAGUE_TIER_MINOR = 3; + LEAGUE_TIER_MAJOR = 4; + LEAGUE_TIER_INTERNATIONAL = 5; + LEAGUE_TIER_DPC_QUALIFIER = 6; + LEAGUE_TIER_DPC_LEAGUE_QUALIFIER = 7; + LEAGUE_TIER_DPC_LEAGUE = 8; + LEAGUE_TIER_DPC_LEAGUE_FINALS = 9; +} + +enum ELeagueTierCategory { + LEAGUE_TIER_CATEGORY_AMATEUR = 1; + LEAGUE_TIER_CATEGORY_PROFESSIONAL = 2; + LEAGUE_TIER_CATEGORY_DPC = 3; +} + +enum ELeagueDivision { + LEAGUE_DIVISION_UNSET = 0; + LEAGUE_DIVISION_I = 1; + LEAGUE_DIVISION_II = 2; +} + +enum ELeagueBroadcastProvider { + LEAGUE_BROADCAST_UNKNOWN = 0; + LEAGUE_BROADCAST_STEAM = 1; + LEAGUE_BROADCAST_TWITCH = 2; + LEAGUE_BROADCAST_YOUTUBE = 3; + LEAGUE_BROADCAST_OTHER = 100; +} + +enum ELeaguePhase { + LEAGUE_PHASE_UNSET = 0; + LEAGUE_PHASE_REGIONAL_QUALIFIER = 1; + LEAGUE_PHASE_GROUP_STAGE = 2; + LEAGUE_PHASE_MAIN_EVENT = 3; +} + +enum ELeagueAuditAction { + LEAGUE_AUDIT_ACTION_INVALID = 0; + LEAGUE_AUDIT_ACTION_LEAGUE_CREATE = 1; + LEAGUE_AUDIT_ACTION_LEAGUE_EDIT = 2; + LEAGUE_AUDIT_ACTION_LEAGUE_DELETE = 3; + LEAGUE_AUDIT_ACTION_LEAGUE_ADMIN_ADD = 4; + LEAGUE_AUDIT_ACTION_LEAGUE_ADMIN_REVOKE = 5; + LEAGUE_AUDIT_ACTION_LEAGUE_ADMIN_PROMOTE = 6; + LEAGUE_AUDIT_ACTION_LEAGUE_STREAM_ADD = 7; + LEAGUE_AUDIT_ACTION_LEAGUE_STREAM_REMOVE = 8; + LEAGUE_AUDIT_ACTION_LEAGUE_IMAGE_UPDATED = 9; + LEAGUE_AUDIT_ACTION_LEAGUE_MESSAGE_ADDED = 10; + LEAGUE_AUDIT_ACTION_LEAGUE_SUBMITTED = 11; + LEAGUE_AUDIT_ACTION_LEAGUE_SET_PRIZE_POOL = 12; + LEAGUE_AUDIT_ACTION_LEAGUE_ADD_PRIZE_POOL_ITEM = 13; + LEAGUE_AUDIT_ACTION_LEAGUE_REMOVE_PRIZE_POOL_ITEM = 14; + LEAGUE_AUDIT_ACTION_LEAGUE_MATCH_START = 15; + LEAGUE_AUDIT_ACTION_LEAGUE_MATCH_END = 16; + LEAGUE_AUDIT_ACTION_LEAGUE_ADD_INVITED_TEAM = 17; + LEAGUE_AUDIT_ACTION_LEAGUE_REMOVE_INVITED_TEAM = 18; + LEAGUE_AUDIT_ACTION_LEAGUE_STATUS_CHANGED = 19; + LEAGUE_AUDIT_ACTION_LEAGUE_STREAM_EDIT = 20; + LEAGUE_AUDIT_ACTION_LEAGUE_TEAM_SWAP = 21; + LEAGUE_AUDIT_ACTION_NODEGROUP_CREATE = 100; + LEAGUE_AUDIT_ACTION_NODEGROUP_DESTROY = 101; + LEAGUE_AUDIT_ACTION_NODEGROUP_ADD_TEAM = 102; + LEAGUE_AUDIT_ACTION_NODEGROUP_REMOVE_TEAM = 103; + LEAGUE_AUDIT_ACTION_NODEGROUP_SET_ADVANCING = 104; + LEAGUE_AUDIT_ACTION_NODEGROUP_EDIT = 105; + LEAGUE_AUDIT_ACTION_NODEGROUP_POPULATE = 106; + LEAGUE_AUDIT_ACTION_NODEGROUP_COMPLETED = 107; + LEAGUE_AUDIT_ACTION_NODEGROUP_SET_SECONDARY_ADVANCING = 108; + LEAGUE_AUDIT_ACTION_NODEGROUP_SET_TERTIARY_ADVANCING = 109; + LEAGUE_AUDIT_ACTION_NODE_CREATE = 200; + LEAGUE_AUDIT_ACTION_NODE_DESTROY = 201; + LEAGUE_AUDIT_ACTION_NODE_AUTOCREATE = 202; + LEAGUE_AUDIT_ACTION_NODE_SET_TEAM = 203; + LEAGUE_AUDIT_ACTION_NODE_SET_SERIES_ID = 204; + LEAGUE_AUDIT_ACTION_NODE_SET_ADVANCING = 205; + LEAGUE_AUDIT_ACTION_NODE_SET_TIME = 206; + LEAGUE_AUDIT_ACTION_NODE_MATCH_COMPLETED = 207; + LEAGUE_AUDIT_ACTION_NODE_COMPLETED = 208; + LEAGUE_AUDIT_ACTION_NODE_EDIT = 209; +} + +enum DOTA_COMBATLOG_TYPES { + DOTA_COMBATLOG_INVALID = -1; + DOTA_COMBATLOG_DAMAGE = 0; + DOTA_COMBATLOG_HEAL = 1; + DOTA_COMBATLOG_MODIFIER_ADD = 2; + DOTA_COMBATLOG_MODIFIER_REMOVE = 3; + DOTA_COMBATLOG_DEATH = 4; + DOTA_COMBATLOG_ABILITY = 5; + DOTA_COMBATLOG_ITEM = 6; + DOTA_COMBATLOG_LOCATION = 7; + DOTA_COMBATLOG_GOLD = 8; + DOTA_COMBATLOG_GAME_STATE = 9; + DOTA_COMBATLOG_XP = 10; + DOTA_COMBATLOG_PURCHASE = 11; + DOTA_COMBATLOG_BUYBACK = 12; + DOTA_COMBATLOG_ABILITY_TRIGGER = 13; + DOTA_COMBATLOG_PLAYERSTATS = 14; + DOTA_COMBATLOG_MULTIKILL = 15; + DOTA_COMBATLOG_KILLSTREAK = 16; + DOTA_COMBATLOG_TEAM_BUILDING_KILL = 17; + DOTA_COMBATLOG_FIRST_BLOOD = 18; + DOTA_COMBATLOG_MODIFIER_STACK_EVENT = 19; + DOTA_COMBATLOG_NEUTRAL_CAMP_STACK = 20; + DOTA_COMBATLOG_PICKUP_RUNE = 21; + DOTA_COMBATLOG_REVEALED_INVISIBLE = 22; + DOTA_COMBATLOG_HERO_SAVED = 23; + DOTA_COMBATLOG_MANA_RESTORED = 24; + DOTA_COMBATLOG_HERO_LEVELUP = 25; + DOTA_COMBATLOG_BOTTLE_HEAL_ALLY = 26; + DOTA_COMBATLOG_ENDGAME_STATS = 27; + DOTA_COMBATLOG_INTERRUPT_CHANNEL = 28; + DOTA_COMBATLOG_ALLIED_GOLD = 29; + DOTA_COMBATLOG_AEGIS_TAKEN = 30; + DOTA_COMBATLOG_MANA_DAMAGE = 31; + DOTA_COMBATLOG_PHYSICAL_DAMAGE_PREVENTED = 32; + DOTA_COMBATLOG_UNIT_SUMMONED = 33; + DOTA_COMBATLOG_ATTACK_EVADE = 34; + DOTA_COMBATLOG_TREE_CUT = 35; + DOTA_COMBATLOG_SUCCESSFUL_SCAN = 36; + DOTA_COMBATLOG_END_KILLSTREAK = 37; + DOTA_COMBATLOG_BLOODSTONE_CHARGE = 38; + DOTA_COMBATLOG_CRITICAL_DAMAGE = 39; + DOTA_COMBATLOG_SPELL_ABSORB = 40; + DOTA_COMBATLOG_UNIT_TELEPORTED = 41; + DOTA_COMBATLOG_KILL_EATER_EVENT = 42; + DOTA_COMBATLOG_NEUTRAL_ITEM_EARNED = 43; + DOTA_COMBATLOG_STAT_TRACKER_PLAYER = 44; +} + +enum EDPCFavoriteType { + FAVORITE_TYPE_ALL = 0; + FAVORITE_TYPE_PLAYER = 1; + FAVORITE_TYPE_TEAM = 2; + FAVORITE_TYPE_LEAGUE = 3; +} + +enum EDPCPushNotification { + DPC_PUSH_NOTIFICATION_MATCH_STARTING = 1; + DPC_PUSH_NOTIFICATION_PLAYER_LEFT_TEAM = 10; + DPC_PUSH_NOTIFICATION_PLAYER_JOINED_TEAM = 11; + DPC_PUSH_NOTIFICATION_PLAYER_JOINED_TEAM_AS_COACH = 12; + DPC_PUSH_NOTIFICATION_PLAYER_LEFT_TEAM_AS_COACH = 13; + DPC_PUSH_NOTIFICATION_LEAGUE_RESULT = 20; + DPC_PUSH_NOTIFICATION_PREDICTION_MATCHES_AVAILABLE = 30; + DPC_PUSH_NOTIFICATION_PREDICTION_RESULT = 31; + DPC_PUSH_NOTIFICATION_FANTASY_PLAYER_CLEARED = 40; + DPC_PUSH_NOTIFICATION_FANTASY_DAILY_SUMMARY = 41; + DPC_PUSH_NOTIFICATION_FANTASY_FINAL_RESULTS = 42; +} + +enum EEventActionScoreMode { + k_eEventActionScoreMode_Add = 0; + k_eEventActionScoreMode_Min = 1; +} + +enum EPlayerChallengeHistoryType { + k_EPlayerChallengeHistoryType_Invalid = 0; + k_EPlayerChallengeHistoryType_KillEater = 1; + k_EPlayerChallengeHistoryType_DotaPlusRelic = 2; + k_EPlayerChallengeHistoryType_DotaPlusHeroPlayerChallenge = 3; + k_EPlayerChallengeHistoryType_InGameEventChallenge = 4; + k_EPlayerChallengeHistoryType_GuildContract = 5; +} + +enum EOverwatchReportReason { + k_EOverwatchReportReason_Unknown = 0; + k_EOverwatchReportReason_Cheating = 1; + k_EOverwatchReportReason_Feeding = 2; + k_EOverwatchReportReason_Griefing = 3; + k_EOverwatchReportReason_Suspicious = 4; + k_EOverwatchReportReason_AbilityAbuse = 5; +} + +enum ECandyShopUpgrade { + k_ECandyShopUpgradeInvalid = -1; + k_ECandyShopUpgrade_InventorySize = 0; + k_ECandyShopUpgrade_RewardShelf = 1; + k_ECandyShopUpgrade_ExtraExchangeRecipe = 2; +} + +enum EItemSuggestPreference { + k_EItemSuggestPreference_None = 0; + k_EItemSuggestPreference_Liked = 1; + k_EItemSuggestPreference_Disliked = 2; +} + +message CDOTAClientHardwareSpecs { + optional uint32 logical_processors = 1; + optional fixed64 cpu_cycles_per_second = 2; + optional fixed64 total_physical_memory = 3; + optional bool is_64_bit_os = 4; + optional uint64 upload_measurement = 5; + optional bool prefer_not_host = 6; + repeated uint32 crc = 7; +} + +message CDOTASaveGame { + message Player { + optional .DOTA_GC_TEAM team = 1 [default = DOTA_GC_TEAM_GOOD_GUYS]; + optional string name = 2; + optional string hero = 3; + } + + message SaveInstance { + message PlayerPositions { + optional float x = 1; + optional float y = 2; + } + + optional uint32 game_time = 2; + optional uint32 team1_score = 3; + optional uint32 team2_score = 4; + repeated .CDOTASaveGame.SaveInstance.PlayerPositions player_positions = 5; + optional uint32 save_id = 6; + optional uint32 save_time = 7; + } + + optional uint64 match_id = 5; + optional uint32 save_time = 2; + repeated .CDOTASaveGame.Player players = 3; + repeated .CDOTASaveGame.SaveInstance save_instances = 4; +} + +message CMsgDOTACombatLogEntry { + optional .DOTA_COMBATLOG_TYPES type = 1 [default = DOTA_COMBATLOG_INVALID]; + optional uint32 target_name = 2; + optional uint32 target_source_name = 3; + optional uint32 attacker_name = 4; + optional uint32 damage_source_name = 5; + optional uint32 inflictor_name = 6; + optional bool is_attacker_illusion = 7; + optional bool is_attacker_hero = 8; + optional bool is_target_illusion = 9; + optional bool is_target_hero = 10; + optional bool is_visible_radiant = 11; + optional bool is_visible_dire = 12; + optional uint32 value = 13; + optional int32 health = 14; + optional float timestamp = 15; + optional float stun_duration = 16; + optional float slow_duration = 17; + optional bool is_ability_toggle_on = 18; + optional bool is_ability_toggle_off = 19; + optional uint32 ability_level = 20; + optional float location_x = 21; + optional float location_y = 22; + optional uint32 gold_reason = 23; + optional float timestamp_raw = 24; + optional float modifier_duration = 25; + optional uint32 xp_reason = 26; + optional uint32 last_hits = 27; + optional uint32 attacker_team = 28; + optional uint32 target_team = 29; + optional uint32 obs_wards_placed = 30; + optional uint32 assist_player0 = 31; + optional uint32 assist_player1 = 32; + optional uint32 assist_player2 = 33; + optional uint32 assist_player3 = 34; + optional uint32 stack_count = 35; + optional bool hidden_modifier = 36; + optional bool is_target_building = 37; + optional uint32 neutral_camp_type = 38; + optional uint32 rune_type = 39; + repeated int32 assist_players = 40; + optional bool is_heal_save = 41; + optional bool is_ultimate_ability = 42; + optional uint32 attacker_hero_level = 43; + optional uint32 target_hero_level = 44; + optional uint32 xpm = 45; + optional uint32 gpm = 46; + optional uint32 event_location = 47; + optional bool target_is_self = 48; + optional uint32 damage_type = 49; + optional bool invisibility_modifier = 50; + optional uint32 damage_category = 51; + optional uint32 networth = 52; + optional uint32 building_type = 53; + optional float modifier_elapsed_duration = 54; + optional bool silence_modifier = 55; + optional bool heal_from_lifesteal = 56; + optional bool modifier_purged = 57; + optional bool spell_evaded = 58; + optional bool motion_controller_modifier = 59; + optional bool long_range_kill = 60; + optional uint32 modifier_purge_ability = 61; + optional uint32 modifier_purge_npc = 62; + optional bool root_modifier = 63; + optional uint32 total_unit_death_count = 64; + optional bool aura_modifier = 65; + optional bool armor_debuff_modifier = 66; + optional bool no_physical_damage_modifier = 67; + optional uint32 modifier_ability = 68; + optional bool modifier_hidden = 69; + optional bool inflictor_is_stolen_ability = 70; + optional uint32 kill_eater_event = 71; + optional uint32 unit_status_label = 72; + optional bool spell_generated_attack = 73; + optional bool at_night_time = 74; + optional bool attacker_has_scepter = 75; + optional uint32 neutral_camp_team = 76; + optional float regenerated_health = 77; + optional bool will_reincarnate = 78; + optional bool uses_charges = 79; + optional uint32 tracked_stat_id = 80; +} + +message CMsgPendingEventAward { + optional .EEvent event_id = 1 [default = EVENT_ID_NONE]; + optional uint32 action_id = 2; + optional uint32 num_to_grant = 3; + optional .EEventActionScoreMode score_mode = 4 [default = k_eEventActionScoreMode_Add]; + optional uint32 audit_action = 5; + optional uint64 audit_data = 6; +} diff --git a/game/shared/dota/dota_usercmd.proto b/game/shared/dota/dota_usercmd.proto new file mode 100644 index 00000000..49c4ad72 --- /dev/null +++ b/game/shared/dota/dota_usercmd.proto @@ -0,0 +1,15 @@ +import "networkbasetypes.proto"; +import "usercmd.proto"; + +message CDota2UserCmdPB { + optional .CBaseUserCmdPB base = 1; + optional int32 spectator_query_unit_entindex = 2; + optional .CMsgVector crosshairtrace = 3; + optional int32 cameraposition_x = 4; + optional int32 cameraposition_y = 5; + optional uint32 clickbehavior = 6; + optional uint32 statspanel = 7; + optional uint32 shoppanel = 8; + optional uint32 stats_dropdown = 9; + optional uint32 stats_dropdown_sort = 10; +} diff --git a/game/shared/dota/dota_usermessages.proto b/game/shared/dota/dota_usermessages.proto new file mode 100644 index 00000000..da308902 --- /dev/null +++ b/game/shared/dota/dota_usermessages.proto @@ -0,0 +1,1669 @@ +import "networkbasetypes.proto"; +import "dota_shared_enums.proto"; +import "dota_commonmessages.proto"; + +enum EDotaUserMessages { + DOTA_UM_AddUnitToSelection = 464; + DOTA_UM_AIDebugLine = 465; + DOTA_UM_ChatEvent = 466; + DOTA_UM_CombatHeroPositions = 467; + DOTA_UM_CombatLogData = 468; + DOTA_UM_CombatLogBulkData = 470; + DOTA_UM_CreateLinearProjectile = 471; + DOTA_UM_DestroyLinearProjectile = 472; + DOTA_UM_DodgeTrackingProjectiles = 473; + DOTA_UM_GlobalLightColor = 474; + DOTA_UM_GlobalLightDirection = 475; + DOTA_UM_InvalidCommand = 476; + DOTA_UM_LocationPing = 477; + DOTA_UM_MapLine = 478; + DOTA_UM_MiniKillCamInfo = 479; + DOTA_UM_MinimapDebugPoint = 480; + DOTA_UM_MinimapEvent = 481; + DOTA_UM_NevermoreRequiem = 482; + DOTA_UM_OverheadEvent = 483; + DOTA_UM_SetNextAutobuyItem = 484; + DOTA_UM_SharedCooldown = 485; + DOTA_UM_SpectatorPlayerClick = 486; + DOTA_UM_TutorialTipInfo = 487; + DOTA_UM_UnitEvent = 488; + DOTA_UM_ParticleManager = 489; + DOTA_UM_BotChat = 490; + DOTA_UM_HudError = 491; + DOTA_UM_ItemPurchased = 492; + DOTA_UM_Ping = 493; + DOTA_UM_ItemFound = 494; + DOTA_UM_CharacterSpeakConcept = 495; + DOTA_UM_SwapVerify = 496; + DOTA_UM_WorldLine = 497; + DOTA_UM_TournamentDrop = 498; + DOTA_UM_ItemAlert = 499; + DOTA_UM_HalloweenDrops = 500; + DOTA_UM_ChatWheel = 501; + DOTA_UM_ReceivedXmasGift = 502; + DOTA_UM_UpdateSharedContent = 503; + DOTA_UM_TutorialRequestExp = 504; + DOTA_UM_TutorialPingMinimap = 505; + DOTA_UM_GamerulesStateChanged = 506; + DOTA_UM_ShowSurvey = 507; + DOTA_UM_TutorialFade = 508; + DOTA_UM_AddQuestLogEntry = 509; + DOTA_UM_SendStatPopup = 510; + DOTA_UM_TutorialFinish = 511; + DOTA_UM_SendRoshanPopup = 512; + DOTA_UM_SendGenericToolTip = 513; + DOTA_UM_SendFinalGold = 514; + DOTA_UM_CustomMsg = 515; + DOTA_UM_CoachHUDPing = 516; + DOTA_UM_ClientLoadGridNav = 517; + DOTA_UM_TE_Projectile = 518; + DOTA_UM_TE_ProjectileLoc = 519; + DOTA_UM_TE_DotaBloodImpact = 520; + DOTA_UM_TE_UnitAnimation = 521; + DOTA_UM_TE_UnitAnimationEnd = 522; + DOTA_UM_AbilityPing = 523; + DOTA_UM_ShowGenericPopup = 524; + DOTA_UM_VoteStart = 525; + DOTA_UM_VoteUpdate = 526; + DOTA_UM_VoteEnd = 527; + DOTA_UM_BoosterState = 528; + DOTA_UM_WillPurchaseAlert = 529; + DOTA_UM_TutorialMinimapPosition = 530; + DOTA_UM_AbilitySteal = 532; + DOTA_UM_CourierKilledAlert = 533; + DOTA_UM_EnemyItemAlert = 534; + DOTA_UM_StatsMatchDetails = 535; + DOTA_UM_MiniTaunt = 536; + DOTA_UM_BuyBackStateAlert = 537; + DOTA_UM_SpeechBubble = 538; + DOTA_UM_CustomHeaderMessage = 539; + DOTA_UM_QuickBuyAlert = 540; + DOTA_UM_StatsHeroDetails = 541; + DOTA_UM_PredictionResult = 542; + DOTA_UM_ModifierAlert = 543; + DOTA_UM_HPManaAlert = 544; + DOTA_UM_GlyphAlert = 545; + DOTA_UM_BeastChat = 546; + DOTA_UM_SpectatorPlayerUnitOrders = 547; + DOTA_UM_CustomHudElement_Create = 548; + DOTA_UM_CustomHudElement_Modify = 549; + DOTA_UM_CustomHudElement_Destroy = 550; + DOTA_UM_CompendiumState = 551; + DOTA_UM_ProjectionAbility = 552; + DOTA_UM_ProjectionEvent = 553; + DOTA_UM_CombatLogDataHLTV = 554; + DOTA_UM_XPAlert = 555; + DOTA_UM_UpdateQuestProgress = 556; + DOTA_UM_MatchMetadata = 557; + DOTA_UM_MatchDetails = 558; + DOTA_UM_QuestStatus = 559; + DOTA_UM_SuggestHeroPick = 560; + DOTA_UM_SuggestHeroRole = 561; + DOTA_UM_KillcamDamageTaken = 562; + DOTA_UM_SelectPenaltyGold = 563; + DOTA_UM_RollDiceResult = 564; + DOTA_UM_FlipCoinResult = 565; + DOTA_UM_RequestItemSuggestions = 566; + DOTA_UM_TeamCaptainChanged = 567; + DOTA_UM_SendRoshanSpectatorPhase = 568; + DOTA_UM_ChatWheelCooldown = 569; + DOTA_UM_DismissAllStatPopups = 570; + DOTA_UM_TE_DestroyProjectile = 571; + DOTA_UM_HeroRelicProgress = 572; + DOTA_UM_AbilityDraftRequestAbility = 573; + DOTA_UM_ItemSold = 574; + DOTA_UM_DamageReport = 575; + DOTA_UM_SalutePlayer = 576; + DOTA_UM_TipAlert = 577; + DOTA_UM_ReplaceQueryUnit = 578; + DOTA_UM_EmptyTeleportAlert = 579; + DOTA_UM_MarsArenaOfBloodAttack = 580; + DOTA_UM_ESArcanaCombo = 581; + DOTA_UM_ESArcanaComboSummary = 582; + DOTA_UM_HighFiveLeftHanging = 583; + DOTA_UM_HighFiveCompleted = 584; + DOTA_UM_ShovelUnearth = 585; + DOTA_EM_InvokerSpellCast = 586; + DOTA_UM_RadarAlert = 587; + DOTA_UM_AllStarEvent = 588; + DOTA_UM_TalentTreeAlert = 589; + DOTA_UM_QueuedOrderRemoved = 590; + DOTA_UM_DebugChallenge = 591; + DOTA_UM_OMArcanaCombo = 592; + DOTA_UM_FoundNeutralItem = 593; + DOTA_UM_OutpostCaptured = 594; + DOTA_UM_OutpostGrantedXP = 595; + DOTA_UM_MoveCameraToUnit = 596; + DOTA_UM_PauseMinigameData = 597; + DOTA_UM_VersusScene_PlayerBehavior = 598; + DOTA_UM_QoP_ArcanaSummary = 600; + DOTA_UM_HotPotato_Created = 601; + DOTA_UM_HotPotato_Exploded = 602; + DOTA_UM_WK_Arcana_Progress = 603; + DOTA_UM_GuildChallenge_Progress = 604; + DOTA_UM_WRArcanaProgress = 605; + DOTA_UM_WRArcanaSummary = 606; + DOTA_UM_EmptyItemSlotAlert = 607; + DOTA_UM_AghsStatusAlert = 608; + DOTA_UM_PingConfirmation = 609; + DOTA_UM_MutedPlayers = 610; + DOTA_UM_ContextualTip = 611; + DOTA_UM_ChatMessage = 612; + DOTA_UM_NeutralCampAlert = 613; + DOTA_UM_RockPaperScissorsStarted = 614; + DOTA_UM_RockPaperScissorsFinished = 615; + DOTA_UM_DuelOpponentKilled = 616; + DOTA_UM_DuelAccepted = 617; + DOTA_UM_DuelRequested = 618; + DOTA_UM_MuertaReleaseEvent_AssignedTargetKilled = 619; + DOTA_UM_PlayerDraftSuggestPick = 620; + DOTA_UM_PlayerDraftPick = 621; + DOTA_UM_UpdateLinearProjectileCPData = 622; + DOTA_UM_GiftPlayer = 623; + DOTA_UM_FacetPing = 624; + DOTA_UM_InnatePing = 625; + DOTA_UM_RoshanTimer = 626; +} + +enum DOTA_CHAT_MESSAGE { + CHAT_MESSAGE_INVALID = -1; + CHAT_MESSAGE_HERO_KILL = 0; + CHAT_MESSAGE_HERO_DENY = 1; + CHAT_MESSAGE_BARRACKS_KILL = 2; + CHAT_MESSAGE_TOWER_KILL = 3; + CHAT_MESSAGE_TOWER_DENY = 4; + CHAT_MESSAGE_FIRSTBLOOD = 5; + CHAT_MESSAGE_STREAK_KILL = 6; + CHAT_MESSAGE_BUYBACK = 7; + CHAT_MESSAGE_AEGIS = 8; + CHAT_MESSAGE_ROSHAN_KILL = 9; + CHAT_MESSAGE_COURIER_LOST = 10; + CHAT_MESSAGE_COURIER_RESPAWNED = 11; + CHAT_MESSAGE_GLYPH_USED = 12; + CHAT_MESSAGE_ITEM_PURCHASE = 13; + CHAT_MESSAGE_CONNECT = 14; + CHAT_MESSAGE_DISCONNECT = 15; + CHAT_MESSAGE_DISCONNECT_WAIT_FOR_RECONNECT = 16; + CHAT_MESSAGE_DISCONNECT_TIME_REMAINING = 17; + CHAT_MESSAGE_DISCONNECT_TIME_REMAINING_PLURAL = 18; + CHAT_MESSAGE_RECONNECT = 19; + CHAT_MESSAGE_PLAYER_LEFT = 20; + CHAT_MESSAGE_SAFE_TO_LEAVE = 21; + CHAT_MESSAGE_RUNE_PICKUP = 22; + CHAT_MESSAGE_RUNE_BOTTLE = 23; + CHAT_MESSAGE_RUNE_DENY = 114; + CHAT_MESSAGE_INTHEBAG = 24; + CHAT_MESSAGE_SECRETSHOP = 25; + CHAT_MESSAGE_ITEM_AUTOPURCHASED = 26; + CHAT_MESSAGE_ITEMS_COMBINED = 27; + CHAT_MESSAGE_SUPER_CREEPS = 28; + CHAT_MESSAGE_CANT_USE_ACTION_ITEM = 29; + CHAT_MESSAGE_CANTPAUSE = 31; + CHAT_MESSAGE_NOPAUSESLEFT = 32; + CHAT_MESSAGE_CANTPAUSEYET = 33; + CHAT_MESSAGE_PAUSED = 34; + CHAT_MESSAGE_UNPAUSE_COUNTDOWN = 35; + CHAT_MESSAGE_UNPAUSED = 36; + CHAT_MESSAGE_AUTO_UNPAUSED = 37; + CHAT_MESSAGE_YOUPAUSED = 38; + CHAT_MESSAGE_CANTUNPAUSETEAM = 39; + CHAT_MESSAGE_VOICE_TEXT_BANNED = 41; + CHAT_MESSAGE_SPECTATORS_WATCHING_THIS_GAME = 42; + CHAT_MESSAGE_REPORT_REMINDER = 43; + CHAT_MESSAGE_ECON_ITEM = 44; + CHAT_MESSAGE_TAUNT = 45; + CHAT_MESSAGE_RANDOM = 46; + CHAT_MESSAGE_RD_TURN = 47; + CHAT_MESSAGE_DROP_RATE_BONUS = 49; + CHAT_MESSAGE_NO_BATTLE_POINTS = 50; + CHAT_MESSAGE_DENIED_AEGIS = 51; + CHAT_MESSAGE_INFORMATIONAL = 52; + CHAT_MESSAGE_AEGIS_STOLEN = 53; + CHAT_MESSAGE_ROSHAN_CANDY = 54; + CHAT_MESSAGE_ITEM_GIFTED = 55; + CHAT_MESSAGE_HERO_KILL_WITH_GREEVIL = 56; + CHAT_MESSAGE_HOLDOUT_TOWER_DESTROYED = 57; + CHAT_MESSAGE_HOLDOUT_WALL_DESTROYED = 58; + CHAT_MESSAGE_HOLDOUT_WALL_FINISHED = 59; + CHAT_MESSAGE_PLAYER_LEFT_LIMITED_HERO = 62; + CHAT_MESSAGE_ABANDON_LIMITED_HERO_EXPLANATION = 63; + CHAT_MESSAGE_DISCONNECT_LIMITED_HERO = 64; + CHAT_MESSAGE_LOW_PRIORITY_COMPLETED_EXPLANATION = 65; + CHAT_MESSAGE_RECRUITMENT_DROP_RATE_BONUS = 66; + CHAT_MESSAGE_FROSTIVUS_SHINING_BOOSTER_ACTIVE = 67; + CHAT_MESSAGE_PLAYER_LEFT_AFK = 73; + CHAT_MESSAGE_PLAYER_LEFT_DISCONNECTED_TOO_LONG = 74; + CHAT_MESSAGE_PLAYER_ABANDONED = 75; + CHAT_MESSAGE_PLAYER_ABANDONED_AFK = 76; + CHAT_MESSAGE_PLAYER_ABANDONED_DISCONNECTED_TOO_LONG = 77; + CHAT_MESSAGE_WILL_NOT_BE_SCORED = 78; + CHAT_MESSAGE_WILL_NOT_BE_SCORED_RANKED = 79; + CHAT_MESSAGE_WILL_NOT_BE_SCORED_NETWORK = 80; + CHAT_MESSAGE_WILL_NOT_BE_SCORED_NETWORK_RANKED = 81; + CHAT_MESSAGE_CAN_QUIT_WITHOUT_ABANDON = 82; + CHAT_MESSAGE_RANKED_GAME_STILL_SCORED_LEAVERS_GET_LOSS = 83; + CHAT_MESSAGE_ABANDON_RANKED_BEFORE_FIRST_BLOOD_PARTY = 84; + CHAT_MESSAGE_COMPENDIUM_LEVEL = 85; + CHAT_MESSAGE_VICTORY_PREDICTION_STREAK = 86; + CHAT_MESSAGE_ASSASSIN_ANNOUNCE = 87; + CHAT_MESSAGE_ASSASSIN_SUCCESS = 88; + CHAT_MESSAGE_ASSASSIN_DENIED = 89; + CHAT_MESSAGE_VICTORY_PREDICTION_SINGLE_USER_CONFIRM = 90; + CHAT_MESSAGE_EFFIGY_KILL = 91; + CHAT_MESSAGE_VOICE_TEXT_BANNED_OVERFLOW = 92; + CHAT_MESSAGE_YEAR_BEAST_KILLED = 93; + CHAT_MESSAGE_PAUSE_COUNTDOWN = 94; + CHAT_MESSAGE_COINS_WAGERED = 95; + CHAT_MESSAGE_HERO_NOMINATED_BAN = 96; + CHAT_MESSAGE_HERO_BANNED = 97; + CHAT_MESSAGE_HERO_BAN_COUNT = 98; + CHAT_MESSAGE_RIVER_PAINTED = 99; + CHAT_MESSAGE_SCAN_USED = 100; + CHAT_MESSAGE_SHRINE_KILLED = 101; + CHAT_MESSAGE_WAGER_TOKEN_SPENT = 102; + CHAT_MESSAGE_RANK_WAGER = 103; + CHAT_MESSAGE_NEW_PLAYER_REMINDER = 104; + CHAT_MESSAGE_OBSERVER_WARD_KILLED = 105; + CHAT_MESSAGE_SENTRY_WARD_KILLED = 106; + CHAT_MESSAGE_ITEM_PLACED_IN_NEUTRAL_STASH = 107; + CHAT_MESSAGE_HERO_CHOICE_INVALID = 108; + CHAT_MESSAGE_BOUNTY = 109; + CHAT_MESSAGE_ABILITY_DRAFT_START = 110; + CHAT_MESSAGE_HERO_FOUND_CANDY = 111; + CHAT_MESSAGE_ABILITY_DRAFT_RANDOMED = 112; + CHAT_MESSAGE_PRIVATE_COACH_CONNECTED = 113; + CHAT_MESSAGE_CANT_PAUSE_TOO_EARLY = 115; + CHAT_MESSAGE_HERO_KILL_WITH_PENGUIN = 116; + CHAT_MESSAGE_MINIBOSS_KILL = 117; + CHAT_MESSAGE_PLAYER_IN_GAME_BAN_TEXT = 118; + CHAT_MESSAGE_BANNER_PLANTED = 119; +} + +enum DOTA_NO_BATTLE_POINTS_REASONS { + NO_BATTLE_POINTS_WRONG_LOBBY_TYPE = 1; + NO_BATTLE_POINTS_PRACTICE_BOTS = 2; + NO_BATTLE_POINTS_CHEATS_ENABLED = 3; + NO_BATTLE_POINTS_LOW_PRIORITY = 4; +} + +enum DOTA_CHAT_INFORMATIONAL { + INFO_COOP_BATTLE_POINTS_RULES = 1; + INFO_FROSTIVUS_ABANDON_REMINDER = 2; + INFO_RANKED_REMINDER = 3; + INFO_COOP_LOW_PRIORITY_PASSIVE_REMINDER = 4; + INFO_CUSTOM_GAME_PENALTY_REMINDER = 5; +} + +enum DOTA_ABILITY_PING_TYPE { + ABILITY_PING_READY = 1; + ABILITY_PING_MANA = 2; + ABILITY_PING_COOLDOWN = 3; + ABILITY_PING_ENEMY = 4; + ABILITY_PING_UNLEARNED = 5; + ABILITY_PING_INBACKPACK = 6; + ABILITY_PING_INSTASH = 7; + ABILITY_PING_ONCOURIER = 8; + ABILITY_PING_ALLY = 9; + ABILITY_PING_LEARN_READY = 10; + ABILITY_PING_WILL_LEARN = 11; + ABILITY_PING_FUTURE_LEARN = 12; + ABILITY_PING_NEUTRAL_OFFER = 13; + ABILITY_PING_NEUTRAL_REQUEST = 14; + ABILITY_PING_NEUTRAL_EQUIP = 15; + ABILITY_PING_INCOURIERBACKPACK = 16; +} + +enum DOTA_REPLAY_STATE_EVENT { + DOTA_REPLAY_STATE_EVENT_GAME_START = 1; + DOTA_REPLAY_STATE_EVENT_STARTING_HORN = 2; + DOTA_REPLAY_STATE_EVENT_FIRST_BLOOD = 3; + DOTA_REPLAY_STATE_EVENT_SHOWCASE = 4; + DOTA_REPLAY_STATE_EVENT_POST_GAME = 5; + DOTA_REPLAY_STATE_EVENT_WAIT_FOR_MAP = 6; +} + +enum EDotaEntityMessages { + DOTA_UNIT_SPEECH = 0; + DOTA_UNIT_SPEECH_MUTE = 1; + DOTA_UNIT_ADD_GESTURE = 2; + DOTA_UNIT_REMOVE_GESTURE = 3; + DOTA_UNIT_REMOVE_ALL_GESTURES = 4; + DOTA_UNIT_FADE_GESTURE = 6; + DOTA_UNIT_SPEECH_CLIENTSIDE_RULES = 7; +} + +enum DOTA_OVERHEAD_ALERT { + OVERHEAD_ALERT_GOLD = 0; + OVERHEAD_ALERT_DENY = 1; + OVERHEAD_ALERT_CRITICAL = 2; + OVERHEAD_ALERT_XP = 3; + OVERHEAD_ALERT_BONUS_SPELL_DAMAGE = 4; + OVERHEAD_ALERT_MISS = 5; + OVERHEAD_ALERT_DAMAGE = 6; + OVERHEAD_ALERT_EVADE = 7; + OVERHEAD_ALERT_BLOCK = 8; + OVERHEAD_ALERT_BONUS_POISON_DAMAGE = 9; + OVERHEAD_ALERT_HEAL = 10; + OVERHEAD_ALERT_MANA_ADD = 11; + OVERHEAD_ALERT_MANA_LOSS = 12; + OVERHEAD_ALERT_LAST_HIT_EARLY = 13; + OVERHEAD_ALERT_LAST_HIT_CLOSE = 14; + OVERHEAD_ALERT_LAST_HIT_MISS = 15; + OVERHEAD_ALERT_MAGICAL_BLOCK = 16; + OVERHEAD_ALERT_INCOMING_DAMAGE = 17; + OVERHEAD_ALERT_OUTGOING_DAMAGE = 18; + OVERHEAD_ALERT_DISABLE_RESIST = 19; + OVERHEAD_ALERT_DEATH = 20; + OVERHEAD_ALERT_BLOCKED = 21; + OVERHEAD_ALERT_ITEM_RECEIVED = 22; + OVERHEAD_ALERT_SHARD = 23; + OVERHEAD_ALERT_DEADLY_BLOW = 24; + OVERHEAD_ALERT_FORCE_MISS = 25; +} + +enum DOTA_ROSHAN_PHASE { + k_SRSP_ROSHAN_ALIVE = 0; + k_SRSP_ROSHAN_BASE_TIMER = 1; + k_SRSP_ROSHAN_VISIBLE_TIMER = 2; +} + +enum DOTA_POSITION_CATEGORY { + DOTA_POSITION_NONE = 0; + DOTA_POSITION_BOTTOM_LANE = 1; + DOTA_POSITION_MID_LANE = 2; + DOTA_POSITION_TOP_LANE = 3; + DOTA_POSITION_RADIANT_JUNGLE = 4; + DOTA_POSITION_DIRE_JUNGLE = 5; + DOTA_POSITION_RADIANT_ANCIENTS = 6; + DOTA_POSITION_DIRE_ANCIENTS = 7; + DOTA_POSITION_RADIANT_SECRET_SHOP = 8; + DOTA_POSITION_DIRE_SECRET_SHOP = 9; + DOTA_POSITION_RIVER = 10; + DOTA_POSITION_ROSHAN_PIT = 11; + DOTA_POSITION_RADIANT_BASE = 12; + DOTA_POSITION_DIRE_BASE = 13; + DOTA_POSITION_FOUNTAIN = 14; + DOTA_POSITION_OTHER = 15; +} + +enum DOTA_ABILITY_TARGET_TYPE { + DOTA_ABILITY_TARGET_NONE = 0; + DOTA_ABILITY_TARGET_SELF = 1; + DOTA_ABILITY_TARGET_ALLY_HERO = 2; + DOTA_ABILITY_TARGET_ALLY_CREEP = 3; + DOTA_ABILITY_TARGET_ENEMY_HERO = 4; + DOTA_ABILITY_TARGET_ENEMY_CREEP = 5; +} + +enum EHeroStatType { + k_EHeroStatType_None = 0; + k_EHeroStatType_AxeTotalDamage = 2000; + k_EHeroStatType_BattleHungerDamage = 2001; + k_EHeroStatType_CounterHelixDamage = 2002; + k_EHeroStatType_CullingBladeDamage = 2003; + k_EHeroStatType_BerserkersCallCastCount = 2004; + k_EHeroStatType_BerserkersCallHeroesHitAverage = 2005; + k_EHeroStatType_BerserkersCallOtherUnitsHit = 2006; + k_EHeroStatType_BerserkersCallHeroAttacksTaken = 2007; + k_EHeroStatType_BerserkersCallOtherAttacksTaken = 2008; + k_EHeroStatType_BattleHungerCastCount = 2009; + k_EHeroStatType_BattleHungerPotentialDuration = 2010; + k_EHeroStatType_BattleHungerAverageDuration = 2011; + k_EHeroStatType_CounterHelixProcCount = 2012; + k_EHeroStatType_CounterHelixHeroProcCount = 2013; + k_EHeroStatType_CounterHelixHeroesHitAverage = 2014; + k_EHeroStatType_CounterHelixOtherUnitsHitCount = 2015; + k_EHeroStatType_CullingBladeCastCount = 2016; + k_EHeroStatType_CullingBladeKillCount = 2017; + k_EHeroStatType_CullingBladeAverageHealthCulled = 2018; + k_EHeroStatType_CullingBladeAverageDamageAvailable = 2019; + k_EHeroStatType_CullingBladeHeroBuffAverage = 2020; +} + +enum EPlayerVoiceListenState { + kPVLS_None = 0; + kPVLS_DeniedChatBanned = 1; + kPVLS_DeniedPartner = 2; + kPVLS_DeniedHLTVTalkerNotSpectator = 3; + kPVLS_DeniedHLTVNoTalkerPlayerID = 4; + kPVLS_DeniedHLTVTalkerNotBroadcaster = 5; + kPVLS_DeniedTeamSpectator = 6; + kPVLS_DeniedStudent = 8; + kPVLS_DeniedPrivateCoach = 9; + kPVLS_Denied = 64; + kPVLS_AllowHLTVTalkerIsBroadcaster = 65; + kPVLS_AllowCoBroadcaster = 66; + kPVLS_AllowAllChat = 67; + kPVLS_AllowStudentToCoach = 68; + kPVLS_AllowFellowStudent = 69; + kPVLS_AllowTalkerIsCoach = 70; + kPVLS_AllowCoachHearTeam = 71; + kPVLS_AllowSameTeam = 72; + kPVLS_AllowShowcase = 73; + kPVLS_AllowPrivateCoach = 74; +} + +enum EProjectionEvent { + ePE_FirstBlood = 0; + ePE_Killstreak_godlike = 1; +} + +message CDOTAUserMsg_AIDebugLine { + optional string message = 1; +} + +message CDOTAUserMsg_Ping { + optional uint32 ping = 2; + optional uint32 loss = 3; +} + +message CDOTAUserMsg_SwapVerify { + optional int32 player_id = 1 [default = -1]; +} + +message CDOTAUserMsg_ChatEvent { + required .DOTA_CHAT_MESSAGE type = 1 [default = CHAT_MESSAGE_INVALID]; + optional uint32 value = 2; + optional sint32 playerid_1 = 3 [default = -1]; + optional sint32 playerid_2 = 4 [default = -1]; + optional sint32 playerid_3 = 5 [default = -1]; + optional sint32 playerid_4 = 6 [default = -1]; + optional sint32 playerid_5 = 7 [default = -1]; + optional sint32 playerid_6 = 8 [default = -1]; + optional uint32 value2 = 9; + optional uint32 value3 = 10; +} + +message CDOTAUserMsg_BotChat { + optional int32 player_id = 1 [default = -1]; + optional string message = 3; + optional string target = 4; + optional bool team_only = 5; +} + +message CDOTAUserMsg_CombatHeroPositions { + optional uint32 index = 1; + optional int32 time = 2; + optional .CMsgVector2D world_pos = 3; + optional int32 health = 4; +} + +message CDOTAUserMsg_CombatLogBulkData { + repeated .CMsgDOTACombatLogEntry combat_entries = 1; + optional float timestamp = 2; + optional float duration = 3; + optional int32 player_id = 4 [default = -1]; + optional float request_time = 5; +} + +message CDOTAUserMsg_ProjectileParticleCPData { + optional int32 control_point = 1; + optional .CMsgVector vector = 2; +} + +message CDOTAUserMsg_UpdateLinearProjectileCPData { + optional int32 handle = 1; + optional int32 control_point = 2; + optional .CMsgVector vector = 3; +} + +message CDOTAUserMsg_MiniKillCamInfo { + message Attacker { + message Ability { + optional int32 ability_id = 1 [default = -1]; + optional int32 damage = 2; + } + + optional uint32 attacker = 1 [default = 16777215]; + optional int32 total_damage = 2; + repeated .CDOTAUserMsg_MiniKillCamInfo.Attacker.Ability abilities = 3; + optional string attacker_name = 4; + } + + repeated .CDOTAUserMsg_MiniKillCamInfo.Attacker attackers = 1; +} + +message CDOTAUserMsg_GlobalLightColor { + optional uint32 color = 1; + optional float duration = 2; +} + +message CDOTAUserMsg_GlobalLightDirection { + optional .CMsgVector direction = 1; + optional float duration = 2; +} + +message CDOTAUserMsg_LocationPing { + optional int32 player_id = 1 [default = -1]; + optional .CDOTAMsg_LocationPing location_ping = 2; +} + +message CDOTAUserMsg_PingConfirmation { + optional int32 player_id_of_original_pinger = 1 [default = -1]; + optional uint32 entity_index = 2; + optional uint32 icon_type = 3; + optional .CMsgVector location = 4; +} + +message CDOTAUserMsg_ItemAlert { + optional int32 player_id = 1 [default = -1]; + optional .CDOTAMsg_ItemAlert item_alert = 2; +} + +message CDOTAUserMsg_EnemyItemAlert { + optional int32 player_id = 1 [default = -1]; + optional int32 target_player_id = 2 [default = -1]; + optional int32 item_ability_id = 3 [default = -1]; + optional int32 rune_type = 4 [default = -1]; + optional int32 entity_id = 5; + optional int32 item_level = 6 [default = -1]; + optional int32 primary_charges = 7 [default = -1]; + optional int32 secondary_charges = 8 [default = -1]; +} + +message CDOTAUserMsg_ModifierAlert { + optional int32 player_id = 1 [default = -1]; + optional string class_name = 2; + optional uint32 stack_count = 3; + optional bool is_debuff = 4; + optional int32 target_entindex = 5 [default = -1]; + optional float seconds_remaining = 6; +} + +message CDOTAUserMsg_HPManaAlert { + optional int32 player_id = 1 [default = -1]; + optional int32 target_entindex = 2 [default = -1]; + optional bool show_raw_values = 3; +} + +message CDOTAUserMsg_NeutralCampAlert { + optional int32 player_id = 1 [default = -1]; + optional int32 spawner_entindex = 2 [default = -1]; + optional int32 unit_entindex = 3 [default = -1]; + optional int32 stack_count = 4; + optional int32 camp_type = 5; + optional bool stack_request = 6; + optional bool stack_intention = 7; +} + +message CDOTAUserMsg_GlyphAlert { + optional int32 player_id = 1 [default = -1]; + optional bool negative = 2; +} + +message CDOTAUserMsg_RadarAlert { + optional int32 player_id = 1 [default = -1]; + optional bool negative = 2; +} + +message CDOTAUserMsg_RoshanTimer { + optional int32 player_id = 1 [default = -1]; + optional bool negative = 2; +} + +message CDOTAUserMsg_WillPurchaseAlert { + optional int32 item_ability_id = 1 [default = -1]; + optional int32 player_id = 2 [default = -1]; + optional uint32 gold_remaining = 3; + optional int32 suggestion_player_id = 4 [default = -1]; +} + +message CDOTAUserMsg_EmptyTeleportAlert { + optional int32 source_player_id = 1 [default = -1]; + optional int32 target_player_id = 2 [default = -1]; + optional int32 cooldown_seconds = 3; +} + +message CDOTAUserMsg_MarsArenaOfBloodAttack { + optional uint32 source_ehandle = 1 [default = 16777215]; + optional uint32 target_ehandle = 2 [default = 16777215]; + optional int32 warrior_index = 3; +} + +message CDOTAEntityMsg_InvokerSpellCast { + optional .CEntityMsg entity_msg = 1; + optional int32 cast_activity = 2; +} + +message CDOTAUserMsg_BuyBackStateAlert { + optional int32 player_id = 1 [default = -1]; +} + +message CDOTAUserMsg_QuickBuyAlert { + optional int32 player_id = 1 [default = -1]; + optional int32 item_ability_id = 2 [default = -1]; + optional int32 gold_cost = 3; + optional int32 item_cooldown_seconds = 4; + optional bool show_buyback = 5; +} + +message CDOTAUserMsg_CourierKilledAlert { + message LostItem { + optional int32 item_ability_id = 1 [default = -1]; + optional uint32 quantity = 2; + } + + optional uint32 team = 1; + optional uint32 gold_value = 2; + optional uint32 entity_handle = 3 [default = 16777215]; + optional int32 timestamp = 4; + repeated .CDOTAUserMsg_CourierKilledAlert.LostItem lost_items = 5; + optional int32 killer_player_id = 6 [default = -1]; + optional int32 owning_player_id = 7 [default = -1]; +} + +message CDOTAUserMsg_MinimapEvent { + optional int32 event_type = 1; + optional uint32 entity_handle = 2 [default = 16777215]; + optional int32 x = 3; + optional int32 y = 4; + optional int32 duration = 5; + optional uint32 target_entity_handle = 6 [default = 16777215]; +} + +message CDOTAUserMsg_MapLine { + optional int32 player_id = 1 [default = -1]; + optional .CDOTAMsg_MapLine mapline = 2; +} + +message CDOTAUserMsg_MinimapDebugPoint { + optional .CMsgVector location = 1; + optional uint32 color = 2; + optional int32 size = 3; + optional float duration = 4; + optional int32 index = 5; +} + +message CDOTAUserMsg_CreateLinearProjectile { + optional .CMsgVector origin = 1; + optional .CMsgVector2D velocity = 2; + optional int32 entindex = 4 [default = -1]; + optional uint64 particle_index = 5; + optional int32 handle = 6; + optional .CMsgVector2D acceleration = 7; + optional float max_speed = 8; + optional float fow_radius = 9; + optional bool sticky_fow_reveal = 10; + optional float distance = 11; + optional fixed32 colorgemcolor = 12; + repeated .CDOTAUserMsg_ProjectileParticleCPData particle_cp_data = 13; +} + +message CDOTAUserMsg_DestroyLinearProjectile { + optional int32 handle = 1; +} + +message CDOTAUserMsg_DodgeTrackingProjectiles { + required int32 entindex = 1 [default = -1]; + optional bool attacks_only = 2; +} + +message CDOTAUserMsg_SpectatorPlayerClick { + required int32 entindex = 1 [default = -1]; + optional int32 order_type = 2; + optional int32 target_index = 3 [default = 0]; +} + +message CDOTAUserMsg_SpectatorPlayerUnitOrders { + optional int32 entindex = 1 [default = -1]; + optional int32 order_type = 2; + repeated int32 units = 3; + optional int32 target_index = 4 [default = 0]; + optional int32 ability_id = 5 [default = -1]; + optional .CMsgVector position = 6; + optional bool queue = 7; + optional int32 sequence_number = 8; + optional uint32 flags = 9; +} + +message CDOTAUserMsg_NevermoreRequiem { + optional uint32 entity_handle = 1 [default = 16777215]; + optional int32 lines = 2; + optional .CMsgVector origin = 3; + optional bool reverse = 4; +} + +message CDOTAUserMsg_InvalidCommand { + optional string message = 1; + optional int32 sequence_number = 2; +} + +message CDOTAUserMsg_HudError { + optional int32 order_id = 1; + optional int32 sequence_number = 2; +} + +message CDOTAUserMsg_SharedCooldown { + optional int32 entindex = 1 [default = -1]; + optional string name = 2; + optional float cooldown = 3; + optional int32 name_index = 4; +} + +message CDOTAUserMsg_SetNextAutobuyItem { + optional string name = 1; +} + +message CDOTAUserMsg_HalloweenDrops { + repeated uint32 item_defs = 1; + repeated int32 player_ids = 2; + optional uint32 prize_list = 3; +} + +message CDOTAResponseQuerySerialized { + message Fact { + enum ValueType { + NUMERIC = 1; + STRING = 2; + STRINGTABLE_INDEX = 3; + INT_NUMERIC = 4; + } + + required int32 key = 1; + required .CDOTAResponseQuerySerialized.Fact.ValueType valtype = 2 [default = NUMERIC]; + optional float val_numeric = 3; + optional string val_string = 4; + optional int32 val_stringtable_index = 5; + optional sint32 val_int_numeric = 6; + } + + repeated .CDOTAResponseQuerySerialized.Fact facts = 1; +} + +message CDOTASpeechMatchOnClient { + optional int32 speech_concept = 1; + optional int32 recipient_type = 2; + optional .CDOTAResponseQuerySerialized responsequery = 3; + optional sfixed32 randomseed = 4 [default = 0]; +} + +message CDOTAUserMsg_UnitEvent { + message Interval { + optional float start = 1; + optional float range = 2; + } + + message Speech { + optional int32 speech_concept = 1; + optional string response = 2; + optional int32 recipient_type = 3; + optional bool muteable = 5 [default = false]; + optional .CDOTAUserMsg_UnitEvent.Interval predelay = 6; + optional uint32 flags = 7; + optional int32 response_type = 8; + } + + message SpeechMute { + optional float delay = 1 [default = 0.5]; + } + + message AddGesture { + optional int32 activity = 1; + optional int32 slot = 2; + optional float fade_in = 3 [default = 0]; + optional float fade_out = 4 [default = 0.1]; + optional float playback_rate = 5 [default = 1]; + optional int32 sequence_variant = 6; + } + + message RemoveGesture { + optional int32 activity = 1; + } + + message BloodImpact { + optional int32 scale = 1; + optional int32 x_normal = 2; + optional int32 y_normal = 3; + } + + message FadeGesture { + optional int32 activity = 1; + } + + required .EDotaEntityMessages msg_type = 1 [default = DOTA_UNIT_SPEECH]; + required int32 entity_index = 2; + optional .CDOTAUserMsg_UnitEvent.Speech speech = 3; + optional .CDOTAUserMsg_UnitEvent.SpeechMute speech_mute = 4; + optional .CDOTAUserMsg_UnitEvent.AddGesture add_gesture = 5; + optional .CDOTAUserMsg_UnitEvent.RemoveGesture remove_gesture = 6; + optional .CDOTAUserMsg_UnitEvent.BloodImpact blood_impact = 7; + optional .CDOTAUserMsg_UnitEvent.FadeGesture fade_gesture = 8; + optional .CDOTASpeechMatchOnClient speech_match_on_client = 9; +} + +message CDOTAUserMsg_ItemPurchased { + optional int32 item_ability_id = 1 [default = -1]; +} + +message CDOTAUserMsg_ItemSold { + optional int32 item_ability_id = 1 [default = -1]; +} + +message CDOTAUserMsg_ItemFound { + optional int32 player = 1 [default = -1]; + optional int32 quality = 2; + optional int32 rarity = 3; + optional int32 method = 4; + optional uint32 itemdef = 5; +} + +message CDOTAUserMsg_OverheadEvent { + required .DOTA_OVERHEAD_ALERT message_type = 1 [default = OVERHEAD_ALERT_GOLD]; + optional int32 value = 2; + optional int32 target_player_entindex = 3 [default = -1]; + optional int32 target_entindex = 4 [default = -1]; + optional int32 source_player_entindex = 5 [default = -1]; +} + +message CDOTAUserMsg_TutorialTipInfo { + optional string name = 1; + optional int32 progress = 2; +} + +message CDOTAUserMsg_TutorialFinish { + optional string heading = 1; + optional string emblem = 2; + optional string body = 3; + optional bool success = 4; +} + +message CDOTAUserMsg_TutorialMinimapPosition { +} + +message CDOTAUserMsg_SendGenericToolTip { + optional string title = 1; + optional string text = 2; + optional int32 entindex = 3; + optional bool close = 4; +} + +message CDOTAUserMsg_WorldLine { + optional int32 player_id = 1 [default = -1]; + optional .CDOTAMsg_WorldLine worldline = 2; +} + +message CDOTAUserMsg_ChatWheel { + optional uint32 chat_message_id = 1 [default = 4294967295]; + optional int32 player_id = 2 [default = -1]; + optional uint32 account_id = 3; + optional int32 param_hero_id = 4; + optional uint32 emoticon_id = 5; +} + +message CDOTAUserMsg_ReceivedXmasGift { + optional int32 player_id = 1 [default = -1]; + optional string item_name = 2; + optional int32 inventory_slot = 3; +} + +message CDOTAUserMsg_ShowSurvey { + optional int32 survey_id = 1; + optional uint64 match_id = 2; + optional string response_style = 3; + optional int32 teammate_hero_id = 4; + optional string teammate_name = 5; + optional uint32 teammate_account_id = 6; +} + +message CDOTAUserMsg_UpdateSharedContent { + optional int32 slot_type = 1; +} + +message CDOTAUserMsg_TutorialRequestExp { +} + +message CDOTAUserMsg_TutorialFade { + optional int32 tgt_alpha = 1; +} + +message CDOTAUserMsg_TutorialPingMinimap { + optional int32 player_id = 1 [default = -1]; + optional float pos_x = 2; + optional float pos_y = 3; + optional float pos_z = 4; + optional int32 entity_index = 5; +} + +message CDOTAUserMsg_GamerulesStateChanged { + optional uint32 state = 1; +} + +message CDOTAUserMsg_AddQuestLogEntry { + optional string npc_name = 1; + optional string npc_dialog = 2; +} + +message CDOTAUserMsg_SendStatPopup { + optional int32 player_id = 1 [default = -1]; + optional .CDOTAMsg_SendStatPopup statpopup = 2; +} + +message CDOTAUserMsg_DismissAllStatPopups { + optional .CDOTAMsg_DismissAllStatPopups dismissallmsg = 1; +} + +message CDOTAUserMsg_SendRoshanSpectatorPhase { + optional .DOTA_ROSHAN_PHASE phase = 1 [default = k_SRSP_ROSHAN_ALIVE]; + optional int32 phase_start_time = 2; + optional int32 phase_length = 3; +} + +message CDOTAUserMsg_SendRoshanPopup { + optional bool reclaimed = 1; + optional int32 gametime = 2; +} + +message CDOTAUserMsg_SendFinalGold { + repeated uint32 reliable_gold = 1; + repeated uint32 unreliable_gold = 2; +} + +message CDOTAUserMsg_CustomMsg { + optional string message = 1; + optional int32 player_id = 2 [default = -1]; + optional int32 value = 3; +} + +message CDOTAUserMsg_CoachHUDPing { + optional int32 player_id = 1 [default = -1]; + optional .CDOTAMsg_CoachHUDPing hud_ping = 2; +} + +message CDOTAUserMsg_ClientLoadGridNav { +} + +message CDOTAUserMsg_TE_Projectile { + optional uint32 source = 1 [default = 16777215]; + optional uint32 target = 2 [default = 16777215]; + optional int32 move_speed = 3; + optional int32 source_attachment = 4; + optional int64 particle_system_handle = 5; + optional bool dodgeable = 6; + optional bool is_attack = 7; + optional float expire_time = 9; + optional float maximpacttime = 10; + optional fixed32 colorgemcolor = 11; + optional int32 launch_tick = 12; + optional int32 handle = 13; + optional .CMsgVector target_loc = 14; + repeated .CDOTAUserMsg_ProjectileParticleCPData particle_cp_data = 15; + optional int64 additional_particle_system_handle = 16; + optional int32 original_move_speed = 17; + optional uint32 ability = 18 [default = 16777215]; +} + +message CDOTAUserMsg_TE_ProjectileLoc { + optional .CMsgVector source_loc = 1; + optional uint32 target = 2 [default = 16777215]; + optional int32 move_speed = 3; + optional int64 particle_system_handle = 4; + optional bool dodgeable = 5; + optional bool is_attack = 6; + optional float expire_time = 9; + optional .CMsgVector target_loc = 10; + optional fixed32 colorgemcolor = 11; + optional int32 launch_tick = 12; + optional int32 handle = 13; + optional uint32 source = 14 [default = 16777215]; + optional int32 source_attachment = 15; + repeated .CDOTAUserMsg_ProjectileParticleCPData particle_cp_data = 16; + optional int64 additional_particle_system_handle = 17; + optional int32 original_move_speed = 18; +} + +message CDOTAUserMsg_TE_DestroyProjectile { + optional int32 handle = 1; +} + +message CDOTAUserMsg_TE_DotaBloodImpact { + optional uint32 entity = 1 [default = 16777215]; + optional float scale = 2; + optional float xnormal = 3; + optional float ynormal = 4; +} + +message CDOTAUserMsg_AbilityPing { + optional int32 player_id = 1 [default = -1]; + optional int32 ability_id = 2 [default = -1]; + optional .DOTA_ABILITY_PING_TYPE type = 3 [default = ABILITY_PING_READY]; + optional uint32 cooldown_seconds = 4; + optional uint32 level = 5; + optional bool passive = 6; + optional uint32 mana_needed = 7; + optional uint32 entity_id = 8; + optional int32 primary_charges = 9; + optional int32 secondary_charges = 10; + optional bool ctrl_held = 12; + optional float reclaim_time = 13; + optional int32 owner_entity = 14 [default = -1]; +} + +message CDOTAUserMsg_TE_UnitAnimation { + optional uint32 entity = 1 [default = 16777215]; + optional int32 sequence_variant = 2; + optional float playbackrate = 3; + optional float castpoint = 4; + optional int32 type = 5; + optional int32 activity = 6; + optional float lag_compensation_time = 7; +} + +message CDOTAUserMsg_TE_UnitAnimationEnd { + optional uint32 entity = 1 [default = 16777215]; + optional bool snap = 2; +} + +message CDOTAUserMsg_ShowGenericPopup { + required string header = 1; + required string body = 2; + optional string param1 = 3; + optional string param2 = 4; + optional bool tint_screen = 5; + optional bool show_no_other_dialogs = 6; +} + +message CDOTAUserMsg_VoteStart { + optional string title = 1; + optional float duration = 2; + optional int32 choice_count = 3; + repeated string choices = 4; +} + +message CDOTAUserMsg_VoteUpdate { + repeated int32 choice_counts = 1; +} + +message CDOTAUserMsg_VoteEnd { + optional int32 selected_choice = 1; +} + +message CDOTAUserMsg_BoosterStatePlayer { + optional int32 player_id = 1 [default = -1]; + optional float bonus = 2; + optional float event_bonus = 3; + optional uint32 bonus_item_id = 4; + optional uint32 event_bonus_item_id = 5; +} + +message CDOTAUserMsg_BoosterState { + repeated .CDOTAUserMsg_BoosterStatePlayer boosted_players = 1; +} + +message CDOTAUserMsg_AbilitySteal { + optional int32 player_id = 1 [default = -1]; + optional int32 ability_id = 2 [default = -1]; + optional uint32 ability_level = 3; +} + +message CDOTAUserMsg_StatsHeroLookup { + optional int32 player_id = 1 [default = -1]; + optional int32 hero_id = 2; + optional string hero_name = 3; + optional string persona = 4; +} + +message CDOTAUserMsg_StatsHeroPositionInfo { + message PositionPair { + optional .DOTA_POSITION_CATEGORY position_category = 1 [default = DOTA_POSITION_NONE]; + optional uint32 position_count = 2; + } + + optional float average_position = 1; + repeated .CDOTAUserMsg_StatsHeroPositionInfo.PositionPair position_details = 2; +} + +message CDOTAUserMsg_StatsHeroMinuteDetails { + optional uint32 last_hits = 1; + optional uint32 hero_kills = 2; + optional uint32 hero_damage = 3; + optional uint32 tower_damage = 4; + optional .CDOTAUserMsg_StatsHeroPositionInfo position_info = 5; + optional uint32 total_xp = 6; + optional uint32 net_worth = 7; + optional uint32 harvested_creep_gold = 8; + optional uint32 claimed_farm = 9; + optional uint32 wards_placed = 10; + optional uint32 runes_collected = 11; + optional uint32 tps_used = 12; + repeated uint32 mana_spent = 13; + repeated uint32 damage_absorbed = 14; + repeated uint32 damage_done = 15; +} + +message CDOTAUserMsg_StatsTeamMinuteDetails { + message LocationPerformance { + optional uint32 location_category = 1; + optional uint32 stat_type = 2; + optional uint32 value = 3; + } + + repeated .CDOTAUserMsg_StatsHeroMinuteDetails player_stats = 1; + optional uint32 tower_kills = 2; + optional uint32 barrack_kills = 3; + optional uint32 available_lane_creep_gold = 4; + optional uint32 balance_kill_value = 5; + optional uint32 balance_tower_value = 6; + optional uint32 balance_barracks_value = 7; + optional uint32 balance_gold_value = 8; + optional uint32 balance_xp_value = 9; + repeated .CDOTAUserMsg_StatsTeamMinuteDetails.LocationPerformance lane_performance = 10; +} + +message CDOTAUserMsg_StatsPlayerKillShare { + optional int32 player_id = 1 [default = -1]; + optional float kill_share_percent = 2; + optional float player_loc_x = 3; + optional float player_loc_y = 4; + optional float health_percent = 5; + optional float mana_percent = 6; +} + +message CDOTAUserMsg_StatsKillDetails { + optional int32 victim_id = 1 [default = -1]; + repeated .CDOTAUserMsg_StatsPlayerKillShare kill_shares = 2; + optional uint32 damage_to_kill = 3; + optional uint32 effective_health = 4; + optional float death_time = 5; + optional int32 killer_id = 6 [default = -1]; +} + +message CDOTAUserMsg_StatsMatchDetails { + message CDOTAUserMsg_StatsFightTeamDetails { + repeated int32 participants = 1; + repeated int32 deaths = 2; + optional uint32 gold_delta = 3; + optional uint32 xp_delta = 4; + } + + message CDOTAUserMsg_StatsFightDetails { + optional float start_time = 1; + optional float end_time = 2; + optional .CDOTAUserMsg_StatsMatchDetails.CDOTAUserMsg_StatsFightTeamDetails radiant_fight_details = 3; + optional .CDOTAUserMsg_StatsMatchDetails.CDOTAUserMsg_StatsFightTeamDetails dire_fight_details = 4; + } + + repeated .CDOTAUserMsg_StatsHeroLookup hero_lookup = 1; + repeated .CDOTAUserMsg_StatsTeamMinuteDetails radiant_stats = 2; + repeated .CDOTAUserMsg_StatsTeamMinuteDetails dire_stats = 3; + repeated .CDOTAUserMsg_StatsKillDetails radiant_kills = 4; + repeated .CDOTAUserMsg_StatsKillDetails dire_kills = 5; + repeated .CDOTAUserMsg_StatsMatchDetails.CDOTAUserMsg_StatsFightDetails fight_details = 6; +} + +message CDOTAUserMsg_MiniTaunt { + optional int32 taunting_player_id = 1 [default = -1]; +} + +message CDOTAUserMsg_SpeechBubble { + optional bool destroy_all = 1; +} + +message CDOTAUserMsg_CustomHeaderMessage { + optional int32 player_id = 1 [default = -1]; + optional float duration = 2; + optional string message = 3; + optional int32 value = 4; +} + +message CMsgHeroAbilityStat { + optional .EHeroStatType stat_type = 1 [default = k_EHeroStatType_None]; + optional int32 int_value = 2; + optional float float_value = 3; +} + +message CMsgCombatAnalyzerPlayerStat { + optional uint32 account_id = 1; + repeated .CMsgHeroAbilityStat hero_ability_stats = 2; +} + +message CMsgCombatAnalyzerStats { + optional uint64 match_id = 1; + repeated .CMsgCombatAnalyzerPlayerStat player_stats = 2; +} + +message CDOTAUserMsg_BeastChat { + optional uint32 team = 1; + optional string format = 2; + optional string message = 3; + optional string target = 4; +} + +message CDOTAUserMsg_CustomHudElement_Create { + optional string element_id = 1; + optional string layout_filename = 2; + optional bytes data = 3; +} + +message CDOTAUserMsg_CustomHudElement_Modify { + optional string element_id = 1; + optional bool modify_visible = 2; + optional bytes data = 3; +} + +message CDOTAUserMsg_CustomHudElement_Destroy { + optional string element_id = 1; +} + +message CDOTAUserMsg_CompendiumStatePlayer { + optional int32 player_id = 1 [default = -1]; + optional uint32 level = 2; +} + +message CDOTAUserMsg_CompendiumState { + repeated .CDOTAUserMsg_CompendiumStatePlayer compendium_players = 1; +} + +message CDOTAUserMsg_ProjectionAbility { + optional int32 ability_id = 1 [default = -1]; + optional int32 caster_ent_index = 2 [default = -1]; + optional int32 caster_team = 3; + optional bool channel_end = 4; + optional .CMsgVector origin = 5; + optional bool track_caster_only = 6; + optional float end_time = 7; + optional int32 victim_ent_index = 8 [default = -1]; +} + +message CDOTAUserMsg_ProjectionEvent { + optional .EProjectionEvent event_id = 1 [default = ePE_FirstBlood]; + optional uint32 team = 2; +} + +message CDOTAUserMsg_XPAlert { + optional int32 player_id = 1 [default = -1]; + optional int32 target_entindex = 2 [default = -1]; +} + +message CDOTAUserMsg_TalentTreeAlert { + optional int32 player_id = 1 [default = -1]; + optional int32 target_entindex = 2 [default = -1]; + optional int32 ability_id = 3 [default = -1]; + optional int32 slot = 4; + optional bool learned = 5; +} + +message CDOTAUserMsg_UpdateQuestProgress { +} + +message CDOTAUserMsg_QuestStatus { + required int32 player_id = 1 [default = -1]; + optional uint32 quest_id = 2; + optional uint32 challenge_id = 3; + optional uint32 progress = 4; + optional uint32 goal = 5; + optional uint32 query = 6; + optional float fail_gametime = 7; + optional int32 item_ability_id = 8 [default = -1]; +} + +message CDOTAUserMsg_SuggestHeroPick { + required int32 player_id = 1 [default = -1]; + optional int32 hero_id = 2; + optional bool ban = 3; + optional uint32 facet_id = 4; +} + +message CDOTAUserMsg_SuggestHeroRole { + required int32 player_id = 1 [default = -1]; + optional string hero_role = 2; +} + +message CDOTAUserMsg_KillcamDamageTaken { + required int32 player_id = 1 [default = -1]; + optional uint32 damage_taken = 2; + optional uint32 item_type = 3; + optional int32 item_ability_id = 4 [default = -1]; + optional string hero_name = 5; + optional string damage_color = 6; +} + +message CDOTAUserMsg_SelectPenaltyGold { + required int32 player_id = 1 [default = -1]; + optional sint32 cost = 2; +} + +message CDOTAUserMsg_RollDiceResult { + optional int32 player_id = 1 [default = -1]; + optional uint32 channel_type = 2; + optional uint32 roll_min = 3; + optional uint32 roll_max = 4; + optional uint32 result = 5; +} + +message CDOTAUserMsg_FlipCoinResult { + optional int32 player_id = 1 [default = -1]; + optional uint32 channel_type = 2; + optional bool result = 3; +} + +message CDOTAUserMessage_RequestItemSuggestions { + optional int32 player_id = 1 [default = -1]; +} + +message CDOTAUserMessage_TeamCaptainChanged { + optional uint32 team = 1; + optional int32 captain_player_id = 2 [default = -1]; +} + +message CDOTAUserMsg_ChatWheelCooldown { + optional uint32 message_id = 1 [default = 4294967295]; + optional float cooldown_remaining = 2; +} + +message CDOTAUserMsg_HeroRelicProgress { + optional uint32 hero_relic_type = 1; + optional uint32 value = 2; + optional uint32 ehandle = 3 [default = 16777215]; + optional uint32 event_id = 4; + optional float value_display = 5; +} + +message CDOTAUserMsg_AbilityDraftRequestAbility { + optional int32 player_id = 1 [default = -1]; + optional int32 requested_ability_id = 2 [default = -1]; + optional bool ctrl_is_down = 3; +} + +message CDOTAUserMsg_DamageReport { + optional int32 player_id = 1 [default = -1]; + optional int32 target_hero_id = 2; + optional int32 source_hero_id = 3; + optional int32 damage_amount = 4; + optional bool broadcast = 5; +} + +message CDOTAUserMsg_SalutePlayer { + optional int32 source_player_id = 1 [default = -1]; + optional int32 target_player_id = 2 [default = -1]; + optional uint32 tip_amount = 3; + optional uint32 event_id = 4; + optional string custom_tip_style = 5; + optional uint32 num_recent_tips = 6; +} + +message CDOTAUserMsg_GiftPlayer { + optional int32 source_player_id = 1 [default = -1]; + optional int32 target_player_id = 2 [default = -1]; + optional uint32 gift_item_def_index = 3; +} + +message CDOTAUserMsg_TipAlert { + optional int32 player_id = 1 [default = -1]; + optional string tip_text = 2; +} + +message CDOTAUserMsg_ReplaceQueryUnit { + required int32 player_id = 1 [default = -1]; + optional int32 source_entindex = 2 [default = -1]; + optional int32 target_entindex = 3 [default = -1]; +} + +message CDOTAUserMsg_ESArcanaCombo { + optional uint32 ehandle = 1 [default = 16777215]; + optional uint32 combo_count = 2; + optional uint32 arcana_level = 3; +} + +message CDOTAUserMsg_ESArcanaComboSummary { + optional uint32 ehandle = 1 [default = 16777215]; + optional uint32 combo_count = 2; + optional uint32 damage_amount = 3; +} + +message CDOTAUserMsg_OMArcanaCombo { + optional uint32 ehandle = 1 [default = 16777215]; + optional uint32 multicast_amount = 2; + optional uint32 arcana_level = 3; + optional uint32 multicast_chance = 4; +} + +message CDOTAUserMsg_HighFiveCompleted { + optional int32 player_id_1 = 1 [default = -1]; + optional int32 player_id_2 = 2 [default = -1]; + optional bool special_high_five = 3; + optional int32 special_entindex = 4 [default = -1]; +} + +message CDOTAUserMsg_HighFiveLeftHanging { + optional int32 player_id = 1 [default = -1]; +} + +message CDOTAUserMsg_ShovelUnearth { + optional int32 player_id = 1 [default = -1]; + optional bool all_chat = 2; + optional string locstring = 3; + optional uint32 quantity = 4; +} + +message CDOTAUserMsg_AllStarEvent { + message PlayerScore { + optional int32 player_id = 1 [default = -1]; + optional uint32 score_sans_kda = 2; + } + + optional int32 source_player_id = 1 [default = -1]; + optional int32 target_player_id = 2 [default = -1]; + optional uint32 point_amount = 3; + optional uint32 event_id = 4; + repeated .CDOTAUserMsg_AllStarEvent.PlayerScore player_scores = 5; +} + +message CDOTAUserMsg_QueuedOrderRemoved { + repeated uint32 unit_order_sequence = 1; +} + +message CDOTAUserMsg_DebugChallenge { + required uint32 challenge_type = 1; + required uint32 challenge_query_id = 2; + required uint32 event_id = 3; + optional uint32 instance_id = 4; + optional uint32 challenge_var_0 = 5; + optional uint32 challenge_var_1 = 6; + optional uint32 challenge_max_rank = 7; +} + +message CDOTAUserMsg_FoundNeutralItem { + optional int32 player_id = 1 [default = -1]; + optional int32 item_ability_id = 2 [default = -1]; + optional uint32 item_tier = 3; + optional uint32 tier_item_count = 4; +} + +message CDOTAUserMsg_OutpostCaptured { + optional int32 outpost_entindex = 1 [default = -1]; + optional uint32 team_id = 2; +} + +message CDOTAUserMsg_OutpostGrantedXP { + optional uint32 team_id = 1; + optional uint32 xp_amount = 2; +} + +message CDOTAUserMsg_MoveCameraToUnit { + optional uint32 unit_ehandle = 1 [default = 16777215]; +} + +message CDOTAUserMsg_PauseMinigameData { + message DataBit { + optional uint32 index = 1; + optional int32 data = 2; + optional int64 data_extra = 3; + } + + repeated .CDOTAUserMsg_PauseMinigameData.DataBit data_bits = 1; +} + +message CDOTAUserMsg_VersusScene_PlayerBehavior { + optional int32 player_id = 1 [default = -1]; + optional .EDOTAVersusScenePlayerBehavior behavior = 2 [default = VS_PLAYER_BEHAVIOR_PLAY_ACTIVITY]; + optional .VersusScene_PlayActivity play_activity = 3; + optional .VersusScene_ChatWheel chat_wheel = 4; + optional .VersusScene_PlaybackRate playback_rate = 5; +} + +message CDOTAUserMsg_QoP_ArcanaSummary { + optional uint32 ehandle = 1 [default = 16777215]; + optional uint32 arcana_level = 2; + optional uint32 players_hit = 3; + optional uint32 players_killed = 4; +} + +message CDOTAUserMsg_HotPotato_Created { + optional int32 player_id_1 = 1 [default = -1]; + optional int32 player_id_2 = 2 [default = -1]; +} + +message CDOTAUserMsg_HotPotato_Exploded { + optional int32 player_id = 1 [default = -1]; +} + +message CDOTAUserMsg_WK_Arcana_Progress { + optional uint32 ehandle = 1 [default = 16777215]; + optional uint32 arcana_level = 2; + optional int32 hero_id = 3; +} + +message CDOTAUserMsg_GuildChallenge_Progress { + message PlayerProgress { + optional int32 player_id = 1 [default = -1]; + optional uint32 progress = 6; + } + + enum EChallengeType { + k_EChallengeType_Invalid = 0; + k_EChallengeType_Cooperative = 1; + k_EChallengeType_Contract = 2; + } + + repeated .CDOTAUserMsg_GuildChallenge_Progress.PlayerProgress player_progress = 1; + optional uint32 guild_id = 2; + optional uint32 challenge_instance_id = 3; + optional uint32 challenge_parameter = 4; + optional .CDOTAUserMsg_GuildChallenge_Progress.EChallengeType challenge_type = 5 [default = k_EChallengeType_Invalid]; + optional uint32 challenge_progress_at_start = 7; + optional bool complete = 8; +} + +message CDOTAUserMsg_WRArcanaProgress { + optional uint32 ehandle = 1 [default = 16777215]; + optional uint32 target_ehandle = 2 [default = 16777215]; + optional uint32 arrows_landed = 3; + optional uint32 damage_dealt = 4; + optional uint32 target_hp = 5; + optional uint32 target_max_hp = 6; + optional uint32 arcana_level = 7; +} + +message CDOTAUserMsg_WRArcanaSummary { + optional uint32 ehandle = 1 [default = 16777215]; + optional uint32 target_ehandle = 2 [default = 16777215]; + optional uint32 arrows_landed = 3; + optional uint32 damage_dealt = 4; + optional uint32 target_hp = 5; + optional uint32 target_max_hp = 6; + optional uint32 arcana_level = 7; + optional bool success = 8; +} + +message CDOTAUserMsg_EmptyItemSlotAlert { + optional int32 source_player_id = 1 [default = -1]; + optional int32 target_player_id = 2 [default = -1]; + optional int32 slot_index = 3; + optional int32 cooldown_seconds = 4; +} + +message CDOTAUserMsg_AghsStatusAlert { + optional int32 source_player_id = 1 [default = -1]; + optional int32 target_player_id = 2 [default = -1]; + optional int32 target_entindex = 3 [default = -1]; + optional uint32 alert_type = 4; + optional bool has_scepter = 5; + optional bool has_shard = 6; +} + +message CDOTAUserMsg_MutedPlayers { + repeated int32 text_muted_player_ids = 1; + repeated int32 voice_muted_player_ids = 2; +} + +message CDOTAUserMsg_ContextualTip { + optional int32 tip_id = 1; + repeated string referenced_abilities = 2; + repeated string referenced_units = 3; + repeated string panorama_classes = 4; + optional bool force_annotation = 5; + optional int32 variant = 6; + optional int32 int_param = 7; + optional int32 int_param2 = 8; + optional float float_param = 9; + optional float float_param2 = 10; + optional string string_param = 11; + optional string string_param2 = 12; + optional string tip_text_override = 13; + optional string tip_annotation_override = 14; + optional string panorama_snippet = 15; +} + +message CDOTAUserMsg_ChatMessage { + optional int32 source_player_id = 1 [default = -1]; + optional uint32 channel_type = 2; + optional string message_text = 3; +} + +message CDOTAUserMsg_RockPaperScissorsStarted { + optional int32 player_id_source = 1 [default = -1]; + optional int32 player_id_target = 2 [default = -1]; +} + +message CDOTAUserMsg_RockPaperScissorsFinished { + optional int32 player_id_1 = 1 [default = -1]; + optional int32 player_id_2 = 2 [default = -1]; + optional int32 player_1_choice = 3; + optional int32 player_2_choice = 4; +} + +message CDOTAUserMsg_DuelOpponentKilled { + optional int32 player_id_winner = 1; + optional int32 player_id_loser = 2; +} + +message CDOTAUserMsg_DuelAccepted { + optional int32 player_id_1 = 1; + optional int32 player_id_2 = 2; +} + +message CDOTAUserMsg_DuelRequested { + optional int32 player_id_requestor = 1 [default = -1]; +} + +message CDOTAUserMsg_MuertaReleaseEvent_AssignedTargetKilled { + required int32 player_id_killer = 1 [default = -1]; + required int32 player_id_target = 2 [default = -1]; + required int32 points = 3; + required int32 points_total = 4; + required bool last_hit = 5; +} + +message CDOTAUserMsg_PlayerDraftSuggestPick { + optional int32 player_id = 1 [default = -1]; + optional int32 suggestion_player_id = 2 [default = -1]; +} + +message CDOTAUserMsg_PlayerDraftPick { + optional int32 player_id_captain = 1 [default = -1]; + optional int32 player_id_target = 2 [default = -1]; + optional int32 team = 3; +} + +message CDOTAUserMsg_FacetPing { + optional int32 player_id = 1 [default = -1]; + optional uint32 facet_strhash = 2; + optional uint32 entity_id = 3; + optional bool all_chat = 4; +} + +message CDOTAUserMsg_InnatePing { + optional int32 player_id = 1 [default = -1]; + optional uint32 entity_id = 2; + optional bool all_chat = 3; +}