-
Notifications
You must be signed in to change notification settings - Fork 57
/
dota_gcmessages_common.proto
1814 lines (1617 loc) · 52.7 KB
/
dota_gcmessages_common.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
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;