Skip to main content

d2_stampede_protobufs/
generated.rs

1// This file is @generated by prost-build.
2#[derive(serde::Serialize, serde::Deserialize)]
3#[allow(clippy::derive_partial_eq_without_eq)]
4#[derive(Clone, PartialEq, ::prost::Message)]
5pub struct CDemoFileHeader {
6    #[prost(string, required, tag = "1")]
7    pub demo_file_stamp: ::prost::alloc::string::String,
8    #[prost(int32, optional, tag = "2")]
9    pub network_protocol: ::core::option::Option<i32>,
10    #[prost(string, optional, tag = "3")]
11    pub server_name: ::core::option::Option<::prost::alloc::string::String>,
12    #[prost(string, optional, tag = "4")]
13    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14    #[prost(string, optional, tag = "5")]
15    pub map_name: ::core::option::Option<::prost::alloc::string::String>,
16    #[prost(string, optional, tag = "6")]
17    pub game_directory: ::core::option::Option<::prost::alloc::string::String>,
18    #[prost(int32, optional, tag = "7")]
19    pub fullpackets_version: ::core::option::Option<i32>,
20    #[prost(bool, optional, tag = "8")]
21    pub allow_clientside_entities: ::core::option::Option<bool>,
22    #[prost(bool, optional, tag = "9")]
23    pub allow_clientside_particles: ::core::option::Option<bool>,
24    #[prost(string, optional, tag = "10")]
25    pub addons: ::core::option::Option<::prost::alloc::string::String>,
26    #[prost(string, optional, tag = "11")]
27    pub demo_version_name: ::core::option::Option<::prost::alloc::string::String>,
28    #[prost(string, optional, tag = "12")]
29    pub demo_version_guid: ::core::option::Option<::prost::alloc::string::String>,
30    #[prost(int32, optional, tag = "13")]
31    pub build_num: ::core::option::Option<i32>,
32    #[prost(string, optional, tag = "14")]
33    pub game: ::core::option::Option<::prost::alloc::string::String>,
34    #[prost(int32, optional, tag = "15")]
35    pub server_start_tick: ::core::option::Option<i32>,
36}
37#[derive(serde::Serialize, serde::Deserialize)]
38#[allow(clippy::derive_partial_eq_without_eq)]
39#[derive(Clone, PartialEq, ::prost::Message)]
40pub struct CGameInfo {
41    #[prost(message, optional, tag = "4")]
42    pub dota: ::core::option::Option<c_game_info::CDotaGameInfo>,
43    #[prost(message, optional, tag = "5")]
44    pub cs: ::core::option::Option<c_game_info::CcsGameInfo>,
45}
46/// Nested message and enum types in `CGameInfo`.
47pub mod c_game_info {
48    #[derive(serde::Serialize, serde::Deserialize)]
49    #[allow(clippy::derive_partial_eq_without_eq)]
50    #[derive(Clone, PartialEq, ::prost::Message)]
51    pub struct CDotaGameInfo {
52        #[prost(uint64, optional, tag = "1")]
53        pub match_id: ::core::option::Option<u64>,
54        #[prost(int32, optional, tag = "2")]
55        pub game_mode: ::core::option::Option<i32>,
56        #[prost(int32, optional, tag = "3")]
57        pub game_winner: ::core::option::Option<i32>,
58        #[prost(message, repeated, tag = "4")]
59        pub player_info: ::prost::alloc::vec::Vec<c_dota_game_info::CPlayerInfo>,
60        #[prost(uint32, optional, tag = "5")]
61        pub leagueid: ::core::option::Option<u32>,
62        #[prost(message, repeated, tag = "6")]
63        pub picks_bans: ::prost::alloc::vec::Vec<c_dota_game_info::CHeroSelectEvent>,
64        #[prost(uint32, optional, tag = "7")]
65        pub radiant_team_id: ::core::option::Option<u32>,
66        #[prost(uint32, optional, tag = "8")]
67        pub dire_team_id: ::core::option::Option<u32>,
68        #[prost(string, optional, tag = "9")]
69        pub radiant_team_tag: ::core::option::Option<::prost::alloc::string::String>,
70        #[prost(string, optional, tag = "10")]
71        pub dire_team_tag: ::core::option::Option<::prost::alloc::string::String>,
72        #[prost(uint32, optional, tag = "11")]
73        pub end_time: ::core::option::Option<u32>,
74    }
75    /// Nested message and enum types in `CDotaGameInfo`.
76    pub mod c_dota_game_info {
77        #[derive(serde::Serialize, serde::Deserialize)]
78        #[allow(clippy::derive_partial_eq_without_eq)]
79        #[derive(Clone, PartialEq, ::prost::Message)]
80        pub struct CPlayerInfo {
81            #[prost(string, optional, tag = "1")]
82            pub hero_name: ::core::option::Option<::prost::alloc::string::String>,
83            #[prost(string, optional, tag = "2")]
84            pub player_name: ::core::option::Option<::prost::alloc::string::String>,
85            #[prost(bool, optional, tag = "3")]
86            pub is_fake_client: ::core::option::Option<bool>,
87            #[prost(uint64, optional, tag = "4")]
88            pub steamid: ::core::option::Option<u64>,
89            #[prost(int32, optional, tag = "5")]
90            pub game_team: ::core::option::Option<i32>,
91        }
92        #[derive(serde::Serialize, serde::Deserialize)]
93        #[allow(clippy::derive_partial_eq_without_eq)]
94        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
95        pub struct CHeroSelectEvent {
96            #[prost(bool, optional, tag = "1")]
97            pub is_pick: ::core::option::Option<bool>,
98            #[prost(uint32, optional, tag = "2")]
99            pub team: ::core::option::Option<u32>,
100            #[prost(uint32, optional, tag = "3")]
101            pub hero_id: ::core::option::Option<u32>,
102        }
103    }
104    #[derive(serde::Serialize, serde::Deserialize)]
105    #[allow(clippy::derive_partial_eq_without_eq)]
106    #[derive(Clone, PartialEq, ::prost::Message)]
107    pub struct CcsGameInfo {
108        #[prost(int32, repeated, packed = "false", tag = "1")]
109        pub round_start_ticks: ::prost::alloc::vec::Vec<i32>,
110    }
111}
112#[derive(serde::Serialize, serde::Deserialize)]
113#[allow(clippy::derive_partial_eq_without_eq)]
114#[derive(Clone, PartialEq, ::prost::Message)]
115pub struct CDemoFileInfo {
116    #[prost(float, optional, tag = "1")]
117    pub playback_time: ::core::option::Option<f32>,
118    #[prost(int32, optional, tag = "2")]
119    pub playback_ticks: ::core::option::Option<i32>,
120    #[prost(int32, optional, tag = "3")]
121    pub playback_frames: ::core::option::Option<i32>,
122    #[prost(message, optional, tag = "4")]
123    pub game_info: ::core::option::Option<CGameInfo>,
124}
125#[derive(serde::Serialize, serde::Deserialize)]
126#[allow(clippy::derive_partial_eq_without_eq)]
127#[derive(Clone, PartialEq, ::prost::Message)]
128pub struct CDemoPacket {
129    #[prost(bytes = "vec", optional, tag = "3")]
130    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
131}
132#[derive(serde::Serialize, serde::Deserialize)]
133#[allow(clippy::derive_partial_eq_without_eq)]
134#[derive(Clone, PartialEq, ::prost::Message)]
135pub struct CDemoFullPacket {
136    #[prost(message, optional, tag = "1")]
137    pub string_table: ::core::option::Option<CDemoStringTables>,
138    #[prost(message, optional, tag = "2")]
139    pub packet: ::core::option::Option<CDemoPacket>,
140}
141#[derive(serde::Serialize, serde::Deserialize)]
142#[allow(clippy::derive_partial_eq_without_eq)]
143#[derive(Clone, PartialEq, ::prost::Message)]
144pub struct CDemoSaveGame {
145    #[prost(bytes = "vec", optional, tag = "1")]
146    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
147    #[prost(fixed64, optional, tag = "2")]
148    pub steam_id: ::core::option::Option<u64>,
149    #[prost(fixed64, optional, tag = "3")]
150    pub signature: ::core::option::Option<u64>,
151    #[prost(int32, optional, tag = "4")]
152    pub version: ::core::option::Option<i32>,
153}
154#[derive(serde::Serialize, serde::Deserialize)]
155#[allow(clippy::derive_partial_eq_without_eq)]
156#[derive(Clone, Copy, PartialEq, ::prost::Message)]
157pub struct CDemoSyncTick {}
158#[derive(serde::Serialize, serde::Deserialize)]
159#[allow(clippy::derive_partial_eq_without_eq)]
160#[derive(Clone, PartialEq, ::prost::Message)]
161pub struct CDemoConsoleCmd {
162    #[prost(string, optional, tag = "1")]
163    pub cmdstring: ::core::option::Option<::prost::alloc::string::String>,
164}
165#[derive(serde::Serialize, serde::Deserialize)]
166#[allow(clippy::derive_partial_eq_without_eq)]
167#[derive(Clone, PartialEq, ::prost::Message)]
168pub struct CDemoSendTables {
169    #[prost(bytes = "vec", optional, tag = "1")]
170    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
171}
172#[derive(serde::Serialize, serde::Deserialize)]
173#[allow(clippy::derive_partial_eq_without_eq)]
174#[derive(Clone, PartialEq, ::prost::Message)]
175pub struct CDemoClassInfo {
176    #[prost(message, repeated, tag = "1")]
177    pub classes: ::prost::alloc::vec::Vec<c_demo_class_info::ClassT>,
178}
179/// Nested message and enum types in `CDemoClassInfo`.
180pub mod c_demo_class_info {
181    #[derive(serde::Serialize, serde::Deserialize)]
182    #[allow(clippy::derive_partial_eq_without_eq)]
183    #[derive(Clone, PartialEq, ::prost::Message)]
184    pub struct ClassT {
185        #[prost(int32, optional, tag = "1")]
186        pub class_id: ::core::option::Option<i32>,
187        #[prost(string, optional, tag = "2")]
188        pub network_name: ::core::option::Option<::prost::alloc::string::String>,
189        #[prost(string, optional, tag = "3")]
190        pub table_name: ::core::option::Option<::prost::alloc::string::String>,
191    }
192}
193#[derive(serde::Serialize, serde::Deserialize)]
194#[allow(clippy::derive_partial_eq_without_eq)]
195#[derive(Clone, PartialEq, ::prost::Message)]
196pub struct CDemoCustomData {
197    #[prost(int32, optional, tag = "1")]
198    pub callback_index: ::core::option::Option<i32>,
199    #[prost(bytes = "vec", optional, tag = "2")]
200    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
201}
202#[derive(serde::Serialize, serde::Deserialize)]
203#[allow(clippy::derive_partial_eq_without_eq)]
204#[derive(Clone, PartialEq, ::prost::Message)]
205pub struct CDemoCustomDataCallbacks {
206    #[prost(string, repeated, tag = "1")]
207    pub save_id: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
208}
209#[derive(serde::Serialize, serde::Deserialize)]
210#[allow(clippy::derive_partial_eq_without_eq)]
211#[derive(Clone, PartialEq, ::prost::Message)]
212pub struct CDemoAnimationHeader {
213    #[prost(sint32, optional, tag = "1")]
214    pub entity_id: ::core::option::Option<i32>,
215    #[prost(int32, optional, tag = "2")]
216    pub tick: ::core::option::Option<i32>,
217    #[prost(bytes = "vec", optional, tag = "3")]
218    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
219}
220#[derive(serde::Serialize, serde::Deserialize)]
221#[allow(clippy::derive_partial_eq_without_eq)]
222#[derive(Clone, PartialEq, ::prost::Message)]
223pub struct CDemoAnimationData {
224    #[prost(sint32, optional, tag = "1")]
225    pub entity_id: ::core::option::Option<i32>,
226    #[prost(int32, optional, tag = "2")]
227    pub start_tick: ::core::option::Option<i32>,
228    #[prost(int32, optional, tag = "3")]
229    pub end_tick: ::core::option::Option<i32>,
230    #[prost(bytes = "vec", optional, tag = "4")]
231    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
232    #[prost(int64, optional, tag = "5")]
233    pub data_checksum: ::core::option::Option<i64>,
234}
235#[derive(serde::Serialize, serde::Deserialize)]
236#[allow(clippy::derive_partial_eq_without_eq)]
237#[derive(Clone, PartialEq, ::prost::Message)]
238pub struct CDemoStringTables {
239    #[prost(message, repeated, tag = "1")]
240    pub tables: ::prost::alloc::vec::Vec<c_demo_string_tables::TableT>,
241}
242/// Nested message and enum types in `CDemoStringTables`.
243pub mod c_demo_string_tables {
244    #[derive(serde::Serialize, serde::Deserialize)]
245    #[allow(clippy::derive_partial_eq_without_eq)]
246    #[derive(Clone, PartialEq, ::prost::Message)]
247    pub struct ItemsT {
248        #[prost(string, optional, tag = "1")]
249        pub str: ::core::option::Option<::prost::alloc::string::String>,
250        #[prost(bytes = "vec", optional, tag = "2")]
251        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
252    }
253    #[derive(serde::Serialize, serde::Deserialize)]
254    #[allow(clippy::derive_partial_eq_without_eq)]
255    #[derive(Clone, PartialEq, ::prost::Message)]
256    pub struct TableT {
257        #[prost(string, optional, tag = "1")]
258        pub table_name: ::core::option::Option<::prost::alloc::string::String>,
259        #[prost(message, repeated, tag = "2")]
260        pub items: ::prost::alloc::vec::Vec<ItemsT>,
261        #[prost(message, repeated, tag = "3")]
262        pub items_clientside: ::prost::alloc::vec::Vec<ItemsT>,
263        #[prost(int32, optional, tag = "4")]
264        pub table_flags: ::core::option::Option<i32>,
265    }
266}
267#[derive(serde::Serialize, serde::Deserialize)]
268#[allow(clippy::derive_partial_eq_without_eq)]
269#[derive(Clone, Copy, PartialEq, ::prost::Message)]
270pub struct CDemoStop {}
271#[derive(serde::Serialize, serde::Deserialize)]
272#[allow(clippy::derive_partial_eq_without_eq)]
273#[derive(Clone, PartialEq, ::prost::Message)]
274pub struct CDemoUserCmd {
275    #[prost(int32, optional, tag = "1")]
276    pub cmd_number: ::core::option::Option<i32>,
277    #[prost(bytes = "vec", optional, tag = "2")]
278    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
279}
280#[derive(serde::Serialize, serde::Deserialize)]
281#[allow(clippy::derive_partial_eq_without_eq)]
282#[derive(Clone, PartialEq, ::prost::Message)]
283pub struct CDemoSpawnGroups {
284    #[prost(bytes = "vec", repeated, tag = "3")]
285    pub msgs: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
286}
287#[derive(
288    serde::Serialize,
289    serde::Deserialize,
290    Clone,
291    Copy,
292    Debug,
293    PartialEq,
294    Eq,
295    Hash,
296    PartialOrd,
297    Ord,
298    ::prost::Enumeration,
299)]
300#[repr(i32)]
301pub enum EDemoCommands {
302    DemError = -1,
303    DemStop = 0,
304    DemFileHeader = 1,
305    DemFileInfo = 2,
306    DemSyncTick = 3,
307    DemSendTables = 4,
308    DemClassInfo = 5,
309    DemStringTables = 6,
310    DemPacket = 7,
311    DemSignonPacket = 8,
312    DemConsoleCmd = 9,
313    DemCustomData = 10,
314    DemCustomDataCallbacks = 11,
315    DemUserCmd = 12,
316    DemFullPacket = 13,
317    DemSaveGame = 14,
318    DemSpawnGroups = 15,
319    DemAnimationData = 16,
320    DemAnimationHeader = 17,
321    DemMax = 18,
322    DemIsCompressed = 64,
323}
324#[derive(
325    serde::Serialize,
326    serde::Deserialize,
327    Clone,
328    Copy,
329    Debug,
330    PartialEq,
331    Eq,
332    Hash,
333    PartialOrd,
334    Ord,
335    ::prost::Enumeration,
336)]
337#[repr(i32)]
338pub enum ENetworkDisconnectionReason {
339    NetworkDisconnectInvalid = 0,
340    NetworkDisconnectShutdown = 1,
341    NetworkDisconnectDisconnectByUser = 2,
342    NetworkDisconnectDisconnectByServer = 3,
343    NetworkDisconnectLost = 4,
344    NetworkDisconnectOverflow = 5,
345    NetworkDisconnectSteamBanned = 6,
346    NetworkDisconnectSteamInuse = 7,
347    NetworkDisconnectSteamTicket = 8,
348    NetworkDisconnectSteamLogon = 9,
349    NetworkDisconnectSteamAuthcancelled = 10,
350    NetworkDisconnectSteamAuthalreadyused = 11,
351    NetworkDisconnectSteamAuthinvalid = 12,
352    NetworkDisconnectSteamVacbanstate = 13,
353    NetworkDisconnectSteamLoggedInElsewhere = 14,
354    NetworkDisconnectSteamVacCheckTimedout = 15,
355    NetworkDisconnectSteamDropped = 16,
356    NetworkDisconnectSteamOwnership = 17,
357    NetworkDisconnectServerinfoOverflow = 18,
358    NetworkDisconnectTickmsgOverflow = 19,
359    NetworkDisconnectStringtablemsgOverflow = 20,
360    NetworkDisconnectDeltaentmsgOverflow = 21,
361    NetworkDisconnectTempentmsgOverflow = 22,
362    NetworkDisconnectSoundsmsgOverflow = 23,
363    NetworkDisconnectSnapshotoverflow = 24,
364    NetworkDisconnectSnapshoterror = 25,
365    NetworkDisconnectReliableoverflow = 26,
366    NetworkDisconnectBaddeltatick = 27,
367    NetworkDisconnectNomoresplits = 28,
368    NetworkDisconnectTimedout = 29,
369    NetworkDisconnectDisconnected = 30,
370    NetworkDisconnectLeavingsplit = 31,
371    NetworkDisconnectDifferentclasstables = 32,
372    NetworkDisconnectBadrelaypassword = 33,
373    NetworkDisconnectBadspectatorpassword = 34,
374    NetworkDisconnectHltvrestricted = 35,
375    NetworkDisconnectNospectators = 36,
376    NetworkDisconnectHltvunavailable = 37,
377    NetworkDisconnectHltvstop = 38,
378    NetworkDisconnectKicked = 39,
379    NetworkDisconnectBanadded = 40,
380    NetworkDisconnectKickbanadded = 41,
381    NetworkDisconnectHltvdirect = 42,
382    NetworkDisconnectPureserverClientextra = 43,
383    NetworkDisconnectPureserverMismatch = 44,
384    NetworkDisconnectUsercmd = 45,
385    NetworkDisconnectRejectedByGame = 46,
386    NetworkDisconnectMessageParseError = 47,
387    NetworkDisconnectInvalidMessageError = 48,
388    NetworkDisconnectBadServerPassword = 49,
389    NetworkDisconnectDirectConnectReservation = 50,
390    NetworkDisconnectConnectionFailure = 51,
391    NetworkDisconnectNoPeerGroupHandlers = 52,
392    NetworkDisconnectReconnection = 53,
393    NetworkDisconnectLoopshutdown = 54,
394    NetworkDisconnectLoopdeactivate = 55,
395    NetworkDisconnectHostEndgame = 56,
396    NetworkDisconnectLoopLevelloadActivate = 57,
397    NetworkDisconnectCreateServerFailed = 58,
398    NetworkDisconnectExiting = 59,
399    NetworkDisconnectRequestHoststateIdle = 60,
400    NetworkDisconnectRequestHoststateHltvrelay = 61,
401    NetworkDisconnectClientConsistencyFail = 62,
402    NetworkDisconnectClientUnableToCrcMap = 63,
403    NetworkDisconnectClientNoMap = 64,
404    NetworkDisconnectClientDifferentMap = 65,
405    NetworkDisconnectServerRequiresSteam = 66,
406    NetworkDisconnectSteamDenyMisc = 67,
407    NetworkDisconnectSteamDenyBadAntiCheat = 68,
408    NetworkDisconnectServerShutdown = 69,
409    NetworkDisconnectReplayIncompatible = 71,
410    NetworkDisconnectConnectRequestTimedout = 72,
411    NetworkDisconnectServerIncompatible = 73,
412    NetworkDisconnectLocalproblemManyrelays = 74,
413    NetworkDisconnectLocalproblemHostedserverprimaryrelay = 75,
414    NetworkDisconnectLocalproblemNetworkconfig = 76,
415    NetworkDisconnectLocalproblemOther = 77,
416    NetworkDisconnectRemoteTimeout = 79,
417    NetworkDisconnectRemoteTimeoutConnecting = 80,
418    NetworkDisconnectRemoteOther = 81,
419    NetworkDisconnectRemoteBadcrypt = 82,
420    NetworkDisconnectRemoteCertnottrusted = 83,
421    NetworkDisconnectUnusual = 84,
422    NetworkDisconnectInternalError = 85,
423    NetworkDisconnectRejectBadchallenge = 128,
424    NetworkDisconnectRejectNolobby = 129,
425    NetworkDisconnectRejectBackgroundMap = 130,
426    NetworkDisconnectRejectSinglePlayer = 131,
427    NetworkDisconnectRejectHiddenGame = 132,
428    NetworkDisconnectRejectLanrestrict = 133,
429    NetworkDisconnectRejectBadpassword = 134,
430    NetworkDisconnectRejectServerfull = 135,
431    NetworkDisconnectRejectInvalidreservation = 136,
432    NetworkDisconnectRejectFailedchannel = 137,
433    NetworkDisconnectRejectConnectFromLobby = 138,
434    NetworkDisconnectRejectReservedForLobby = 139,
435    NetworkDisconnectRejectInvalidkeylength = 140,
436    NetworkDisconnectRejectOldprotocol = 141,
437    NetworkDisconnectRejectNewprotocol = 142,
438    NetworkDisconnectRejectInvalidconnection = 143,
439    NetworkDisconnectRejectInvalidcertlen = 144,
440    NetworkDisconnectRejectInvalidsteamcertlen = 145,
441    NetworkDisconnectRejectSteam = 146,
442    NetworkDisconnectRejectServerauthdisabled = 147,
443    NetworkDisconnectRejectServercdkeyauthinvalid = 148,
444    NetworkDisconnectRejectBanned = 149,
445    NetworkDisconnectKickedTeamkilling = 150,
446    NetworkDisconnectKickedTkStart = 151,
447    NetworkDisconnectKickedUntrustedaccount = 152,
448    NetworkDisconnectKickedConvictedaccount = 153,
449    NetworkDisconnectKickedCompetitivecooldown = 154,
450    NetworkDisconnectKickedTeamhurting = 155,
451    NetworkDisconnectKickedHostagekilling = 156,
452    NetworkDisconnectKickedVotedoff = 157,
453    NetworkDisconnectKickedIdle = 158,
454    NetworkDisconnectKickedSuicide = 159,
455    NetworkDisconnectKickedNosteamlogin = 160,
456    NetworkDisconnectKickedNosteamticket = 161,
457}
458#[derive(serde::Serialize, serde::Deserialize)]
459#[allow(clippy::derive_partial_eq_without_eq)]
460#[derive(Clone, Copy, PartialEq, ::prost::Message)]
461pub struct CMsgVector {
462    #[prost(float, optional, tag = "1")]
463    pub x: ::core::option::Option<f32>,
464    #[prost(float, optional, tag = "2")]
465    pub y: ::core::option::Option<f32>,
466    #[prost(float, optional, tag = "3")]
467    pub z: ::core::option::Option<f32>,
468    #[prost(float, optional, tag = "4")]
469    pub w: ::core::option::Option<f32>,
470}
471#[derive(serde::Serialize, serde::Deserialize)]
472#[allow(clippy::derive_partial_eq_without_eq)]
473#[derive(Clone, Copy, PartialEq, ::prost::Message)]
474pub struct CMsgVector2D {
475    #[prost(float, optional, tag = "1")]
476    pub x: ::core::option::Option<f32>,
477    #[prost(float, optional, tag = "2")]
478    pub y: ::core::option::Option<f32>,
479}
480#[derive(serde::Serialize, serde::Deserialize)]
481#[allow(clippy::derive_partial_eq_without_eq)]
482#[derive(Clone, Copy, PartialEq, ::prost::Message)]
483pub struct CMsgQAngle {
484    #[prost(float, optional, tag = "1")]
485    pub x: ::core::option::Option<f32>,
486    #[prost(float, optional, tag = "2")]
487    pub y: ::core::option::Option<f32>,
488    #[prost(float, optional, tag = "3")]
489    pub z: ::core::option::Option<f32>,
490}
491#[derive(serde::Serialize, serde::Deserialize)]
492#[allow(clippy::derive_partial_eq_without_eq)]
493#[derive(Clone, Copy, PartialEq, ::prost::Message)]
494pub struct CMsgQuaternion {
495    #[prost(float, optional, tag = "1")]
496    pub x: ::core::option::Option<f32>,
497    #[prost(float, optional, tag = "2")]
498    pub y: ::core::option::Option<f32>,
499    #[prost(float, optional, tag = "3")]
500    pub z: ::core::option::Option<f32>,
501    #[prost(float, optional, tag = "4")]
502    pub w: ::core::option::Option<f32>,
503}
504#[derive(serde::Serialize, serde::Deserialize)]
505#[allow(clippy::derive_partial_eq_without_eq)]
506#[derive(Clone, Copy, PartialEq, ::prost::Message)]
507pub struct CMsgTransform {
508    #[prost(message, optional, tag = "1")]
509    pub position: ::core::option::Option<CMsgVector>,
510    #[prost(float, optional, tag = "2")]
511    pub scale: ::core::option::Option<f32>,
512    #[prost(message, optional, tag = "3")]
513    pub orientation: ::core::option::Option<CMsgQuaternion>,
514}
515#[derive(serde::Serialize, serde::Deserialize)]
516#[allow(clippy::derive_partial_eq_without_eq)]
517#[derive(Clone, Copy, PartialEq, ::prost::Message)]
518pub struct CMsgRgba {
519    #[prost(int32, optional, tag = "1")]
520    pub r: ::core::option::Option<i32>,
521    #[prost(int32, optional, tag = "2")]
522    pub g: ::core::option::Option<i32>,
523    #[prost(int32, optional, tag = "3")]
524    pub b: ::core::option::Option<i32>,
525    #[prost(int32, optional, tag = "4")]
526    pub a: ::core::option::Option<i32>,
527}
528#[derive(serde::Serialize, serde::Deserialize)]
529#[allow(clippy::derive_partial_eq_without_eq)]
530#[derive(Clone, PartialEq, ::prost::Message)]
531pub struct CMsgPlayerInfo {
532    #[prost(string, optional, tag = "1")]
533    pub name: ::core::option::Option<::prost::alloc::string::String>,
534    #[prost(fixed64, optional, tag = "2")]
535    pub xuid: ::core::option::Option<u64>,
536    #[prost(int32, optional, tag = "3")]
537    pub userid: ::core::option::Option<i32>,
538    #[prost(fixed64, optional, tag = "4")]
539    pub steamid: ::core::option::Option<u64>,
540    #[prost(bool, optional, tag = "5")]
541    pub fakeplayer: ::core::option::Option<bool>,
542    #[prost(bool, optional, tag = "6")]
543    pub ishltv: ::core::option::Option<bool>,
544}
545#[derive(serde::Serialize, serde::Deserialize)]
546#[allow(clippy::derive_partial_eq_without_eq)]
547#[derive(Clone, Copy, PartialEq, ::prost::Message)]
548pub struct CEntityMsg {
549    #[prost(uint32, optional, tag = "1", default = "16777215")]
550    pub target_entity: ::core::option::Option<u32>,
551}
552#[derive(serde::Serialize, serde::Deserialize)]
553#[allow(clippy::derive_partial_eq_without_eq)]
554#[derive(Clone, PartialEq, ::prost::Message)]
555pub struct CMsgCVars {
556    #[prost(message, repeated, tag = "1")]
557    pub cvars: ::prost::alloc::vec::Vec<c_msg_c_vars::CVar>,
558}
559/// Nested message and enum types in `CMsg_CVars`.
560pub mod c_msg_c_vars {
561    #[derive(serde::Serialize, serde::Deserialize)]
562    #[allow(clippy::derive_partial_eq_without_eq)]
563    #[derive(Clone, PartialEq, ::prost::Message)]
564    pub struct CVar {
565        #[prost(string, optional, tag = "1")]
566        pub name: ::core::option::Option<::prost::alloc::string::String>,
567        #[prost(string, optional, tag = "2")]
568        pub value: ::core::option::Option<::prost::alloc::string::String>,
569    }
570}
571#[derive(serde::Serialize, serde::Deserialize)]
572#[allow(clippy::derive_partial_eq_without_eq)]
573#[derive(Clone, Copy, PartialEq, ::prost::Message)]
574pub struct CNetMsgNop {}
575#[derive(serde::Serialize, serde::Deserialize)]
576#[allow(clippy::derive_partial_eq_without_eq)]
577#[derive(Clone, Copy, PartialEq, ::prost::Message)]
578pub struct CNetMsgSplitScreenUser {
579    #[prost(int32, optional, tag = "1")]
580    pub slot: ::core::option::Option<i32>,
581}
582#[derive(serde::Serialize, serde::Deserialize)]
583#[allow(clippy::derive_partial_eq_without_eq)]
584#[derive(Clone, Copy, PartialEq, ::prost::Message)]
585pub struct CNetMsgDisconnectLegacy {
586    #[prost(
587        enumeration = "ENetworkDisconnectionReason",
588        optional,
589        tag = "2",
590        default = "NetworkDisconnectInvalid"
591    )]
592    pub reason: ::core::option::Option<i32>,
593}
594#[derive(serde::Serialize, serde::Deserialize)]
595#[allow(clippy::derive_partial_eq_without_eq)]
596#[derive(Clone, PartialEq, ::prost::Message)]
597pub struct CNetMsgTick {
598    #[prost(uint32, optional, tag = "1")]
599    pub tick: ::core::option::Option<u32>,
600    #[prost(uint32, optional, tag = "2")]
601    pub host_frametime: ::core::option::Option<u32>,
602    #[prost(uint32, optional, tag = "3")]
603    pub host_frametime_std_deviation: ::core::option::Option<u32>,
604    #[prost(uint32, optional, tag = "4")]
605    pub host_computationtime: ::core::option::Option<u32>,
606    #[prost(uint32, optional, tag = "5")]
607    pub host_computationtime_std_deviation: ::core::option::Option<u32>,
608    #[prost(uint32, optional, tag = "6")]
609    pub host_framestarttime_std_deviation: ::core::option::Option<u32>,
610    #[prost(uint32, optional, tag = "7")]
611    pub host_loss: ::core::option::Option<u32>,
612    #[prost(uint32, optional, tag = "8")]
613    pub host_unfiltered_frametime: ::core::option::Option<u32>,
614    #[prost(uint32, optional, tag = "9")]
615    pub hltv_replay_flags: ::core::option::Option<u32>,
616    #[prost(uint32, optional, tag = "10")]
617    pub expected_long_tick: ::core::option::Option<u32>,
618    #[prost(string, optional, tag = "11")]
619    pub expected_long_tick_reason: ::core::option::Option<::prost::alloc::string::String>,
620}
621#[derive(serde::Serialize, serde::Deserialize)]
622#[allow(clippy::derive_partial_eq_without_eq)]
623#[derive(Clone, PartialEq, ::prost::Message)]
624pub struct CNetMsgStringCmd {
625    #[prost(string, optional, tag = "1")]
626    pub command: ::core::option::Option<::prost::alloc::string::String>,
627    #[prost(uint32, optional, tag = "2")]
628    pub prediction_sync: ::core::option::Option<u32>,
629}
630#[derive(serde::Serialize, serde::Deserialize)]
631#[allow(clippy::derive_partial_eq_without_eq)]
632#[derive(Clone, PartialEq, ::prost::Message)]
633pub struct CNetMsgSetConVar {
634    #[prost(message, optional, tag = "1")]
635    pub convars: ::core::option::Option<CMsgCVars>,
636}
637#[derive(serde::Serialize, serde::Deserialize)]
638#[allow(clippy::derive_partial_eq_without_eq)]
639#[derive(Clone, PartialEq, ::prost::Message)]
640pub struct CNetMsgSignonState {
641    #[prost(
642        enumeration = "SignonStateT",
643        optional,
644        tag = "1",
645        default = "SignonstateNone"
646    )]
647    pub signon_state: ::core::option::Option<i32>,
648    #[prost(uint32, optional, tag = "2")]
649    pub spawn_count: ::core::option::Option<u32>,
650    #[prost(uint32, optional, tag = "3")]
651    pub num_server_players: ::core::option::Option<u32>,
652    #[prost(string, repeated, tag = "4")]
653    pub players_networkids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
654    #[prost(string, optional, tag = "5")]
655    pub map_name: ::core::option::Option<::prost::alloc::string::String>,
656    #[prost(string, optional, tag = "6")]
657    pub addons: ::core::option::Option<::prost::alloc::string::String>,
658}
659#[derive(serde::Serialize, serde::Deserialize)]
660#[allow(clippy::derive_partial_eq_without_eq)]
661#[derive(Clone, PartialEq, ::prost::Message)]
662pub struct CSvcMsgGameEvent {
663    #[prost(string, optional, tag = "1")]
664    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
665    #[prost(int32, optional, tag = "2")]
666    pub eventid: ::core::option::Option<i32>,
667    #[prost(message, repeated, tag = "3")]
668    pub keys: ::prost::alloc::vec::Vec<csvc_msg_game_event::KeyT>,
669}
670/// Nested message and enum types in `CSVCMsg_GameEvent`.
671pub mod csvc_msg_game_event {
672    #[derive(serde::Serialize, serde::Deserialize)]
673    #[allow(clippy::derive_partial_eq_without_eq)]
674    #[derive(Clone, PartialEq, ::prost::Message)]
675    pub struct KeyT {
676        #[prost(int32, optional, tag = "1")]
677        pub r#type: ::core::option::Option<i32>,
678        #[prost(string, optional, tag = "2")]
679        pub val_string: ::core::option::Option<::prost::alloc::string::String>,
680        #[prost(float, optional, tag = "3")]
681        pub val_float: ::core::option::Option<f32>,
682        #[prost(int32, optional, tag = "4")]
683        pub val_long: ::core::option::Option<i32>,
684        #[prost(int32, optional, tag = "5")]
685        pub val_short: ::core::option::Option<i32>,
686        #[prost(int32, optional, tag = "6")]
687        pub val_byte: ::core::option::Option<i32>,
688        #[prost(bool, optional, tag = "7")]
689        pub val_bool: ::core::option::Option<bool>,
690        #[prost(uint64, optional, tag = "8")]
691        pub val_uint64: ::core::option::Option<u64>,
692    }
693}
694#[derive(serde::Serialize, serde::Deserialize)]
695#[allow(clippy::derive_partial_eq_without_eq)]
696#[derive(Clone, PartialEq, ::prost::Message)]
697pub struct CSvcMsgListGameEvents {
698    #[prost(message, repeated, tag = "1")]
699    pub events: ::prost::alloc::vec::Vec<csvc_msg_list_game_events::EventT>,
700}
701/// Nested message and enum types in `CSVCMsgList_GameEvents`.
702pub mod csvc_msg_list_game_events {
703    #[derive(serde::Serialize, serde::Deserialize)]
704    #[allow(clippy::derive_partial_eq_without_eq)]
705    #[derive(Clone, PartialEq, ::prost::Message)]
706    pub struct EventT {
707        #[prost(int32, optional, tag = "1")]
708        pub tick: ::core::option::Option<i32>,
709        #[prost(message, optional, tag = "2")]
710        pub event: ::core::option::Option<super::CSvcMsgGameEvent>,
711    }
712}
713#[derive(serde::Serialize, serde::Deserialize)]
714#[allow(clippy::derive_partial_eq_without_eq)]
715#[derive(Clone, PartialEq, ::prost::Message)]
716pub struct CNetMsgSpawnGroupLoad {
717    #[prost(string, optional, tag = "1")]
718    pub worldname: ::core::option::Option<::prost::alloc::string::String>,
719    #[prost(string, optional, tag = "2")]
720    pub entitylumpname: ::core::option::Option<::prost::alloc::string::String>,
721    #[prost(string, optional, tag = "3")]
722    pub entityfiltername: ::core::option::Option<::prost::alloc::string::String>,
723    #[prost(uint32, optional, tag = "4")]
724    pub spawngrouphandle: ::core::option::Option<u32>,
725    #[prost(uint32, optional, tag = "5")]
726    pub spawngroupownerhandle: ::core::option::Option<u32>,
727    #[prost(message, optional, tag = "6")]
728    pub world_offset_pos: ::core::option::Option<CMsgVector>,
729    #[prost(message, optional, tag = "7")]
730    pub world_offset_angle: ::core::option::Option<CMsgQAngle>,
731    #[prost(bytes = "vec", optional, tag = "8")]
732    pub spawngroupmanifest: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
733    #[prost(uint32, optional, tag = "9")]
734    pub flags: ::core::option::Option<u32>,
735    #[prost(int32, optional, tag = "10")]
736    pub tickcount: ::core::option::Option<i32>,
737    #[prost(bool, optional, tag = "11")]
738    pub manifestincomplete: ::core::option::Option<bool>,
739    #[prost(string, optional, tag = "12")]
740    pub localnamefixup: ::core::option::Option<::prost::alloc::string::String>,
741    #[prost(string, optional, tag = "13")]
742    pub parentnamefixup: ::core::option::Option<::prost::alloc::string::String>,
743    #[prost(int32, optional, tag = "14")]
744    pub manifestloadpriority: ::core::option::Option<i32>,
745    #[prost(uint32, optional, tag = "15")]
746    pub worldgroupid: ::core::option::Option<u32>,
747    #[prost(uint32, optional, tag = "16")]
748    pub creationsequence: ::core::option::Option<u32>,
749    #[prost(string, optional, tag = "17")]
750    pub savegamefilename: ::core::option::Option<::prost::alloc::string::String>,
751    #[prost(uint32, optional, tag = "18")]
752    pub spawngroupparenthandle: ::core::option::Option<u32>,
753    #[prost(bool, optional, tag = "19")]
754    pub leveltransition: ::core::option::Option<bool>,
755    #[prost(string, optional, tag = "20")]
756    pub worldgroupname: ::core::option::Option<::prost::alloc::string::String>,
757}
758#[derive(serde::Serialize, serde::Deserialize)]
759#[allow(clippy::derive_partial_eq_without_eq)]
760#[derive(Clone, PartialEq, ::prost::Message)]
761pub struct CNetMsgSpawnGroupManifestUpdate {
762    #[prost(uint32, optional, tag = "1")]
763    pub spawngrouphandle: ::core::option::Option<u32>,
764    #[prost(bytes = "vec", optional, tag = "2")]
765    pub spawngroupmanifest: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
766    #[prost(bool, optional, tag = "3")]
767    pub manifestincomplete: ::core::option::Option<bool>,
768}
769#[derive(serde::Serialize, serde::Deserialize)]
770#[allow(clippy::derive_partial_eq_without_eq)]
771#[derive(Clone, Copy, PartialEq, ::prost::Message)]
772pub struct CNetMsgSpawnGroupSetCreationTick {
773    #[prost(uint32, optional, tag = "1")]
774    pub spawngrouphandle: ::core::option::Option<u32>,
775    #[prost(int32, optional, tag = "2")]
776    pub tickcount: ::core::option::Option<i32>,
777    #[prost(uint32, optional, tag = "3")]
778    pub creationsequence: ::core::option::Option<u32>,
779}
780#[derive(serde::Serialize, serde::Deserialize)]
781#[allow(clippy::derive_partial_eq_without_eq)]
782#[derive(Clone, Copy, PartialEq, ::prost::Message)]
783pub struct CNetMsgSpawnGroupUnload {
784    #[prost(uint32, optional, tag = "1")]
785    pub spawngrouphandle: ::core::option::Option<u32>,
786    #[prost(uint32, optional, tag = "2")]
787    pub flags: ::core::option::Option<u32>,
788    #[prost(int32, optional, tag = "3")]
789    pub tickcount: ::core::option::Option<i32>,
790}
791#[derive(serde::Serialize, serde::Deserialize)]
792#[allow(clippy::derive_partial_eq_without_eq)]
793#[derive(Clone, Copy, PartialEq, ::prost::Message)]
794pub struct CNetMsgSpawnGroupLoadCompleted {
795    #[prost(uint32, optional, tag = "1")]
796    pub spawngrouphandle: ::core::option::Option<u32>,
797}
798#[derive(serde::Serialize, serde::Deserialize)]
799#[allow(clippy::derive_partial_eq_without_eq)]
800#[derive(Clone, PartialEq, ::prost::Message)]
801pub struct CSvcMsgGameSessionConfiguration {
802    #[prost(bool, optional, tag = "1")]
803    pub is_multiplayer: ::core::option::Option<bool>,
804    #[prost(bool, optional, tag = "2")]
805    pub is_loadsavegame: ::core::option::Option<bool>,
806    #[prost(bool, optional, tag = "3")]
807    pub is_background_map: ::core::option::Option<bool>,
808    #[prost(bool, optional, tag = "4")]
809    pub is_headless: ::core::option::Option<bool>,
810    #[prost(uint32, optional, tag = "5")]
811    pub min_client_limit: ::core::option::Option<u32>,
812    #[prost(uint32, optional, tag = "6")]
813    pub max_client_limit: ::core::option::Option<u32>,
814    #[prost(uint32, optional, tag = "7")]
815    pub max_clients: ::core::option::Option<u32>,
816    #[prost(fixed32, optional, tag = "8")]
817    pub tick_interval: ::core::option::Option<u32>,
818    #[prost(string, optional, tag = "9")]
819    pub hostname: ::core::option::Option<::prost::alloc::string::String>,
820    #[prost(string, optional, tag = "10")]
821    pub savegamename: ::core::option::Option<::prost::alloc::string::String>,
822    #[prost(string, optional, tag = "11")]
823    pub s1_mapname: ::core::option::Option<::prost::alloc::string::String>,
824    #[prost(string, optional, tag = "12")]
825    pub gamemode: ::core::option::Option<::prost::alloc::string::String>,
826    #[prost(string, optional, tag = "13")]
827    pub server_ip_address: ::core::option::Option<::prost::alloc::string::String>,
828    #[prost(bytes = "vec", optional, tag = "14")]
829    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
830    #[prost(bool, optional, tag = "15")]
831    pub is_localonly: ::core::option::Option<bool>,
832    #[prost(bool, optional, tag = "19")]
833    pub no_steam_server: ::core::option::Option<bool>,
834    #[prost(bool, optional, tag = "16")]
835    pub is_transition: ::core::option::Option<bool>,
836    #[prost(string, optional, tag = "17")]
837    pub previouslevel: ::core::option::Option<::prost::alloc::string::String>,
838    #[prost(string, optional, tag = "18")]
839    pub landmarkname: ::core::option::Option<::prost::alloc::string::String>,
840}
841#[derive(serde::Serialize, serde::Deserialize)]
842#[allow(clippy::derive_partial_eq_without_eq)]
843#[derive(Clone, PartialEq, ::prost::Message)]
844pub struct CNetMsgDebugOverlay {
845    #[prost(int32, optional, tag = "1")]
846    pub etype: ::core::option::Option<i32>,
847    #[prost(message, repeated, tag = "2")]
848    pub vectors: ::prost::alloc::vec::Vec<CMsgVector>,
849    #[prost(message, repeated, tag = "3")]
850    pub colors: ::prost::alloc::vec::Vec<CMsgRgba>,
851    #[prost(float, repeated, packed = "false", tag = "4")]
852    pub dimensions: ::prost::alloc::vec::Vec<f32>,
853    #[prost(float, repeated, packed = "false", tag = "5")]
854    pub times: ::prost::alloc::vec::Vec<f32>,
855    #[prost(bool, repeated, packed = "false", tag = "6")]
856    pub bools: ::prost::alloc::vec::Vec<bool>,
857    #[prost(uint64, repeated, packed = "false", tag = "7")]
858    pub uint64s: ::prost::alloc::vec::Vec<u64>,
859    #[prost(string, repeated, tag = "8")]
860    pub strings: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
861}
862#[derive(
863    serde::Serialize,
864    serde::Deserialize,
865    Clone,
866    Copy,
867    Debug,
868    PartialEq,
869    Eq,
870    Hash,
871    PartialOrd,
872    Ord,
873    ::prost::Enumeration,
874)]
875#[repr(i32)]
876pub enum SignonStateT {
877    SignonstateNone = 0,
878    SignonstateChallenge = 1,
879    SignonstateConnected = 2,
880    SignonstateNew = 3,
881    SignonstatePrespawn = 4,
882    SignonstateSpawn = 5,
883    SignonstateFull = 6,
884    SignonstateChangelevel = 7,
885}
886#[derive(
887    serde::Serialize,
888    serde::Deserialize,
889    Clone,
890    Copy,
891    Debug,
892    PartialEq,
893    Eq,
894    Hash,
895    PartialOrd,
896    Ord,
897    ::prost::Enumeration,
898)]
899#[repr(i32)]
900pub enum NetMessages {
901    NetNop = 0,
902    NetDisconnectLegacy = 1,
903    NetSplitScreenUser = 3,
904    NetTick = 4,
905    NetStringCmd = 5,
906    NetSetConVar = 6,
907    NetSignonState = 7,
908    NetSpawnGroupLoad = 8,
909    NetSpawnGroupManifestUpdate = 9,
910    NetSpawnGroupSetCreationTick = 11,
911    NetSpawnGroupUnload = 12,
912    NetSpawnGroupLoadCompleted = 13,
913    NetDebugOverlay = 15,
914}
915#[derive(
916    serde::Serialize,
917    serde::Deserialize,
918    Clone,
919    Copy,
920    Debug,
921    PartialEq,
922    Eq,
923    Hash,
924    PartialOrd,
925    Ord,
926    ::prost::Enumeration,
927)]
928#[repr(i32)]
929pub enum SpawnGroupFlagsT {
930    SpawnGroupLoadEntitiesFromSave = 1,
931    SpawnGroupDontSpawnEntities = 2,
932    SpawnGroupSynchronousSpawn = 4,
933    SpawnGroupIsInitialSpawnGroup = 8,
934    SpawnGroupCreateClientOnlyEntities = 16,
935    SpawnGroupBlockUntilLoaded = 64,
936    SpawnGroupLoadStreamingData = 128,
937    SpawnGroupCreateNewSceneWorld = 256,
938}
939#[derive(serde::Serialize, serde::Deserialize)]
940#[allow(clippy::derive_partial_eq_without_eq)]
941#[derive(Clone, Copy, PartialEq, ::prost::Message)]
942pub struct CDotaMsgLocationPing {
943    #[prost(int32, optional, tag = "1")]
944    pub x: ::core::option::Option<i32>,
945    #[prost(int32, optional, tag = "2")]
946    pub y: ::core::option::Option<i32>,
947    #[prost(int32, optional, tag = "3", default = "-1")]
948    pub target: ::core::option::Option<i32>,
949    #[prost(bool, optional, tag = "4")]
950    pub direct_ping: ::core::option::Option<bool>,
951    #[prost(uint32, optional, tag = "5", default = "4294967295")]
952    pub r#type: ::core::option::Option<u32>,
953    #[prost(
954        enumeration = "EPingSource",
955        optional,
956        tag = "6",
957        default = "KEPingSourceDefault"
958    )]
959    pub ping_source: ::core::option::Option<i32>,
960}
961#[derive(serde::Serialize, serde::Deserialize)]
962#[allow(clippy::derive_partial_eq_without_eq)]
963#[derive(Clone, Copy, PartialEq, ::prost::Message)]
964pub struct CDotaMsgItemAlert {
965    #[prost(int32, optional, tag = "1")]
966    pub x: ::core::option::Option<i32>,
967    #[prost(int32, optional, tag = "2")]
968    pub y: ::core::option::Option<i32>,
969    #[prost(int32, optional, tag = "3", default = "-1")]
970    pub item_ability_id: ::core::option::Option<i32>,
971}
972#[derive(serde::Serialize, serde::Deserialize)]
973#[allow(clippy::derive_partial_eq_without_eq)]
974#[derive(Clone, Copy, PartialEq, ::prost::Message)]
975pub struct CDotaMsgMapLine {
976    #[prost(int32, optional, tag = "1")]
977    pub x: ::core::option::Option<i32>,
978    #[prost(int32, optional, tag = "2")]
979    pub y: ::core::option::Option<i32>,
980    #[prost(bool, optional, tag = "3")]
981    pub initial: ::core::option::Option<bool>,
982}
983#[derive(serde::Serialize, serde::Deserialize)]
984#[allow(clippy::derive_partial_eq_without_eq)]
985#[derive(Clone, Copy, PartialEq, ::prost::Message)]
986pub struct CDotaMsgWorldLine {
987    #[prost(int32, optional, tag = "1")]
988    pub x: ::core::option::Option<i32>,
989    #[prost(int32, optional, tag = "2")]
990    pub y: ::core::option::Option<i32>,
991    #[prost(int32, optional, tag = "3")]
992    pub z: ::core::option::Option<i32>,
993    #[prost(bool, optional, tag = "4")]
994    pub initial: ::core::option::Option<bool>,
995    #[prost(bool, optional, tag = "5")]
996    pub end: ::core::option::Option<bool>,
997}
998#[derive(serde::Serialize, serde::Deserialize)]
999#[allow(clippy::derive_partial_eq_without_eq)]
1000#[derive(Clone, PartialEq, ::prost::Message)]
1001pub struct CDotaMsgSendStatPopup {
1002    #[prost(
1003        enumeration = "EDotaStatPopupTypes",
1004        optional,
1005        tag = "1",
1006        default = "KEDotaSptTextline"
1007    )]
1008    pub style: ::core::option::Option<i32>,
1009    #[prost(string, repeated, tag = "2")]
1010    pub stat_strings: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1011    #[prost(int32, repeated, packed = "false", tag = "3")]
1012    pub stat_images: ::prost::alloc::vec::Vec<i32>,
1013    #[prost(int32, repeated, packed = "false", tag = "4")]
1014    pub stat_image_types: ::prost::alloc::vec::Vec<i32>,
1015    #[prost(float, optional, tag = "5")]
1016    pub duration: ::core::option::Option<f32>,
1017    #[prost(bool, optional, tag = "6")]
1018    pub use_html: ::core::option::Option<bool>,
1019    #[prost(string, optional, tag = "7")]
1020    pub movie_name: ::core::option::Option<::prost::alloc::string::String>,
1021}
1022#[derive(serde::Serialize, serde::Deserialize)]
1023#[allow(clippy::derive_partial_eq_without_eq)]
1024#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1025pub struct CDotaMsgDismissAllStatPopups {
1026    #[prost(float, optional, tag = "1")]
1027    pub time_delay: ::core::option::Option<f32>,
1028}
1029#[derive(serde::Serialize, serde::Deserialize)]
1030#[allow(clippy::derive_partial_eq_without_eq)]
1031#[derive(Clone, PartialEq, ::prost::Message)]
1032pub struct CDotaMsgCoachHudPing {
1033    #[prost(uint32, optional, tag = "1")]
1034    pub x: ::core::option::Option<u32>,
1035    #[prost(uint32, optional, tag = "2")]
1036    pub y: ::core::option::Option<u32>,
1037    #[prost(string, optional, tag = "3")]
1038    pub tgtpath: ::core::option::Option<::prost::alloc::string::String>,
1039}
1040#[derive(serde::Serialize, serde::Deserialize)]
1041#[allow(clippy::derive_partial_eq_without_eq)]
1042#[derive(Clone, PartialEq, ::prost::Message)]
1043pub struct CDotaMsgUnitOrder {
1044    #[prost(
1045        enumeration = "DotaunitorderT",
1046        optional,
1047        tag = "2",
1048        default = "DotaUnitOrderNone"
1049    )]
1050    pub order_type: ::core::option::Option<i32>,
1051    #[prost(int32, repeated, packed = "false", tag = "3")]
1052    pub units: ::prost::alloc::vec::Vec<i32>,
1053    #[prost(int32, optional, tag = "4", default = "0")]
1054    pub target_index: ::core::option::Option<i32>,
1055    #[prost(int32, optional, tag = "5", default = "-1")]
1056    pub ability_index: ::core::option::Option<i32>,
1057    #[prost(message, optional, tag = "6")]
1058    pub position: ::core::option::Option<CMsgVector>,
1059    #[prost(int32, optional, tag = "8")]
1060    pub sequence_number: ::core::option::Option<i32>,
1061    #[prost(uint32, optional, tag = "9")]
1062    pub flags: ::core::option::Option<u32>,
1063}
1064#[derive(serde::Serialize, serde::Deserialize)]
1065#[allow(clippy::derive_partial_eq_without_eq)]
1066#[derive(Clone, PartialEq, ::prost::Message)]
1067pub struct VersusScenePlayActivity {
1068    #[prost(message, repeated, tag = "1")]
1069    pub activities: ::prost::alloc::vec::Vec<versus_scene_play_activity::ActivityInfo>,
1070    #[prost(float, optional, tag = "2")]
1071    pub playback_rate: ::core::option::Option<f32>,
1072}
1073/// Nested message and enum types in `VersusScene_PlayActivity`.
1074pub mod versus_scene_play_activity {
1075    #[derive(serde::Serialize, serde::Deserialize)]
1076    #[allow(clippy::derive_partial_eq_without_eq)]
1077    #[derive(Clone, PartialEq, ::prost::Message)]
1078    pub struct ActivityInfo {
1079        #[prost(string, optional, tag = "1")]
1080        pub activity: ::core::option::Option<::prost::alloc::string::String>,
1081        #[prost(bool, optional, tag = "2")]
1082        pub disable_auto_kill: ::core::option::Option<bool>,
1083        #[prost(bool, optional, tag = "3")]
1084        pub force_looping: ::core::option::Option<bool>,
1085    }
1086}
1087#[derive(serde::Serialize, serde::Deserialize)]
1088#[allow(clippy::derive_partial_eq_without_eq)]
1089#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1090pub struct VersusSceneChatWheel {
1091    #[prost(uint32, optional, tag = "1", default = "4294967295")]
1092    pub chat_message_id: ::core::option::Option<u32>,
1093    #[prost(uint32, optional, tag = "2")]
1094    pub emoticon_id: ::core::option::Option<u32>,
1095}
1096#[derive(serde::Serialize, serde::Deserialize)]
1097#[allow(clippy::derive_partial_eq_without_eq)]
1098#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1099pub struct VersusScenePlaybackRate {
1100    #[prost(float, optional, tag = "1")]
1101    pub rate: ::core::option::Option<f32>,
1102}
1103#[derive(
1104    serde::Serialize,
1105    serde::Deserialize,
1106    Clone,
1107    Copy,
1108    Debug,
1109    PartialEq,
1110    Eq,
1111    Hash,
1112    PartialOrd,
1113    Ord,
1114    ::prost::Enumeration,
1115)]
1116#[repr(i32)]
1117pub enum EPingSource {
1118    KEPingSourceDefault = 0,
1119    KEPingSourceWarning = 1,
1120    KEPingSourceWheel = 2,
1121    KEPingSourceSystem = 3,
1122}
1123#[derive(
1124    serde::Serialize,
1125    serde::Deserialize,
1126    Clone,
1127    Copy,
1128    Debug,
1129    PartialEq,
1130    Eq,
1131    Hash,
1132    PartialOrd,
1133    Ord,
1134    ::prost::Enumeration,
1135)]
1136#[repr(i32)]
1137pub enum EDotaStatPopupTypes {
1138    KEDotaSptTextline = 0,
1139    KEDotaSptBasic = 1,
1140    KEDotaSptPoll = 2,
1141    KEDotaSptGrid = 3,
1142    KEDotaSptDualImage = 4,
1143    KEDotaSptMovie = 5,
1144}
1145#[derive(
1146    serde::Serialize,
1147    serde::Deserialize,
1148    Clone,
1149    Copy,
1150    Debug,
1151    PartialEq,
1152    Eq,
1153    Hash,
1154    PartialOrd,
1155    Ord,
1156    ::prost::Enumeration,
1157)]
1158#[repr(i32)]
1159pub enum DotaunitorderT {
1160    DotaUnitOrderNone = 0,
1161    DotaUnitOrderMoveToPosition = 1,
1162    DotaUnitOrderMoveToTarget = 2,
1163    DotaUnitOrderAttackMove = 3,
1164    DotaUnitOrderAttackTarget = 4,
1165    DotaUnitOrderCastPosition = 5,
1166    DotaUnitOrderCastTarget = 6,
1167    DotaUnitOrderCastTargetTree = 7,
1168    DotaUnitOrderCastNoTarget = 8,
1169    DotaUnitOrderCastToggle = 9,
1170    DotaUnitOrderHoldPosition = 10,
1171    DotaUnitOrderTrainAbility = 11,
1172    DotaUnitOrderDropItem = 12,
1173    DotaUnitOrderGiveItem = 13,
1174    DotaUnitOrderPickupItem = 14,
1175    DotaUnitOrderPickupRune = 15,
1176    DotaUnitOrderPurchaseItem = 16,
1177    DotaUnitOrderSellItem = 17,
1178    DotaUnitOrderDisassembleItem = 18,
1179    DotaUnitOrderMoveItem = 19,
1180    DotaUnitOrderCastToggleAuto = 20,
1181    DotaUnitOrderStop = 21,
1182    DotaUnitOrderTaunt = 22,
1183    DotaUnitOrderBuyback = 23,
1184    DotaUnitOrderGlyph = 24,
1185    DotaUnitOrderEjectItemFromStash = 25,
1186    DotaUnitOrderCastRune = 26,
1187    DotaUnitOrderPingAbility = 27,
1188    DotaUnitOrderMoveToDirection = 28,
1189    DotaUnitOrderPatrol = 29,
1190    DotaUnitOrderVectorTargetPosition = 30,
1191    DotaUnitOrderRadar = 31,
1192    DotaUnitOrderSetItemCombineLock = 32,
1193    DotaUnitOrderContinue = 33,
1194    DotaUnitOrderVectorTargetCanceled = 34,
1195    DotaUnitOrderCastRiverPaint = 35,
1196    DotaUnitOrderPregameAdjustItemAssignment = 36,
1197    DotaUnitOrderDropItemAtFountain = 37,
1198    DotaUnitOrderTakeItemFromNeutralItemStash = 38,
1199    DotaUnitOrderMoveRelative = 39,
1200    DotaUnitOrderCastToggleAlt = 40,
1201    DotaUnitOrderConsumeItem = 41,
1202}
1203#[derive(
1204    serde::Serialize,
1205    serde::Deserialize,
1206    Clone,
1207    Copy,
1208    Debug,
1209    PartialEq,
1210    Eq,
1211    Hash,
1212    PartialOrd,
1213    Ord,
1214    ::prost::Enumeration,
1215)]
1216#[repr(i32)]
1217pub enum EDotaVersusScenePlayerBehavior {
1218    VsPlayerBehaviorPlayActivity = 1,
1219    VsPlayerBehaviorChatWheel = 2,
1220    VsPlayerBehaviorPlaybackRate = 3,
1221}
1222#[derive(serde::Serialize, serde::Deserialize)]
1223#[allow(clippy::derive_partial_eq_without_eq)]
1224#[derive(Clone, PartialEq, ::prost::Message)]
1225pub struct CDotaModifierBuffTableEntry {
1226    #[prost(
1227        enumeration = "DotaModifierEntryType",
1228        required,
1229        tag = "1",
1230        default = "Active"
1231    )]
1232    pub entry_type: i32,
1233    #[prost(uint32, required, tag = "2", default = "16777215")]
1234    pub parent: u32,
1235    #[prost(int32, required, tag = "3")]
1236    pub index: i32,
1237    #[prost(int32, required, tag = "4")]
1238    pub serial_num: i32,
1239    #[prost(int32, optional, tag = "5")]
1240    pub modifier_class: ::core::option::Option<i32>,
1241    #[prost(int32, optional, tag = "6")]
1242    pub ability_level: ::core::option::Option<i32>,
1243    #[prost(int32, optional, tag = "7")]
1244    pub stack_count: ::core::option::Option<i32>,
1245    #[prost(float, optional, tag = "8")]
1246    pub creation_time: ::core::option::Option<f32>,
1247    #[prost(float, optional, tag = "9", default = "-1")]
1248    pub duration: ::core::option::Option<f32>,
1249    #[prost(uint32, optional, tag = "10", default = "16777215")]
1250    pub caster: ::core::option::Option<u32>,
1251    #[prost(uint32, optional, tag = "11", default = "16777215")]
1252    pub ability: ::core::option::Option<u32>,
1253    #[prost(int32, optional, tag = "12")]
1254    pub armor: ::core::option::Option<i32>,
1255    #[prost(float, optional, tag = "13")]
1256    pub fade_time: ::core::option::Option<f32>,
1257    #[prost(bool, optional, tag = "14")]
1258    pub subtle: ::core::option::Option<bool>,
1259    #[prost(float, optional, tag = "15")]
1260    pub channel_time: ::core::option::Option<f32>,
1261    #[prost(message, optional, tag = "16")]
1262    pub v_start: ::core::option::Option<CMsgVector>,
1263    #[prost(message, optional, tag = "17")]
1264    pub v_end: ::core::option::Option<CMsgVector>,
1265    #[prost(string, optional, tag = "18")]
1266    pub portal_loop_appear: ::core::option::Option<::prost::alloc::string::String>,
1267    #[prost(string, optional, tag = "19")]
1268    pub portal_loop_disappear: ::core::option::Option<::prost::alloc::string::String>,
1269    #[prost(string, optional, tag = "20")]
1270    pub hero_loop_appear: ::core::option::Option<::prost::alloc::string::String>,
1271    #[prost(string, optional, tag = "21")]
1272    pub hero_loop_disappear: ::core::option::Option<::prost::alloc::string::String>,
1273    #[prost(int32, optional, tag = "22")]
1274    pub movement_speed: ::core::option::Option<i32>,
1275    #[prost(bool, optional, tag = "23")]
1276    pub aura: ::core::option::Option<bool>,
1277    #[prost(int32, optional, tag = "24")]
1278    pub activity: ::core::option::Option<i32>,
1279    #[prost(int32, optional, tag = "25")]
1280    pub damage: ::core::option::Option<i32>,
1281    #[prost(int32, optional, tag = "26")]
1282    pub range: ::core::option::Option<i32>,
1283    #[prost(int32, optional, tag = "27")]
1284    pub dd_modifier_index: ::core::option::Option<i32>,
1285    #[prost(int32, optional, tag = "28", default = "-1")]
1286    pub dd_ability_id: ::core::option::Option<i32>,
1287    #[prost(string, optional, tag = "29")]
1288    pub illusion_label: ::core::option::Option<::prost::alloc::string::String>,
1289    #[prost(bool, optional, tag = "30")]
1290    pub active: ::core::option::Option<bool>,
1291    #[prost(string, optional, tag = "31")]
1292    pub player_ids: ::core::option::Option<::prost::alloc::string::String>,
1293    #[prost(string, optional, tag = "32")]
1294    pub lua_name: ::core::option::Option<::prost::alloc::string::String>,
1295    #[prost(int32, optional, tag = "33")]
1296    pub attack_speed: ::core::option::Option<i32>,
1297    #[prost(uint32, optional, tag = "34", default = "16777215")]
1298    pub aura_owner: ::core::option::Option<u32>,
1299    #[prost(int32, optional, tag = "35")]
1300    pub bonus_all_stats: ::core::option::Option<i32>,
1301    #[prost(int32, optional, tag = "36")]
1302    pub bonus_health: ::core::option::Option<i32>,
1303    #[prost(int32, optional, tag = "37")]
1304    pub bonus_mana: ::core::option::Option<i32>,
1305    #[prost(uint32, optional, tag = "38", default = "16777215")]
1306    pub custom_entity: ::core::option::Option<u32>,
1307    #[prost(bool, optional, tag = "39")]
1308    pub aura_within_range: ::core::option::Option<bool>,
1309}
1310#[derive(serde::Serialize, serde::Deserialize)]
1311#[allow(clippy::derive_partial_eq_without_eq)]
1312#[derive(Clone, PartialEq, ::prost::Message)]
1313pub struct CDotaLuaModifierEntry {
1314    #[prost(int32, required, tag = "1")]
1315    pub modifier_type: i32,
1316    #[prost(string, required, tag = "2")]
1317    pub modifier_filename: ::prost::alloc::string::String,
1318}
1319#[derive(
1320    serde::Serialize,
1321    serde::Deserialize,
1322    Clone,
1323    Copy,
1324    Debug,
1325    PartialEq,
1326    Eq,
1327    Hash,
1328    PartialOrd,
1329    Ord,
1330    ::prost::Enumeration,
1331)]
1332#[repr(i32)]
1333pub enum DotaModifierEntryType {
1334    Active = 1,
1335    Removed = 2,
1336}
1337#[derive(serde::Serialize, serde::Deserialize)]
1338#[allow(clippy::derive_partial_eq_without_eq)]
1339#[derive(Clone, PartialEq, ::prost::Message)]
1340pub struct CDotaClientHardwareSpecs {
1341    #[prost(uint32, optional, tag = "1")]
1342    pub logical_processors: ::core::option::Option<u32>,
1343    #[prost(fixed64, optional, tag = "2")]
1344    pub cpu_cycles_per_second: ::core::option::Option<u64>,
1345    #[prost(fixed64, optional, tag = "3")]
1346    pub total_physical_memory: ::core::option::Option<u64>,
1347    #[prost(bool, optional, tag = "4")]
1348    pub is_64_bit_os: ::core::option::Option<bool>,
1349    #[prost(uint64, optional, tag = "5")]
1350    pub upload_measurement: ::core::option::Option<u64>,
1351    #[prost(bool, optional, tag = "6")]
1352    pub prefer_not_host: ::core::option::Option<bool>,
1353    #[prost(uint32, repeated, packed = "false", tag = "7")]
1354    pub crc: ::prost::alloc::vec::Vec<u32>,
1355}
1356#[derive(serde::Serialize, serde::Deserialize)]
1357#[allow(clippy::derive_partial_eq_without_eq)]
1358#[derive(Clone, PartialEq, ::prost::Message)]
1359pub struct CDotaSaveGame {
1360    #[prost(uint64, optional, tag = "5")]
1361    pub match_id: ::core::option::Option<u64>,
1362    #[prost(uint32, optional, tag = "2")]
1363    pub save_time: ::core::option::Option<u32>,
1364    #[prost(message, repeated, tag = "3")]
1365    pub players: ::prost::alloc::vec::Vec<cdota_save_game::Player>,
1366    #[prost(message, repeated, tag = "4")]
1367    pub save_instances: ::prost::alloc::vec::Vec<cdota_save_game::SaveInstance>,
1368}
1369/// Nested message and enum types in `CDOTASaveGame`.
1370pub mod cdota_save_game {
1371    #[derive(serde::Serialize, serde::Deserialize)]
1372    #[allow(clippy::derive_partial_eq_without_eq)]
1373    #[derive(Clone, PartialEq, ::prost::Message)]
1374    pub struct Player {
1375        #[prost(
1376            enumeration = "super::DotaGcTeam",
1377            optional,
1378            tag = "1",
1379            default = "GoodGuys"
1380        )]
1381        pub team: ::core::option::Option<i32>,
1382        #[prost(string, optional, tag = "2")]
1383        pub name: ::core::option::Option<::prost::alloc::string::String>,
1384        #[prost(string, optional, tag = "3")]
1385        pub hero: ::core::option::Option<::prost::alloc::string::String>,
1386    }
1387    #[derive(serde::Serialize, serde::Deserialize)]
1388    #[allow(clippy::derive_partial_eq_without_eq)]
1389    #[derive(Clone, PartialEq, ::prost::Message)]
1390    pub struct SaveInstance {
1391        #[prost(uint32, optional, tag = "2")]
1392        pub game_time: ::core::option::Option<u32>,
1393        #[prost(uint32, optional, tag = "3")]
1394        pub team1_score: ::core::option::Option<u32>,
1395        #[prost(uint32, optional, tag = "4")]
1396        pub team2_score: ::core::option::Option<u32>,
1397        #[prost(message, repeated, tag = "5")]
1398        pub player_positions: ::prost::alloc::vec::Vec<save_instance::PlayerPositions>,
1399        #[prost(uint32, optional, tag = "6")]
1400        pub save_id: ::core::option::Option<u32>,
1401        #[prost(uint32, optional, tag = "7")]
1402        pub save_time: ::core::option::Option<u32>,
1403    }
1404    /// Nested message and enum types in `SaveInstance`.
1405    pub mod save_instance {
1406        #[derive(serde::Serialize, serde::Deserialize)]
1407        #[allow(clippy::derive_partial_eq_without_eq)]
1408        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1409        pub struct PlayerPositions {
1410            #[prost(float, optional, tag = "1")]
1411            pub x: ::core::option::Option<f32>,
1412            #[prost(float, optional, tag = "2")]
1413            pub y: ::core::option::Option<f32>,
1414        }
1415    }
1416}
1417#[derive(serde::Serialize, serde::Deserialize)]
1418#[allow(clippy::derive_partial_eq_without_eq)]
1419#[derive(Clone, PartialEq, ::prost::Message)]
1420pub struct CMsgDotaCombatLogEntry {
1421    #[prost(
1422        enumeration = "DotaCombatlogTypes",
1423        optional,
1424        tag = "1",
1425        default = "DotaCombatlogInvalid"
1426    )]
1427    pub r#type: ::core::option::Option<i32>,
1428    #[prost(uint32, optional, tag = "2")]
1429    pub target_name: ::core::option::Option<u32>,
1430    #[prost(uint32, optional, tag = "3")]
1431    pub target_source_name: ::core::option::Option<u32>,
1432    #[prost(uint32, optional, tag = "4")]
1433    pub attacker_name: ::core::option::Option<u32>,
1434    #[prost(uint32, optional, tag = "5")]
1435    pub damage_source_name: ::core::option::Option<u32>,
1436    #[prost(uint32, optional, tag = "6")]
1437    pub inflictor_name: ::core::option::Option<u32>,
1438    #[prost(bool, optional, tag = "7")]
1439    pub is_attacker_illusion: ::core::option::Option<bool>,
1440    #[prost(bool, optional, tag = "8")]
1441    pub is_attacker_hero: ::core::option::Option<bool>,
1442    #[prost(bool, optional, tag = "9")]
1443    pub is_target_illusion: ::core::option::Option<bool>,
1444    #[prost(bool, optional, tag = "10")]
1445    pub is_target_hero: ::core::option::Option<bool>,
1446    #[prost(bool, optional, tag = "11")]
1447    pub is_visible_radiant: ::core::option::Option<bool>,
1448    #[prost(bool, optional, tag = "12")]
1449    pub is_visible_dire: ::core::option::Option<bool>,
1450    #[prost(uint32, optional, tag = "13")]
1451    pub value: ::core::option::Option<u32>,
1452    #[prost(int32, optional, tag = "14")]
1453    pub health: ::core::option::Option<i32>,
1454    #[prost(float, optional, tag = "15")]
1455    pub timestamp: ::core::option::Option<f32>,
1456    #[prost(float, optional, tag = "16")]
1457    pub stun_duration: ::core::option::Option<f32>,
1458    #[prost(float, optional, tag = "17")]
1459    pub slow_duration: ::core::option::Option<f32>,
1460    #[prost(bool, optional, tag = "18")]
1461    pub is_ability_toggle_on: ::core::option::Option<bool>,
1462    #[prost(bool, optional, tag = "19")]
1463    pub is_ability_toggle_off: ::core::option::Option<bool>,
1464    #[prost(uint32, optional, tag = "20")]
1465    pub ability_level: ::core::option::Option<u32>,
1466    #[prost(float, optional, tag = "21")]
1467    pub location_x: ::core::option::Option<f32>,
1468    #[prost(float, optional, tag = "22")]
1469    pub location_y: ::core::option::Option<f32>,
1470    #[prost(uint32, optional, tag = "23")]
1471    pub gold_reason: ::core::option::Option<u32>,
1472    #[prost(float, optional, tag = "24")]
1473    pub timestamp_raw: ::core::option::Option<f32>,
1474    #[prost(float, optional, tag = "25")]
1475    pub modifier_duration: ::core::option::Option<f32>,
1476    #[prost(uint32, optional, tag = "26")]
1477    pub xp_reason: ::core::option::Option<u32>,
1478    #[prost(uint32, optional, tag = "27")]
1479    pub last_hits: ::core::option::Option<u32>,
1480    #[prost(uint32, optional, tag = "28")]
1481    pub attacker_team: ::core::option::Option<u32>,
1482    #[prost(uint32, optional, tag = "29")]
1483    pub target_team: ::core::option::Option<u32>,
1484    #[prost(uint32, optional, tag = "30")]
1485    pub obs_wards_placed: ::core::option::Option<u32>,
1486    #[prost(uint32, optional, tag = "31")]
1487    pub assist_player0: ::core::option::Option<u32>,
1488    #[prost(uint32, optional, tag = "32")]
1489    pub assist_player1: ::core::option::Option<u32>,
1490    #[prost(uint32, optional, tag = "33")]
1491    pub assist_player2: ::core::option::Option<u32>,
1492    #[prost(uint32, optional, tag = "34")]
1493    pub assist_player3: ::core::option::Option<u32>,
1494    #[prost(uint32, optional, tag = "35")]
1495    pub stack_count: ::core::option::Option<u32>,
1496    #[prost(bool, optional, tag = "36")]
1497    pub hidden_modifier: ::core::option::Option<bool>,
1498    #[prost(bool, optional, tag = "37")]
1499    pub is_target_building: ::core::option::Option<bool>,
1500    #[prost(uint32, optional, tag = "38")]
1501    pub neutral_camp_type: ::core::option::Option<u32>,
1502    #[prost(uint32, optional, tag = "39")]
1503    pub rune_type: ::core::option::Option<u32>,
1504    #[prost(int32, repeated, packed = "false", tag = "40")]
1505    pub assist_players: ::prost::alloc::vec::Vec<i32>,
1506    #[prost(bool, optional, tag = "41")]
1507    pub is_heal_save: ::core::option::Option<bool>,
1508    #[prost(bool, optional, tag = "42")]
1509    pub is_ultimate_ability: ::core::option::Option<bool>,
1510    #[prost(uint32, optional, tag = "43")]
1511    pub attacker_hero_level: ::core::option::Option<u32>,
1512    #[prost(uint32, optional, tag = "44")]
1513    pub target_hero_level: ::core::option::Option<u32>,
1514    #[prost(uint32, optional, tag = "45")]
1515    pub xpm: ::core::option::Option<u32>,
1516    #[prost(uint32, optional, tag = "46")]
1517    pub gpm: ::core::option::Option<u32>,
1518    #[prost(uint32, optional, tag = "47")]
1519    pub event_location: ::core::option::Option<u32>,
1520    #[prost(bool, optional, tag = "48")]
1521    pub target_is_self: ::core::option::Option<bool>,
1522    #[prost(uint32, optional, tag = "49")]
1523    pub damage_type: ::core::option::Option<u32>,
1524    #[prost(bool, optional, tag = "50")]
1525    pub invisibility_modifier: ::core::option::Option<bool>,
1526    #[prost(uint32, optional, tag = "51")]
1527    pub damage_category: ::core::option::Option<u32>,
1528    #[prost(uint32, optional, tag = "52")]
1529    pub networth: ::core::option::Option<u32>,
1530    #[prost(uint32, optional, tag = "53")]
1531    pub building_type: ::core::option::Option<u32>,
1532    #[prost(float, optional, tag = "54")]
1533    pub modifier_elapsed_duration: ::core::option::Option<f32>,
1534    #[prost(bool, optional, tag = "55")]
1535    pub silence_modifier: ::core::option::Option<bool>,
1536    #[prost(bool, optional, tag = "56")]
1537    pub heal_from_lifesteal: ::core::option::Option<bool>,
1538    #[prost(bool, optional, tag = "57")]
1539    pub modifier_purged: ::core::option::Option<bool>,
1540    #[prost(bool, optional, tag = "58")]
1541    pub spell_evaded: ::core::option::Option<bool>,
1542    #[prost(bool, optional, tag = "59")]
1543    pub motion_controller_modifier: ::core::option::Option<bool>,
1544    #[prost(bool, optional, tag = "60")]
1545    pub long_range_kill: ::core::option::Option<bool>,
1546    #[prost(uint32, optional, tag = "61")]
1547    pub modifier_purge_ability: ::core::option::Option<u32>,
1548    #[prost(uint32, optional, tag = "62")]
1549    pub modifier_purge_npc: ::core::option::Option<u32>,
1550    #[prost(bool, optional, tag = "63")]
1551    pub root_modifier: ::core::option::Option<bool>,
1552    #[prost(uint32, optional, tag = "64")]
1553    pub total_unit_death_count: ::core::option::Option<u32>,
1554    #[prost(bool, optional, tag = "65")]
1555    pub aura_modifier: ::core::option::Option<bool>,
1556    #[prost(bool, optional, tag = "66")]
1557    pub armor_debuff_modifier: ::core::option::Option<bool>,
1558    #[prost(bool, optional, tag = "67")]
1559    pub no_physical_damage_modifier: ::core::option::Option<bool>,
1560    #[prost(uint32, optional, tag = "68")]
1561    pub modifier_ability: ::core::option::Option<u32>,
1562    #[prost(bool, optional, tag = "69")]
1563    pub modifier_hidden: ::core::option::Option<bool>,
1564    #[prost(bool, optional, tag = "70")]
1565    pub inflictor_is_stolen_ability: ::core::option::Option<bool>,
1566    #[prost(uint32, optional, tag = "71")]
1567    pub kill_eater_event: ::core::option::Option<u32>,
1568    #[prost(uint32, optional, tag = "72")]
1569    pub unit_status_label: ::core::option::Option<u32>,
1570    #[prost(bool, optional, tag = "73")]
1571    pub spell_generated_attack: ::core::option::Option<bool>,
1572    #[prost(bool, optional, tag = "74")]
1573    pub at_night_time: ::core::option::Option<bool>,
1574    #[prost(bool, optional, tag = "75")]
1575    pub attacker_has_scepter: ::core::option::Option<bool>,
1576    #[prost(uint32, optional, tag = "76")]
1577    pub neutral_camp_team: ::core::option::Option<u32>,
1578    #[prost(float, optional, tag = "77")]
1579    pub regenerated_health: ::core::option::Option<f32>,
1580    #[prost(bool, optional, tag = "78")]
1581    pub will_reincarnate: ::core::option::Option<bool>,
1582    #[prost(bool, optional, tag = "79")]
1583    pub uses_charges: ::core::option::Option<bool>,
1584}
1585#[derive(serde::Serialize, serde::Deserialize)]
1586#[allow(clippy::derive_partial_eq_without_eq)]
1587#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1588pub struct CMsgPendingEventAward {
1589    #[prost(enumeration = "EEvent", optional, tag = "1", default = "EventIdNone")]
1590    pub event_id: ::core::option::Option<i32>,
1591    #[prost(uint32, optional, tag = "2")]
1592    pub action_id: ::core::option::Option<u32>,
1593    #[prost(uint32, optional, tag = "3")]
1594    pub num_to_grant: ::core::option::Option<u32>,
1595    #[prost(
1596        enumeration = "EEventActionScoreMode",
1597        optional,
1598        tag = "4",
1599        default = "KEEventActionScoreModeAdd"
1600    )]
1601    pub score_mode: ::core::option::Option<i32>,
1602    #[prost(uint32, optional, tag = "5")]
1603    pub audit_action: ::core::option::Option<u32>,
1604    #[prost(uint64, optional, tag = "6")]
1605    pub audit_data: ::core::option::Option<u64>,
1606}
1607#[derive(
1608    serde::Serialize,
1609    serde::Deserialize,
1610    Clone,
1611    Copy,
1612    Debug,
1613    PartialEq,
1614    Eq,
1615    Hash,
1616    PartialOrd,
1617    Ord,
1618    ::prost::Enumeration,
1619)]
1620#[repr(i32)]
1621pub enum DotaGameMode {
1622    DotaGamemodeNone = 0,
1623    DotaGamemodeAp = 1,
1624    DotaGamemodeCm = 2,
1625    DotaGamemodeRd = 3,
1626    DotaGamemodeSd = 4,
1627    DotaGamemodeAr = 5,
1628    DotaGamemodeIntro = 6,
1629    DotaGamemodeHw = 7,
1630    DotaGamemodeReverseCm = 8,
1631    DotaGamemodeXmas = 9,
1632    DotaGamemodeTutorial = 10,
1633    DotaGamemodeMo = 11,
1634    DotaGamemodeLp = 12,
1635    DotaGamemodePool1 = 13,
1636    DotaGamemodeFh = 14,
1637    DotaGamemodeCustom = 15,
1638    DotaGamemodeCd = 16,
1639    DotaGamemodeBd = 17,
1640    DotaGamemodeAbilityDraft = 18,
1641    DotaGamemodeEvent = 19,
1642    DotaGamemodeArdm = 20,
1643    DotaGamemode1v1mid = 21,
1644    DotaGamemodeAllDraft = 22,
1645    DotaGamemodeTurbo = 23,
1646    DotaGamemodeMutation = 24,
1647    DotaGamemodeCoachesChallenge = 25,
1648}
1649#[derive(
1650    serde::Serialize,
1651    serde::Deserialize,
1652    Clone,
1653    Copy,
1654    Debug,
1655    PartialEq,
1656    Eq,
1657    Hash,
1658    PartialOrd,
1659    Ord,
1660    ::prost::Enumeration,
1661)]
1662#[repr(i32)]
1663pub enum DotaGameState {
1664    DotaGamerulesStateInit = 0,
1665    DotaGamerulesStateWaitForPlayersToLoad = 1,
1666    DotaGamerulesStateHeroSelection = 2,
1667    DotaGamerulesStateStrategyTime = 3,
1668    DotaGamerulesStatePreGame = 4,
1669    DotaGamerulesStateGameInProgress = 5,
1670    DotaGamerulesStatePostGame = 6,
1671    DotaGamerulesStateDisconnect = 7,
1672    DotaGamerulesStateTeamShowcase = 8,
1673    DotaGamerulesStateCustomGameSetup = 9,
1674    DotaGamerulesStateWaitForMapToLoad = 10,
1675    DotaGamerulesStateScenarioSetup = 11,
1676    DotaGamerulesStatePlayerDraft = 12,
1677    DotaGamerulesStateLast = 13,
1678}
1679#[derive(
1680    serde::Serialize,
1681    serde::Deserialize,
1682    Clone,
1683    Copy,
1684    Debug,
1685    PartialEq,
1686    Eq,
1687    Hash,
1688    PartialOrd,
1689    Ord,
1690    ::prost::Enumeration,
1691)]
1692#[repr(i32)]
1693pub enum DotaGcTeam {
1694    GoodGuys = 0,
1695    BadGuys = 1,
1696    Broadcaster = 2,
1697    Spectator = 3,
1698    PlayerPool = 4,
1699    Noteam = 5,
1700    Custom1 = 6,
1701    Custom2 = 7,
1702    Custom3 = 8,
1703    Custom4 = 9,
1704    Custom5 = 10,
1705    Custom6 = 11,
1706    Custom7 = 12,
1707    Custom8 = 13,
1708    Neutrals = 14,
1709}
1710#[derive(
1711    serde::Serialize,
1712    serde::Deserialize,
1713    Clone,
1714    Copy,
1715    Debug,
1716    PartialEq,
1717    Eq,
1718    Hash,
1719    PartialOrd,
1720    Ord,
1721    ::prost::Enumeration,
1722)]
1723#[repr(i32)]
1724pub enum EEvent {
1725    EventIdNone = 0,
1726    EventIdDiretide = 1,
1727    EventIdSpringFestival = 2,
1728    EventIdFrostivus2013 = 3,
1729    EventIdCompendium2014 = 4,
1730    EventIdNexonPcBang = 5,
1731    EventIdPwrdDac2015 = 6,
1732    EventIdNewBloom2015 = 7,
1733    EventIdInternational2015 = 8,
1734    EventIdFallMajor2015 = 9,
1735    EventIdOraclePa = 10,
1736    EventIdNewBloom2015Prebeast = 11,
1737    EventIdFrostivus = 12,
1738    EventIdWinterMajor2016 = 13,
1739    EventIdInternational2016 = 14,
1740    EventIdFallMajor2016 = 15,
1741    EventIdWinterMajor2017 = 16,
1742    EventIdNewBloom2017 = 17,
1743    EventIdInternational2017 = 18,
1744    EventIdPlusSubscription = 19,
1745    EventIdSinglesDay2017 = 20,
1746    EventIdFrostivus2017 = 21,
1747    EventIdInternational2018 = 22,
1748    EventIdFrostivus2018 = 23,
1749    EventIdNewBloom2019 = 24,
1750    EventIdInternational2019 = 25,
1751    EventIdNewPlayerExperience = 26,
1752    EventIdFrostivus2019 = 27,
1753    EventIdNewBloom2020 = 28,
1754    EventIdInternational2020 = 29,
1755    EventIdTeamFandom = 30,
1756    EventIdDiretide2020 = 31,
1757    EventIdSpring2021 = 32,
1758    EventIdFall2021 = 33,
1759    EventIdTeamFandomFall2021 = 34,
1760    EventIdTeam20212022Tour2 = 35,
1761    EventIdInternational2022 = 36,
1762    EventIdTeam20212022Tour3 = 37,
1763    EventIdTeamInternational2022 = 38,
1764    EventIdPermanentGrants = 39,
1765    EventIdMuertaReleaseSpring2023 = 40,
1766    EventIdTeam2023Tour1 = 41,
1767    EventIdTeam2023Tour2 = 42,
1768    EventIdTeam2023Tour3 = 43,
1769    EventIdInternational2023 = 45,
1770    EventId10thAnniversary = 46,
1771    EventIdCrownfall = 47,
1772    EventIdFrostivus2023 = 48,
1773}
1774#[derive(
1775    serde::Serialize,
1776    serde::Deserialize,
1777    Clone,
1778    Copy,
1779    Debug,
1780    PartialEq,
1781    Eq,
1782    Hash,
1783    PartialOrd,
1784    Ord,
1785    ::prost::Enumeration,
1786)]
1787#[repr(i32)]
1788pub enum ERankType {
1789    KERankTypeInvalid = 0,
1790    KERankTypeCasual = 1,
1791    KERankTypeRanked = 2,
1792    KERankTypeCasualLegacy = 3,
1793    KERankTypeRankedLegacy = 4,
1794    KERankTypeCasualGlicko = 5,
1795    KERankTypeRankedGlicko = 6,
1796    KERankTypeRankMax = 7,
1797    KERankTypeBehaviorPrivate = 100,
1798    KERankTypeBehaviorPublic = 101,
1799    KERankTypeMax = 102,
1800}
1801#[derive(
1802    serde::Serialize,
1803    serde::Deserialize,
1804    Clone,
1805    Copy,
1806    Debug,
1807    PartialEq,
1808    Eq,
1809    Hash,
1810    PartialOrd,
1811    Ord,
1812    ::prost::Enumeration,
1813)]
1814#[repr(i32)]
1815pub enum DotaLeaverStatusT {
1816    DotaLeaverNone = 0,
1817    DotaLeaverDisconnected = 1,
1818    DotaLeaverDisconnectedTooLong = 2,
1819    DotaLeaverAbandoned = 3,
1820    DotaLeaverAfk = 4,
1821    DotaLeaverNeverConnected = 5,
1822    DotaLeaverNeverConnectedTooLong = 6,
1823    DotaLeaverFailedToReadyUp = 7,
1824    DotaLeaverDeclined = 8,
1825    DotaLeaverDeclinedRequeue = 9,
1826}
1827#[derive(
1828    serde::Serialize,
1829    serde::Deserialize,
1830    Clone,
1831    Copy,
1832    Debug,
1833    PartialEq,
1834    Eq,
1835    Hash,
1836    PartialOrd,
1837    Ord,
1838    ::prost::Enumeration,
1839)]
1840#[repr(i32)]
1841pub enum DotaConnectionStateT {
1842    DotaConnectionStateUnknown = 0,
1843    DotaConnectionStateNotYetConnected = 1,
1844    DotaConnectionStateConnected = 2,
1845    DotaConnectionStateDisconnected = 3,
1846    DotaConnectionStateAbandoned = 4,
1847    DotaConnectionStateLoading = 5,
1848    DotaConnectionStateFailed = 6,
1849}
1850#[derive(
1851    serde::Serialize,
1852    serde::Deserialize,
1853    Clone,
1854    Copy,
1855    Debug,
1856    PartialEq,
1857    Eq,
1858    Hash,
1859    PartialOrd,
1860    Ord,
1861    ::prost::Enumeration,
1862)]
1863#[repr(i32)]
1864pub enum FantasyRoles {
1865    FantasyRoleUndefined = 0,
1866    FantasyRoleCore = 1,
1867    FantasyRoleSupport = 2,
1868    FantasyRoleOfflane = 3,
1869    FantasyRoleMid = 4,
1870}
1871#[derive(
1872    serde::Serialize,
1873    serde::Deserialize,
1874    Clone,
1875    Copy,
1876    Debug,
1877    PartialEq,
1878    Eq,
1879    Hash,
1880    PartialOrd,
1881    Ord,
1882    ::prost::Enumeration,
1883)]
1884#[repr(i32)]
1885pub enum FantasyScoring {
1886    Kills = 0,
1887    Deaths = 1,
1888    Cs = 2,
1889    Gpm = 3,
1890    TowerKills = 4,
1891    RoshanKills = 5,
1892    TeamfightParticipation = 6,
1893    WardsPlanted = 7,
1894    CampsStacked = 8,
1895    RunesGrabbed = 9,
1896    FirstBlood = 10,
1897    Stuns = 11,
1898    SmokesUsed = 12,
1899    NeutralTokensFound = 13,
1900    WatchersTaken = 14,
1901    LotusesGained = 15,
1902    TormentorKills = 16,
1903    CourierKills = 17,
1904    Types = 18,
1905    Invalid = 19,
1906}
1907#[derive(
1908    serde::Serialize,
1909    serde::Deserialize,
1910    Clone,
1911    Copy,
1912    Debug,
1913    PartialEq,
1914    Eq,
1915    Hash,
1916    PartialOrd,
1917    Ord,
1918    ::prost::Enumeration,
1919)]
1920#[repr(i32)]
1921pub enum FantasyTeamSlots {
1922    FantasySlotNone = 0,
1923    FantasySlotCore = 1,
1924    FantasySlotSupport = 2,
1925    FantasySlotAny = 3,
1926    FantasySlotBench = 4,
1927}
1928#[derive(
1929    serde::Serialize,
1930    serde::Deserialize,
1931    Clone,
1932    Copy,
1933    Debug,
1934    PartialEq,
1935    Eq,
1936    Hash,
1937    PartialOrd,
1938    Ord,
1939    ::prost::Enumeration,
1940)]
1941#[repr(i32)]
1942pub enum FantasySelectionMode {
1943    FantasySelectionInvalid = 0,
1944    FantasySelectionLocked = 1,
1945    FantasySelectionShuffle = 2,
1946    FantasySelectionFreePick = 3,
1947    FantasySelectionEnded = 4,
1948    FantasySelectionPreSeason = 5,
1949    FantasySelectionPreDraft = 6,
1950    FantasySelectionDrafting = 7,
1951    FantasySelectionRegularSeason = 8,
1952    FantasySelectionCardBased = 9,
1953}
1954#[derive(
1955    serde::Serialize,
1956    serde::Deserialize,
1957    Clone,
1958    Copy,
1959    Debug,
1960    PartialEq,
1961    Eq,
1962    Hash,
1963    PartialOrd,
1964    Ord,
1965    ::prost::Enumeration,
1966)]
1967#[repr(i32)]
1968pub enum FantasyGemType {
1969    Ruby = 0,
1970    Sapphire = 1,
1971    Emerald = 2,
1972}
1973#[derive(
1974    serde::Serialize,
1975    serde::Deserialize,
1976    Clone,
1977    Copy,
1978    Debug,
1979    PartialEq,
1980    Eq,
1981    Hash,
1982    PartialOrd,
1983    Ord,
1984    ::prost::Enumeration,
1985)]
1986#[repr(i32)]
1987pub enum DotaChatChannelTypeT {
1988    DotaChannelTypeRegional = 0,
1989    DotaChannelTypeCustom = 1,
1990    DotaChannelTypeParty = 2,
1991    DotaChannelTypeLobby = 3,
1992    DotaChannelTypeTeam = 4,
1993    DotaChannelTypeGuild = 5,
1994    DotaChannelTypeFantasy = 6,
1995    DotaChannelTypeWhisper = 7,
1996    DotaChannelTypeConsole = 8,
1997    DotaChannelTypeTab = 9,
1998    DotaChannelTypeInvalid = 10,
1999    DotaChannelTypeGameAll = 11,
2000    DotaChannelTypeGameAllies = 12,
2001    DotaChannelTypeGameSpectator = 13,
2002    DotaChannelTypeGameCoaching = 14,
2003    DotaChannelTypeCafe = 15,
2004    DotaChannelTypeCustomGame = 16,
2005    DotaChannelTypePrivate = 17,
2006    DotaChannelTypePostGame = 18,
2007    DotaChannelTypeBattleCup = 19,
2008    DotaChannelTypeHltvSpectator = 20,
2009    DotaChannelTypeGameEvents = 21,
2010    DotaChannelTypeTrivia = 22,
2011    DotaChannelTypeNewPlayer = 23,
2012    DotaChannelTypePrivateCoaching = 24,
2013}
2014#[derive(
2015    serde::Serialize,
2016    serde::Deserialize,
2017    Clone,
2018    Copy,
2019    Debug,
2020    PartialEq,
2021    Eq,
2022    Hash,
2023    PartialOrd,
2024    Ord,
2025    ::prost::Enumeration,
2026)]
2027#[repr(i32)]
2028pub enum EChatSpecialPrivileges {
2029    KEChatSpecialPrivilegesNone = 0,
2030    KEChatSpecialPrivilegesModerator = 1,
2031    KEChatSpecialPrivilegesSuperModerator = 2,
2032}
2033#[derive(
2034    serde::Serialize,
2035    serde::Deserialize,
2036    Clone,
2037    Copy,
2038    Debug,
2039    PartialEq,
2040    Eq,
2041    Hash,
2042    PartialOrd,
2043    Ord,
2044    ::prost::Enumeration,
2045)]
2046#[repr(i32)]
2047pub enum DotaCommTypeT {
2048    DotaCommTypeNone = 0,
2049    DotaCommTypePing = 1,
2050    DotaCommTypeChatwheel = 2,
2051    DotaCommTypeTip = 3,
2052    DotaCommTypeText = 4,
2053    DotaCommTypeShowcase = 5,
2054    DotaCommTypeVoice = 6,
2055    DotaCommTypeAllyAbility = 7,
2056    DotaCommTypePause = 8,
2057    DotaCommTypeCoaching = 9,
2058    DotaCommTypeNocooldown = 10,
2059    DotaCommTypeRankedmatchmake = 11,
2060    DotaCommTypeDrops = 12,
2061    DotaCommTypeNewplayerExpert = 13,
2062    DotaCommTypeCoached = 14,
2063    DotaCommTypeMapdrawing = 15,
2064}
2065#[derive(
2066    serde::Serialize,
2067    serde::Deserialize,
2068    Clone,
2069    Copy,
2070    Debug,
2071    PartialEq,
2072    Eq,
2073    Hash,
2074    PartialOrd,
2075    Ord,
2076    ::prost::Enumeration,
2077)]
2078#[repr(i32)]
2079pub enum DotaCommLevelT {
2080    DotaCommLevelNone = 0,
2081    DotaCommLevelCooldown = 1,
2082    DotaCommLevelPings = 2,
2083    DotaCommLevelMapdrawing = 3,
2084    DotaCommLevelChat = 4,
2085    DotaCommLevelTipping = 5,
2086    DotaCommLevelVoice = 6,
2087    DotaCommLevelAlliedAbility = 7,
2088}
2089#[derive(
2090    serde::Serialize,
2091    serde::Deserialize,
2092    Clone,
2093    Copy,
2094    Debug,
2095    PartialEq,
2096    Eq,
2097    Hash,
2098    PartialOrd,
2099    Ord,
2100    ::prost::Enumeration,
2101)]
2102#[repr(i32)]
2103pub enum DotaBehaviorLevelT {
2104    DotaBehaviorLevelNone = 0,
2105    DotaBehaviorLevelRankedAllowed = 1,
2106    DotaBehaviorLevelPausing = 2,
2107    DotaBehaviorLevelDrops = 3,
2108    DotaBehaviorLevelCoaching = 4,
2109}
2110#[derive(
2111    serde::Serialize,
2112    serde::Deserialize,
2113    Clone,
2114    Copy,
2115    Debug,
2116    PartialEq,
2117    Eq,
2118    Hash,
2119    PartialOrd,
2120    Ord,
2121    ::prost::Enumeration,
2122)]
2123#[repr(i32)]
2124pub enum EProfileCardSlotType {
2125    KEProfileCardSlotTypeEmpty = 0,
2126    KEProfileCardSlotTypeStat = 1,
2127    KEProfileCardSlotTypeTrophy = 2,
2128    KEProfileCardSlotTypeItem = 3,
2129    KEProfileCardSlotTypeHero = 4,
2130    KEProfileCardSlotTypeEmoticon = 5,
2131    KEProfileCardSlotTypeTeam = 6,
2132}
2133#[derive(
2134    serde::Serialize,
2135    serde::Deserialize,
2136    Clone,
2137    Copy,
2138    Debug,
2139    PartialEq,
2140    Eq,
2141    Hash,
2142    PartialOrd,
2143    Ord,
2144    ::prost::Enumeration,
2145)]
2146#[repr(i32)]
2147pub enum EMatchGroupServerStatus {
2148    KEMatchGroupServerStatusOk = 0,
2149    KEMatchGroupServerStatusLimitedAvailability = 1,
2150    KEMatchGroupServerStatusOffline = 2,
2151}
2152#[derive(
2153    serde::Serialize,
2154    serde::Deserialize,
2155    Clone,
2156    Copy,
2157    Debug,
2158    PartialEq,
2159    Eq,
2160    Hash,
2161    PartialOrd,
2162    Ord,
2163    ::prost::Enumeration,
2164)]
2165#[repr(i32)]
2166pub enum DotaCmPick {
2167    DotaCmRandom = 0,
2168    DotaCmGoodGuys = 1,
2169    DotaCmBadGuys = 2,
2170}
2171#[derive(
2172    serde::Serialize,
2173    serde::Deserialize,
2174    Clone,
2175    Copy,
2176    Debug,
2177    PartialEq,
2178    Eq,
2179    Hash,
2180    PartialOrd,
2181    Ord,
2182    ::prost::Enumeration,
2183)]
2184#[repr(i32)]
2185pub enum DotaLowPriorityBanType {
2186    DotaLowPriorityBanAbandon = 0,
2187    DotaLowPriorityBanReports = 1,
2188    DotaLowPriorityBanSecondaryAbandon = 2,
2189    DotaLowPriorityBanPreGameRole = 3,
2190}
2191#[derive(
2192    serde::Serialize,
2193    serde::Deserialize,
2194    Clone,
2195    Copy,
2196    Debug,
2197    PartialEq,
2198    Eq,
2199    Hash,
2200    PartialOrd,
2201    Ord,
2202    ::prost::Enumeration,
2203)]
2204#[repr(i32)]
2205pub enum DotaLobbyReadyState {
2206    Undeclared = 0,
2207    Accepted = 1,
2208    Declined = 2,
2209    DeclinedRequeue = 3,
2210}
2211#[derive(
2212    serde::Serialize,
2213    serde::Deserialize,
2214    Clone,
2215    Copy,
2216    Debug,
2217    PartialEq,
2218    Eq,
2219    Hash,
2220    PartialOrd,
2221    Ord,
2222    ::prost::Enumeration,
2223)]
2224#[repr(i32)]
2225pub enum DotaJoinLobbyResult {
2226    DotaJoinResultSuccess = 0,
2227    DotaJoinResultAlreadyInGame = 1,
2228    DotaJoinResultInvalidLobby = 2,
2229    DotaJoinResultIncorrectPassword = 3,
2230    DotaJoinResultAccessDenied = 4,
2231    DotaJoinResultGenericError = 5,
2232    DotaJoinResultIncorrectVersion = 6,
2233    DotaJoinResultInTeamParty = 7,
2234    DotaJoinResultNoLobbyFound = 8,
2235    DotaJoinResultLobbyFull = 9,
2236    DotaJoinResultCustomGameIncorrectVersion = 10,
2237    DotaJoinResultTimeout = 11,
2238    DotaJoinResultCustomGameCooldown = 12,
2239    DotaJoinResultBusy = 13,
2240    DotaJoinResultNoPlaytime = 14,
2241}
2242#[derive(
2243    serde::Serialize,
2244    serde::Deserialize,
2245    Clone,
2246    Copy,
2247    Debug,
2248    PartialEq,
2249    Eq,
2250    Hash,
2251    PartialOrd,
2252    Ord,
2253    ::prost::Enumeration,
2254)]
2255#[repr(i32)]
2256pub enum DotaSelectionPriorityRules {
2257    KDotaSelectionPriorityRulesManual = 0,
2258    KDotaSelectionPriorityRulesAutomatic = 1,
2259}
2260#[derive(
2261    serde::Serialize,
2262    serde::Deserialize,
2263    Clone,
2264    Copy,
2265    Debug,
2266    PartialEq,
2267    Eq,
2268    Hash,
2269    PartialOrd,
2270    Ord,
2271    ::prost::Enumeration,
2272)]
2273#[repr(i32)]
2274pub enum DotaSelectionPriorityChoice {
2275    KDotaSelectionPriorityChoiceInvalid = 0,
2276    KDotaSelectionPriorityChoiceFirstPick = 1,
2277    KDotaSelectionPriorityChoiceSecondPick = 2,
2278    KDotaSelectionPriorityChoiceRadiant = 3,
2279    KDotaSelectionPriorityChoiceDire = 4,
2280}
2281#[derive(
2282    serde::Serialize,
2283    serde::Deserialize,
2284    Clone,
2285    Copy,
2286    Debug,
2287    PartialEq,
2288    Eq,
2289    Hash,
2290    PartialOrd,
2291    Ord,
2292    ::prost::Enumeration,
2293)]
2294#[repr(i32)]
2295pub enum DotaMatchVote {
2296    Invalid = 0,
2297    Positive = 1,
2298    Negative = 2,
2299}
2300#[derive(
2301    serde::Serialize,
2302    serde::Deserialize,
2303    Clone,
2304    Copy,
2305    Debug,
2306    PartialEq,
2307    Eq,
2308    Hash,
2309    PartialOrd,
2310    Ord,
2311    ::prost::Enumeration,
2312)]
2313#[repr(i32)]
2314pub enum DotaLobbyVisibility {
2315    Public = 0,
2316    Friends = 1,
2317    Unlisted = 2,
2318}
2319#[derive(
2320    serde::Serialize,
2321    serde::Deserialize,
2322    Clone,
2323    Copy,
2324    Debug,
2325    PartialEq,
2326    Eq,
2327    Hash,
2328    PartialOrd,
2329    Ord,
2330    ::prost::Enumeration,
2331)]
2332#[repr(i32)]
2333pub enum EDotaPlayerMmrType {
2334    KEDotaPlayerMmrTypeInvalid = 0,
2335    KEDotaPlayerMmrTypeGeneralHidden = 1,
2336    KEDotaPlayerMmrTypeGeneralCompetitive = 3,
2337}
2338#[derive(
2339    serde::Serialize,
2340    serde::Deserialize,
2341    Clone,
2342    Copy,
2343    Debug,
2344    PartialEq,
2345    Eq,
2346    Hash,
2347    PartialOrd,
2348    Ord,
2349    ::prost::Enumeration,
2350)]
2351#[repr(i32)]
2352pub enum EDotammrBoostType {
2353    KEDotammrBoostTypeNone = 0,
2354    KEDotammrBoostTypeLeader = 1,
2355    KEDotammrBoostTypeFollower = 2,
2356}
2357#[derive(
2358    serde::Serialize,
2359    serde::Deserialize,
2360    Clone,
2361    Copy,
2362    Debug,
2363    PartialEq,
2364    Eq,
2365    Hash,
2366    PartialOrd,
2367    Ord,
2368    ::prost::Enumeration,
2369)]
2370#[repr(i32)]
2371pub enum MatchType {
2372    Casual = 0,
2373    CoopBots = 1,
2374    Competitive = 4,
2375    WeekendTourney = 5,
2376    Event = 7,
2377    CoachesChallenge = 12,
2378    NewPlayerPool = 14,
2379}
2380#[derive(
2381    serde::Serialize,
2382    serde::Deserialize,
2383    Clone,
2384    Copy,
2385    Debug,
2386    PartialEq,
2387    Eq,
2388    Hash,
2389    PartialOrd,
2390    Ord,
2391    ::prost::Enumeration,
2392)]
2393#[repr(i32)]
2394pub enum DotaBotDifficulty {
2395    BotDifficultyPassive = 0,
2396    BotDifficultyEasy = 1,
2397    BotDifficultyMedium = 2,
2398    BotDifficultyHard = 3,
2399    BotDifficultyUnfair = 4,
2400    BotDifficultyInvalid = 5,
2401    BotDifficultyExtra1 = 6,
2402    BotDifficultyExtra2 = 7,
2403    BotDifficultyExtra3 = 8,
2404    BotDifficultyNpx = 9,
2405}
2406#[derive(
2407    serde::Serialize,
2408    serde::Deserialize,
2409    Clone,
2410    Copy,
2411    Debug,
2412    PartialEq,
2413    Eq,
2414    Hash,
2415    PartialOrd,
2416    Ord,
2417    ::prost::Enumeration,
2418)]
2419#[repr(i32)]
2420pub enum DotaBotMode {
2421    None = 0,
2422    Laning = 1,
2423    Attack = 2,
2424    Roam = 3,
2425    Retreat = 4,
2426    SecretShop = 5,
2427    SideShop = 6,
2428    Rune = 7,
2429    PushTowerTop = 8,
2430    PushTowerMid = 9,
2431    PushTowerBot = 10,
2432    DefendTowerTop = 11,
2433    DefendTowerMid = 12,
2434    DefendTowerBot = 13,
2435    Assemble = 14,
2436    AssembleWithHumans = 15,
2437    TeamRoam = 16,
2438    Farm = 17,
2439    DefendAlly = 18,
2440    EvasiveManeuvers = 19,
2441    Roshan = 20,
2442    Item = 21,
2443    Ward = 22,
2444    Companion = 23,
2445    TutorialBoss = 24,
2446    Minion = 25,
2447    Outpost = 26,
2448}
2449#[derive(
2450    serde::Serialize,
2451    serde::Deserialize,
2452    Clone,
2453    Copy,
2454    Debug,
2455    PartialEq,
2456    Eq,
2457    Hash,
2458    PartialOrd,
2459    Ord,
2460    ::prost::Enumeration,
2461)]
2462#[repr(i32)]
2463pub enum MatchLanguages {
2464    MatchLanguageInvalid = 0,
2465    MatchLanguageEnglish = 1,
2466    MatchLanguageRussian = 2,
2467    MatchLanguageChinese = 3,
2468    MatchLanguageKorean = 4,
2469    MatchLanguageSpanish = 5,
2470    MatchLanguagePortuguese = 6,
2471    MatchLanguageEnglish2 = 7,
2472}
2473#[derive(
2474    serde::Serialize,
2475    serde::Deserialize,
2476    Clone,
2477    Copy,
2478    Debug,
2479    PartialEq,
2480    Eq,
2481    Hash,
2482    PartialOrd,
2483    Ord,
2484    ::prost::Enumeration,
2485)]
2486#[repr(i32)]
2487pub enum ETourneyQueueDeadlineState {
2488    KETourneyQueueDeadlineStateNormal = 0,
2489    KETourneyQueueDeadlineStateMissed = 1,
2490    KETourneyQueueDeadlineStateExpiredOk = 2,
2491    KETourneyQueueDeadlineStateSeekingBye = 3,
2492    KETourneyQueueDeadlineStateEligibleForRefund = 4,
2493    KETourneyQueueDeadlineStateNa = -1,
2494    KETourneyQueueDeadlineStateExpiringSoon = 101,
2495}
2496#[derive(
2497    serde::Serialize,
2498    serde::Deserialize,
2499    Clone,
2500    Copy,
2501    Debug,
2502    PartialEq,
2503    Eq,
2504    Hash,
2505    PartialOrd,
2506    Ord,
2507    ::prost::Enumeration,
2508)]
2509#[repr(i32)]
2510pub enum EMatchOutcome {
2511    KEMatchOutcomeUnknown = 0,
2512    KEMatchOutcomeRadVictory = 2,
2513    KEMatchOutcomeDireVictory = 3,
2514    KEMatchOutcomeNeutralVictory = 4,
2515    KEMatchOutcomeNoTeamWinner = 5,
2516    KEMatchOutcomeCustom1Victory = 6,
2517    KEMatchOutcomeCustom2Victory = 7,
2518    KEMatchOutcomeCustom3Victory = 8,
2519    KEMatchOutcomeCustom4Victory = 9,
2520    KEMatchOutcomeCustom5Victory = 10,
2521    KEMatchOutcomeCustom6Victory = 11,
2522    KEMatchOutcomeCustom7Victory = 12,
2523    KEMatchOutcomeCustom8Victory = 13,
2524    KEMatchOutcomeNotScoredPoorNetworkConditions = 64,
2525    KEMatchOutcomeNotScoredLeaver = 65,
2526    KEMatchOutcomeNotScoredServerCrash = 66,
2527    KEMatchOutcomeNotScoredNeverStarted = 67,
2528    KEMatchOutcomeNotScoredCanceled = 68,
2529    KEMatchOutcomeNotScoredSuspicious = 69,
2530}
2531#[derive(
2532    serde::Serialize,
2533    serde::Deserialize,
2534    Clone,
2535    Copy,
2536    Debug,
2537    PartialEq,
2538    Eq,
2539    Hash,
2540    PartialOrd,
2541    Ord,
2542    ::prost::Enumeration,
2543)]
2544#[repr(i32)]
2545pub enum ELaneType {
2546    LaneTypeUnknown = 0,
2547    LaneTypeSafe = 1,
2548    LaneTypeOff = 2,
2549    LaneTypeMid = 3,
2550    LaneTypeJungle = 4,
2551    LaneTypeRoam = 5,
2552}
2553#[derive(
2554    serde::Serialize,
2555    serde::Deserialize,
2556    Clone,
2557    Copy,
2558    Debug,
2559    PartialEq,
2560    Eq,
2561    Hash,
2562    PartialOrd,
2563    Ord,
2564    ::prost::Enumeration,
2565)]
2566#[repr(i32)]
2567pub enum EBadgeType {
2568    KEBadgeTypeInvalid = 0,
2569    KEBadgeTypeTi7Midweek = 1,
2570    KEBadgeTypeTi7Finals = 2,
2571    KEBadgeTypeTi7AllEvent = 3,
2572    KEBadgeTypeTi8Midweek = 4,
2573    KEBadgeTypeTi8Finals = 5,
2574    KEBadgeTypeTi8AllEvent = 6,
2575    KEBadgeTypeTi10 = 7,
2576    KEBadgeTypeTi11PlayoffsDay1 = 8,
2577    KEBadgeTypeTi11PlayoffsDay2 = 9,
2578    KEBadgeTypeTi11PlayoffsDay3 = 10,
2579    KEBadgeTypeTi11PlayoffsDay4 = 11,
2580    KEBadgeTypeTi11FinalsWeekend = 12,
2581    KEBadgeTypeTi12PlayoffsDay1 = 13,
2582    KEBadgeTypeTi12PlayoffsDay2 = 14,
2583    KEBadgeTypeTi12PlayoffsDay3 = 15,
2584    KEBadgeTypeTi12FinalsWeekend = 16,
2585    KEBadgeTypeTi12Special = 17,
2586}
2587#[derive(
2588    serde::Serialize,
2589    serde::Deserialize,
2590    Clone,
2591    Copy,
2592    Debug,
2593    PartialEq,
2594    Eq,
2595    Hash,
2596    PartialOrd,
2597    Ord,
2598    ::prost::Enumeration,
2599)]
2600#[repr(i32)]
2601pub enum ELeagueStatus {
2602    LeagueStatusUnset = 0,
2603    LeagueStatusUnsubmitted = 1,
2604    LeagueStatusSubmitted = 2,
2605    LeagueStatusAccepted = 3,
2606    LeagueStatusRejected = 4,
2607    LeagueStatusConcluded = 5,
2608    LeagueStatusDeleted = 6,
2609}
2610#[derive(
2611    serde::Serialize,
2612    serde::Deserialize,
2613    Clone,
2614    Copy,
2615    Debug,
2616    PartialEq,
2617    Eq,
2618    Hash,
2619    PartialOrd,
2620    Ord,
2621    ::prost::Enumeration,
2622)]
2623#[repr(i32)]
2624pub enum ELeagueRegion {
2625    LeagueRegionUnset = 0,
2626    LeagueRegionNa = 1,
2627    LeagueRegionSa = 2,
2628    LeagueRegionWeu = 3,
2629    LeagueRegionEeu = 4,
2630    LeagueRegionChina = 5,
2631    LeagueRegionSea = 6,
2632}
2633#[derive(
2634    serde::Serialize,
2635    serde::Deserialize,
2636    Clone,
2637    Copy,
2638    Debug,
2639    PartialEq,
2640    Eq,
2641    Hash,
2642    PartialOrd,
2643    Ord,
2644    ::prost::Enumeration,
2645)]
2646#[repr(i32)]
2647pub enum ELeagueTier {
2648    LeagueTierUnset = 0,
2649    LeagueTierAmateur = 1,
2650    LeagueTierProfessional = 2,
2651    LeagueTierMinor = 3,
2652    LeagueTierMajor = 4,
2653    LeagueTierInternational = 5,
2654    LeagueTierDpcQualifier = 6,
2655    LeagueTierDpcLeagueQualifier = 7,
2656    LeagueTierDpcLeague = 8,
2657    LeagueTierDpcLeagueFinals = 9,
2658}
2659#[derive(
2660    serde::Serialize,
2661    serde::Deserialize,
2662    Clone,
2663    Copy,
2664    Debug,
2665    PartialEq,
2666    Eq,
2667    Hash,
2668    PartialOrd,
2669    Ord,
2670    ::prost::Enumeration,
2671)]
2672#[repr(i32)]
2673pub enum ELeagueTierCategory {
2674    LeagueTierCategoryAmateur = 1,
2675    LeagueTierCategoryProfessional = 2,
2676    LeagueTierCategoryDpc = 3,
2677}
2678#[derive(
2679    serde::Serialize,
2680    serde::Deserialize,
2681    Clone,
2682    Copy,
2683    Debug,
2684    PartialEq,
2685    Eq,
2686    Hash,
2687    PartialOrd,
2688    Ord,
2689    ::prost::Enumeration,
2690)]
2691#[repr(i32)]
2692pub enum ELeagueDivision {
2693    LeagueDivisionUnset = 0,
2694    LeagueDivisionI = 1,
2695    LeagueDivisionIi = 2,
2696}
2697#[derive(
2698    serde::Serialize,
2699    serde::Deserialize,
2700    Clone,
2701    Copy,
2702    Debug,
2703    PartialEq,
2704    Eq,
2705    Hash,
2706    PartialOrd,
2707    Ord,
2708    ::prost::Enumeration,
2709)]
2710#[repr(i32)]
2711pub enum ELeagueBroadcastProvider {
2712    LeagueBroadcastUnknown = 0,
2713    LeagueBroadcastSteam = 1,
2714    LeagueBroadcastTwitch = 2,
2715    LeagueBroadcastYoutube = 3,
2716    LeagueBroadcastOther = 100,
2717}
2718#[derive(
2719    serde::Serialize,
2720    serde::Deserialize,
2721    Clone,
2722    Copy,
2723    Debug,
2724    PartialEq,
2725    Eq,
2726    Hash,
2727    PartialOrd,
2728    Ord,
2729    ::prost::Enumeration,
2730)]
2731#[repr(i32)]
2732pub enum ELeaguePhase {
2733    LeaguePhaseUnset = 0,
2734    LeaguePhaseRegionalQualifier = 1,
2735    LeaguePhaseGroupStage = 2,
2736    LeaguePhaseMainEvent = 3,
2737}
2738#[derive(
2739    serde::Serialize,
2740    serde::Deserialize,
2741    Clone,
2742    Copy,
2743    Debug,
2744    PartialEq,
2745    Eq,
2746    Hash,
2747    PartialOrd,
2748    Ord,
2749    ::prost::Enumeration,
2750)]
2751#[repr(i32)]
2752pub enum ELeagueAuditAction {
2753    LeagueAuditActionInvalid = 0,
2754    LeagueAuditActionLeagueCreate = 1,
2755    LeagueAuditActionLeagueEdit = 2,
2756    LeagueAuditActionLeagueDelete = 3,
2757    LeagueAuditActionLeagueAdminAdd = 4,
2758    LeagueAuditActionLeagueAdminRevoke = 5,
2759    LeagueAuditActionLeagueAdminPromote = 6,
2760    LeagueAuditActionLeagueStreamAdd = 7,
2761    LeagueAuditActionLeagueStreamRemove = 8,
2762    LeagueAuditActionLeagueImageUpdated = 9,
2763    LeagueAuditActionLeagueMessageAdded = 10,
2764    LeagueAuditActionLeagueSubmitted = 11,
2765    LeagueAuditActionLeagueSetPrizePool = 12,
2766    LeagueAuditActionLeagueAddPrizePoolItem = 13,
2767    LeagueAuditActionLeagueRemovePrizePoolItem = 14,
2768    LeagueAuditActionLeagueMatchStart = 15,
2769    LeagueAuditActionLeagueMatchEnd = 16,
2770    LeagueAuditActionLeagueAddInvitedTeam = 17,
2771    LeagueAuditActionLeagueRemoveInvitedTeam = 18,
2772    LeagueAuditActionLeagueStatusChanged = 19,
2773    LeagueAuditActionLeagueStreamEdit = 20,
2774    LeagueAuditActionLeagueTeamSwap = 21,
2775    LeagueAuditActionNodegroupCreate = 100,
2776    LeagueAuditActionNodegroupDestroy = 101,
2777    LeagueAuditActionNodegroupAddTeam = 102,
2778    LeagueAuditActionNodegroupRemoveTeam = 103,
2779    LeagueAuditActionNodegroupSetAdvancing = 104,
2780    LeagueAuditActionNodegroupEdit = 105,
2781    LeagueAuditActionNodegroupPopulate = 106,
2782    LeagueAuditActionNodegroupCompleted = 107,
2783    LeagueAuditActionNodegroupSetSecondaryAdvancing = 108,
2784    LeagueAuditActionNodegroupSetTertiaryAdvancing = 109,
2785    LeagueAuditActionNodeCreate = 200,
2786    LeagueAuditActionNodeDestroy = 201,
2787    LeagueAuditActionNodeAutocreate = 202,
2788    LeagueAuditActionNodeSetTeam = 203,
2789    LeagueAuditActionNodeSetSeriesId = 204,
2790    LeagueAuditActionNodeSetAdvancing = 205,
2791    LeagueAuditActionNodeSetTime = 206,
2792    LeagueAuditActionNodeMatchCompleted = 207,
2793    LeagueAuditActionNodeCompleted = 208,
2794    LeagueAuditActionNodeEdit = 209,
2795}
2796#[derive(
2797    serde::Serialize,
2798    serde::Deserialize,
2799    Clone,
2800    Copy,
2801    Debug,
2802    PartialEq,
2803    Eq,
2804    Hash,
2805    PartialOrd,
2806    Ord,
2807    ::prost::Enumeration,
2808)]
2809#[repr(i32)]
2810pub enum DotaCombatlogTypes {
2811    DotaCombatlogInvalid = -1,
2812    DotaCombatlogDamage = 0,
2813    DotaCombatlogHeal = 1,
2814    DotaCombatlogModifierAdd = 2,
2815    DotaCombatlogModifierRemove = 3,
2816    DotaCombatlogDeath = 4,
2817    DotaCombatlogAbility = 5,
2818    DotaCombatlogItem = 6,
2819    DotaCombatlogLocation = 7,
2820    DotaCombatlogGold = 8,
2821    DotaCombatlogGameState = 9,
2822    DotaCombatlogXp = 10,
2823    DotaCombatlogPurchase = 11,
2824    DotaCombatlogBuyback = 12,
2825    DotaCombatlogAbilityTrigger = 13,
2826    DotaCombatlogPlayerstats = 14,
2827    DotaCombatlogMultikill = 15,
2828    DotaCombatlogKillstreak = 16,
2829    DotaCombatlogTeamBuildingKill = 17,
2830    DotaCombatlogFirstBlood = 18,
2831    DotaCombatlogModifierStackEvent = 19,
2832    DotaCombatlogNeutralCampStack = 20,
2833    DotaCombatlogPickupRune = 21,
2834    DotaCombatlogRevealedInvisible = 22,
2835    DotaCombatlogHeroSaved = 23,
2836    DotaCombatlogManaRestored = 24,
2837    DotaCombatlogHeroLevelup = 25,
2838    DotaCombatlogBottleHealAlly = 26,
2839    DotaCombatlogEndgameStats = 27,
2840    DotaCombatlogInterruptChannel = 28,
2841    DotaCombatlogAlliedGold = 29,
2842    DotaCombatlogAegisTaken = 30,
2843    DotaCombatlogManaDamage = 31,
2844    DotaCombatlogPhysicalDamagePrevented = 32,
2845    DotaCombatlogUnitSummoned = 33,
2846    DotaCombatlogAttackEvade = 34,
2847    DotaCombatlogTreeCut = 35,
2848    DotaCombatlogSuccessfulScan = 36,
2849    DotaCombatlogEndKillstreak = 37,
2850    DotaCombatlogBloodstoneCharge = 38,
2851    DotaCombatlogCriticalDamage = 39,
2852    DotaCombatlogSpellAbsorb = 40,
2853    DotaCombatlogUnitTeleported = 41,
2854    DotaCombatlogKillEaterEvent = 42,
2855    DotaCombatlogNeutralItemEarned = 43,
2856}
2857#[derive(
2858    serde::Serialize,
2859    serde::Deserialize,
2860    Clone,
2861    Copy,
2862    Debug,
2863    PartialEq,
2864    Eq,
2865    Hash,
2866    PartialOrd,
2867    Ord,
2868    ::prost::Enumeration,
2869)]
2870#[repr(i32)]
2871pub enum EdpcFavoriteType {
2872    FavoriteTypeAll = 0,
2873    FavoriteTypePlayer = 1,
2874    FavoriteTypeTeam = 2,
2875    FavoriteTypeLeague = 3,
2876}
2877#[derive(
2878    serde::Serialize,
2879    serde::Deserialize,
2880    Clone,
2881    Copy,
2882    Debug,
2883    PartialEq,
2884    Eq,
2885    Hash,
2886    PartialOrd,
2887    Ord,
2888    ::prost::Enumeration,
2889)]
2890#[repr(i32)]
2891pub enum EdpcPushNotification {
2892    DpcPushNotificationMatchStarting = 1,
2893    DpcPushNotificationPlayerLeftTeam = 10,
2894    DpcPushNotificationPlayerJoinedTeam = 11,
2895    DpcPushNotificationPlayerJoinedTeamAsCoach = 12,
2896    DpcPushNotificationPlayerLeftTeamAsCoach = 13,
2897    DpcPushNotificationLeagueResult = 20,
2898    DpcPushNotificationPredictionMatchesAvailable = 30,
2899    DpcPushNotificationPredictionResult = 31,
2900    DpcPushNotificationFantasyPlayerCleared = 40,
2901    DpcPushNotificationFantasyDailySummary = 41,
2902    DpcPushNotificationFantasyFinalResults = 42,
2903}
2904#[derive(
2905    serde::Serialize,
2906    serde::Deserialize,
2907    Clone,
2908    Copy,
2909    Debug,
2910    PartialEq,
2911    Eq,
2912    Hash,
2913    PartialOrd,
2914    Ord,
2915    ::prost::Enumeration,
2916)]
2917#[repr(i32)]
2918pub enum EEventActionScoreMode {
2919    KEEventActionScoreModeAdd = 0,
2920    KEEventActionScoreModeMin = 1,
2921}
2922#[derive(
2923    serde::Serialize,
2924    serde::Deserialize,
2925    Clone,
2926    Copy,
2927    Debug,
2928    PartialEq,
2929    Eq,
2930    Hash,
2931    PartialOrd,
2932    Ord,
2933    ::prost::Enumeration,
2934)]
2935#[repr(i32)]
2936pub enum EPlayerChallengeHistoryType {
2937    KEPlayerChallengeHistoryTypeInvalid = 0,
2938    KEPlayerChallengeHistoryTypeKillEater = 1,
2939    KEPlayerChallengeHistoryTypeDotaPlusRelic = 2,
2940    KEPlayerChallengeHistoryTypeDotaPlusHeroPlayerChallenge = 3,
2941    KEPlayerChallengeHistoryTypeInGameEventChallenge = 4,
2942    KEPlayerChallengeHistoryTypeGuildContract = 5,
2943}
2944#[derive(
2945    serde::Serialize,
2946    serde::Deserialize,
2947    Clone,
2948    Copy,
2949    Debug,
2950    PartialEq,
2951    Eq,
2952    Hash,
2953    PartialOrd,
2954    Ord,
2955    ::prost::Enumeration,
2956)]
2957#[repr(i32)]
2958pub enum EOverwatchReportReason {
2959    KEOverwatchReportReasonUnknown = 0,
2960    KEOverwatchReportReasonCheating = 1,
2961    KEOverwatchReportReasonFeeding = 2,
2962    KEOverwatchReportReasonGriefing = 3,
2963    KEOverwatchReportReasonSuspicious = 4,
2964    KEOverwatchReportReasonAbilityAbuse = 5,
2965}
2966#[derive(
2967    serde::Serialize,
2968    serde::Deserialize,
2969    Clone,
2970    Copy,
2971    Debug,
2972    PartialEq,
2973    Eq,
2974    Hash,
2975    PartialOrd,
2976    Ord,
2977    ::prost::Enumeration,
2978)]
2979#[repr(i32)]
2980pub enum ECandyShopUpgrade {
2981    KECandyShopUpgradeInvalid = -1,
2982    KECandyShopUpgradeInventorySize = 0,
2983    KECandyShopUpgradeRewardShelf = 1,
2984    KECandyShopUpgradeExtraExchangeRecipe = 2,
2985}
2986#[derive(serde::Serialize, serde::Deserialize)]
2987#[allow(clippy::derive_partial_eq_without_eq)]
2988#[derive(Clone, PartialEq, ::prost::Message)]
2989pub struct CDotaUserMsgAiDebugLine {
2990    #[prost(string, optional, tag = "1")]
2991    pub message: ::core::option::Option<::prost::alloc::string::String>,
2992}
2993#[derive(serde::Serialize, serde::Deserialize)]
2994#[allow(clippy::derive_partial_eq_without_eq)]
2995#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2996pub struct CDotaUserMsgPing {
2997    #[prost(uint32, optional, tag = "2")]
2998    pub ping: ::core::option::Option<u32>,
2999    #[prost(uint32, optional, tag = "3")]
3000    pub loss: ::core::option::Option<u32>,
3001}
3002#[derive(serde::Serialize, serde::Deserialize)]
3003#[allow(clippy::derive_partial_eq_without_eq)]
3004#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3005pub struct CDotaUserMsgSwapVerify {
3006    #[prost(int32, optional, tag = "1", default = "-1")]
3007    pub player_id: ::core::option::Option<i32>,
3008}
3009#[derive(serde::Serialize, serde::Deserialize)]
3010#[allow(clippy::derive_partial_eq_without_eq)]
3011#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3012pub struct CDotaUserMsgChatEvent {
3013    #[prost(
3014        enumeration = "DotaChatMessage",
3015        required,
3016        tag = "1",
3017        default = "ChatMessageInvalid"
3018    )]
3019    pub r#type: i32,
3020    #[prost(uint32, optional, tag = "2")]
3021    pub value: ::core::option::Option<u32>,
3022    #[prost(sint32, optional, tag = "3", default = "-1")]
3023    pub playerid_1: ::core::option::Option<i32>,
3024    #[prost(sint32, optional, tag = "4", default = "-1")]
3025    pub playerid_2: ::core::option::Option<i32>,
3026    #[prost(sint32, optional, tag = "5", default = "-1")]
3027    pub playerid_3: ::core::option::Option<i32>,
3028    #[prost(sint32, optional, tag = "6", default = "-1")]
3029    pub playerid_4: ::core::option::Option<i32>,
3030    #[prost(sint32, optional, tag = "7", default = "-1")]
3031    pub playerid_5: ::core::option::Option<i32>,
3032    #[prost(sint32, optional, tag = "8", default = "-1")]
3033    pub playerid_6: ::core::option::Option<i32>,
3034    #[prost(uint32, optional, tag = "9")]
3035    pub value2: ::core::option::Option<u32>,
3036    #[prost(uint32, optional, tag = "10")]
3037    pub value3: ::core::option::Option<u32>,
3038}
3039#[derive(serde::Serialize, serde::Deserialize)]
3040#[allow(clippy::derive_partial_eq_without_eq)]
3041#[derive(Clone, PartialEq, ::prost::Message)]
3042pub struct CDotaUserMsgBotChat {
3043    #[prost(int32, optional, tag = "1", default = "-1")]
3044    pub player_id: ::core::option::Option<i32>,
3045    #[prost(string, optional, tag = "3")]
3046    pub message: ::core::option::Option<::prost::alloc::string::String>,
3047    #[prost(string, optional, tag = "4")]
3048    pub target: ::core::option::Option<::prost::alloc::string::String>,
3049    #[prost(bool, optional, tag = "5")]
3050    pub team_only: ::core::option::Option<bool>,
3051}
3052#[derive(serde::Serialize, serde::Deserialize)]
3053#[allow(clippy::derive_partial_eq_without_eq)]
3054#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3055pub struct CDotaUserMsgCombatHeroPositions {
3056    #[prost(uint32, optional, tag = "1")]
3057    pub index: ::core::option::Option<u32>,
3058    #[prost(int32, optional, tag = "2")]
3059    pub time: ::core::option::Option<i32>,
3060    #[prost(message, optional, tag = "3")]
3061    pub world_pos: ::core::option::Option<CMsgVector2D>,
3062    #[prost(int32, optional, tag = "4")]
3063    pub health: ::core::option::Option<i32>,
3064}
3065#[derive(serde::Serialize, serde::Deserialize)]
3066#[allow(clippy::derive_partial_eq_without_eq)]
3067#[derive(Clone, PartialEq, ::prost::Message)]
3068pub struct CDotaUserMsgCombatLogBulkData {
3069    #[prost(message, repeated, tag = "1")]
3070    pub combat_entries: ::prost::alloc::vec::Vec<CMsgDotaCombatLogEntry>,
3071    #[prost(float, optional, tag = "2")]
3072    pub timestamp: ::core::option::Option<f32>,
3073    #[prost(float, optional, tag = "3")]
3074    pub duration: ::core::option::Option<f32>,
3075    #[prost(int32, optional, tag = "4", default = "-1")]
3076    pub player_id: ::core::option::Option<i32>,
3077    #[prost(float, optional, tag = "5")]
3078    pub request_time: ::core::option::Option<f32>,
3079}
3080#[derive(serde::Serialize, serde::Deserialize)]
3081#[allow(clippy::derive_partial_eq_without_eq)]
3082#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3083pub struct CDotaUserMsgProjectileParticleCpData {
3084    #[prost(int32, optional, tag = "1")]
3085    pub control_point: ::core::option::Option<i32>,
3086    #[prost(message, optional, tag = "2")]
3087    pub vector: ::core::option::Option<CMsgVector>,
3088}
3089#[derive(serde::Serialize, serde::Deserialize)]
3090#[allow(clippy::derive_partial_eq_without_eq)]
3091#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3092pub struct CDotaUserMsgUpdateLinearProjectileCpData {
3093    #[prost(int32, optional, tag = "1")]
3094    pub handle: ::core::option::Option<i32>,
3095    #[prost(int32, optional, tag = "2")]
3096    pub control_point: ::core::option::Option<i32>,
3097    #[prost(message, optional, tag = "3")]
3098    pub vector: ::core::option::Option<CMsgVector>,
3099}
3100#[derive(serde::Serialize, serde::Deserialize)]
3101#[allow(clippy::derive_partial_eq_without_eq)]
3102#[derive(Clone, PartialEq, ::prost::Message)]
3103pub struct CDotaUserMsgMiniKillCamInfo {
3104    #[prost(message, repeated, tag = "1")]
3105    pub attackers: ::prost::alloc::vec::Vec<cdota_user_msg_mini_kill_cam_info::Attacker>,
3106}
3107/// Nested message and enum types in `CDOTAUserMsg_MiniKillCamInfo`.
3108pub mod cdota_user_msg_mini_kill_cam_info {
3109    #[derive(serde::Serialize, serde::Deserialize)]
3110    #[allow(clippy::derive_partial_eq_without_eq)]
3111    #[derive(Clone, PartialEq, ::prost::Message)]
3112    pub struct Attacker {
3113        #[prost(uint32, optional, tag = "1", default = "16777215")]
3114        pub attacker: ::core::option::Option<u32>,
3115        #[prost(int32, optional, tag = "2")]
3116        pub total_damage: ::core::option::Option<i32>,
3117        #[prost(message, repeated, tag = "3")]
3118        pub abilities: ::prost::alloc::vec::Vec<attacker::Ability>,
3119        #[prost(string, optional, tag = "4")]
3120        pub attacker_name: ::core::option::Option<::prost::alloc::string::String>,
3121    }
3122    /// Nested message and enum types in `Attacker`.
3123    pub mod attacker {
3124        #[derive(serde::Serialize, serde::Deserialize)]
3125        #[allow(clippy::derive_partial_eq_without_eq)]
3126        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3127        pub struct Ability {
3128            #[prost(int32, optional, tag = "1", default = "-1")]
3129            pub ability_id: ::core::option::Option<i32>,
3130            #[prost(int32, optional, tag = "2")]
3131            pub damage: ::core::option::Option<i32>,
3132        }
3133    }
3134}
3135#[derive(serde::Serialize, serde::Deserialize)]
3136#[allow(clippy::derive_partial_eq_without_eq)]
3137#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3138pub struct CDotaUserMsgGlobalLightColor {
3139    #[prost(uint32, optional, tag = "1")]
3140    pub color: ::core::option::Option<u32>,
3141    #[prost(float, optional, tag = "2")]
3142    pub duration: ::core::option::Option<f32>,
3143}
3144#[derive(serde::Serialize, serde::Deserialize)]
3145#[allow(clippy::derive_partial_eq_without_eq)]
3146#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3147pub struct CDotaUserMsgGlobalLightDirection {
3148    #[prost(message, optional, tag = "1")]
3149    pub direction: ::core::option::Option<CMsgVector>,
3150    #[prost(float, optional, tag = "2")]
3151    pub duration: ::core::option::Option<f32>,
3152}
3153#[derive(serde::Serialize, serde::Deserialize)]
3154#[allow(clippy::derive_partial_eq_without_eq)]
3155#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3156pub struct CDotaUserMsgLocationPing {
3157    #[prost(int32, optional, tag = "1", default = "-1")]
3158    pub player_id: ::core::option::Option<i32>,
3159    #[prost(message, optional, tag = "2")]
3160    pub location_ping: ::core::option::Option<CDotaMsgLocationPing>,
3161}
3162#[derive(serde::Serialize, serde::Deserialize)]
3163#[allow(clippy::derive_partial_eq_without_eq)]
3164#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3165pub struct CDotaUserMsgPingConfirmation {
3166    #[prost(int32, optional, tag = "1", default = "-1")]
3167    pub player_id_of_original_pinger: ::core::option::Option<i32>,
3168    #[prost(uint32, optional, tag = "2")]
3169    pub entity_index: ::core::option::Option<u32>,
3170    #[prost(uint32, optional, tag = "3")]
3171    pub icon_type: ::core::option::Option<u32>,
3172    #[prost(message, optional, tag = "4")]
3173    pub location: ::core::option::Option<CMsgVector>,
3174}
3175#[derive(serde::Serialize, serde::Deserialize)]
3176#[allow(clippy::derive_partial_eq_without_eq)]
3177#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3178pub struct CDotaUserMsgItemAlert {
3179    #[prost(int32, optional, tag = "1", default = "-1")]
3180    pub player_id: ::core::option::Option<i32>,
3181    #[prost(message, optional, tag = "2")]
3182    pub item_alert: ::core::option::Option<CDotaMsgItemAlert>,
3183}
3184#[derive(serde::Serialize, serde::Deserialize)]
3185#[allow(clippy::derive_partial_eq_without_eq)]
3186#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3187pub struct CDotaUserMsgEnemyItemAlert {
3188    #[prost(int32, optional, tag = "1", default = "-1")]
3189    pub player_id: ::core::option::Option<i32>,
3190    #[prost(int32, optional, tag = "2", default = "-1")]
3191    pub target_player_id: ::core::option::Option<i32>,
3192    #[prost(int32, optional, tag = "3", default = "-1")]
3193    pub item_ability_id: ::core::option::Option<i32>,
3194    #[prost(int32, optional, tag = "4", default = "-1")]
3195    pub rune_type: ::core::option::Option<i32>,
3196    #[prost(int32, optional, tag = "5")]
3197    pub entity_id: ::core::option::Option<i32>,
3198    #[prost(int32, optional, tag = "6", default = "-1")]
3199    pub item_level: ::core::option::Option<i32>,
3200    #[prost(int32, optional, tag = "7", default = "-1")]
3201    pub primary_charges: ::core::option::Option<i32>,
3202    #[prost(int32, optional, tag = "8", default = "-1")]
3203    pub secondary_charges: ::core::option::Option<i32>,
3204}
3205#[derive(serde::Serialize, serde::Deserialize)]
3206#[allow(clippy::derive_partial_eq_without_eq)]
3207#[derive(Clone, PartialEq, ::prost::Message)]
3208pub struct CDotaUserMsgModifierAlert {
3209    #[prost(int32, optional, tag = "1", default = "-1")]
3210    pub player_id: ::core::option::Option<i32>,
3211    #[prost(string, optional, tag = "2")]
3212    pub class_name: ::core::option::Option<::prost::alloc::string::String>,
3213    #[prost(uint32, optional, tag = "3")]
3214    pub stack_count: ::core::option::Option<u32>,
3215    #[prost(bool, optional, tag = "4")]
3216    pub is_debuff: ::core::option::Option<bool>,
3217    #[prost(int32, optional, tag = "5", default = "-1")]
3218    pub target_entindex: ::core::option::Option<i32>,
3219    #[prost(float, optional, tag = "6")]
3220    pub seconds_remaining: ::core::option::Option<f32>,
3221}
3222#[derive(serde::Serialize, serde::Deserialize)]
3223#[allow(clippy::derive_partial_eq_without_eq)]
3224#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3225pub struct CDotaUserMsgHpManaAlert {
3226    #[prost(int32, optional, tag = "1", default = "-1")]
3227    pub player_id: ::core::option::Option<i32>,
3228    #[prost(int32, optional, tag = "2", default = "-1")]
3229    pub target_entindex: ::core::option::Option<i32>,
3230    #[prost(bool, optional, tag = "3")]
3231    pub show_raw_values: ::core::option::Option<bool>,
3232}
3233#[derive(serde::Serialize, serde::Deserialize)]
3234#[allow(clippy::derive_partial_eq_without_eq)]
3235#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3236pub struct CDotaUserMsgNeutralCampAlert {
3237    #[prost(int32, optional, tag = "1", default = "-1")]
3238    pub player_id: ::core::option::Option<i32>,
3239    #[prost(int32, optional, tag = "2", default = "-1")]
3240    pub spawner_entindex: ::core::option::Option<i32>,
3241    #[prost(int32, optional, tag = "3", default = "-1")]
3242    pub unit_entindex: ::core::option::Option<i32>,
3243    #[prost(int32, optional, tag = "4")]
3244    pub stack_count: ::core::option::Option<i32>,
3245    #[prost(int32, optional, tag = "5")]
3246    pub camp_type: ::core::option::Option<i32>,
3247    #[prost(bool, optional, tag = "6")]
3248    pub stack_request: ::core::option::Option<bool>,
3249    #[prost(bool, optional, tag = "7")]
3250    pub stack_intention: ::core::option::Option<bool>,
3251}
3252#[derive(serde::Serialize, serde::Deserialize)]
3253#[allow(clippy::derive_partial_eq_without_eq)]
3254#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3255pub struct CDotaUserMsgGlyphAlert {
3256    #[prost(int32, optional, tag = "1", default = "-1")]
3257    pub player_id: ::core::option::Option<i32>,
3258    #[prost(bool, optional, tag = "2")]
3259    pub negative: ::core::option::Option<bool>,
3260}
3261#[derive(serde::Serialize, serde::Deserialize)]
3262#[allow(clippy::derive_partial_eq_without_eq)]
3263#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3264pub struct CDotaUserMsgRadarAlert {
3265    #[prost(int32, optional, tag = "1", default = "-1")]
3266    pub player_id: ::core::option::Option<i32>,
3267    #[prost(bool, optional, tag = "2")]
3268    pub negative: ::core::option::Option<bool>,
3269}
3270#[derive(serde::Serialize, serde::Deserialize)]
3271#[allow(clippy::derive_partial_eq_without_eq)]
3272#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3273pub struct CDotaUserMsgWillPurchaseAlert {
3274    #[prost(int32, optional, tag = "1", default = "-1")]
3275    pub item_ability_id: ::core::option::Option<i32>,
3276    #[prost(int32, optional, tag = "2", default = "-1")]
3277    pub player_id: ::core::option::Option<i32>,
3278    #[prost(uint32, optional, tag = "3")]
3279    pub gold_remaining: ::core::option::Option<u32>,
3280    #[prost(int32, optional, tag = "4", default = "-1")]
3281    pub suggestion_player_id: ::core::option::Option<i32>,
3282}
3283#[derive(serde::Serialize, serde::Deserialize)]
3284#[allow(clippy::derive_partial_eq_without_eq)]
3285#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3286pub struct CDotaUserMsgEmptyTeleportAlert {
3287    #[prost(int32, optional, tag = "1", default = "-1")]
3288    pub source_player_id: ::core::option::Option<i32>,
3289    #[prost(int32, optional, tag = "2", default = "-1")]
3290    pub target_player_id: ::core::option::Option<i32>,
3291    #[prost(int32, optional, tag = "3")]
3292    pub cooldown_seconds: ::core::option::Option<i32>,
3293}
3294#[derive(serde::Serialize, serde::Deserialize)]
3295#[allow(clippy::derive_partial_eq_without_eq)]
3296#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3297pub struct CDotaUserMsgMarsArenaOfBloodAttack {
3298    #[prost(uint32, optional, tag = "1", default = "16777215")]
3299    pub source_ehandle: ::core::option::Option<u32>,
3300    #[prost(uint32, optional, tag = "2", default = "16777215")]
3301    pub target_ehandle: ::core::option::Option<u32>,
3302    #[prost(int32, optional, tag = "3")]
3303    pub warrior_index: ::core::option::Option<i32>,
3304}
3305#[derive(serde::Serialize, serde::Deserialize)]
3306#[allow(clippy::derive_partial_eq_without_eq)]
3307#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3308pub struct CDotaEntityMsgInvokerSpellCast {
3309    #[prost(message, optional, tag = "1")]
3310    pub entity_msg: ::core::option::Option<CEntityMsg>,
3311    #[prost(int32, optional, tag = "2")]
3312    pub cast_activity: ::core::option::Option<i32>,
3313}
3314#[derive(serde::Serialize, serde::Deserialize)]
3315#[allow(clippy::derive_partial_eq_without_eq)]
3316#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3317pub struct CDotaUserMsgBuyBackStateAlert {
3318    #[prost(int32, optional, tag = "1", default = "-1")]
3319    pub player_id: ::core::option::Option<i32>,
3320}
3321#[derive(serde::Serialize, serde::Deserialize)]
3322#[allow(clippy::derive_partial_eq_without_eq)]
3323#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3324pub struct CDotaUserMsgQuickBuyAlert {
3325    #[prost(int32, optional, tag = "1", default = "-1")]
3326    pub player_id: ::core::option::Option<i32>,
3327    #[prost(int32, optional, tag = "2", default = "-1")]
3328    pub item_ability_id: ::core::option::Option<i32>,
3329    #[prost(int32, optional, tag = "3")]
3330    pub gold_cost: ::core::option::Option<i32>,
3331    #[prost(int32, optional, tag = "4")]
3332    pub item_cooldown_seconds: ::core::option::Option<i32>,
3333    #[prost(bool, optional, tag = "5")]
3334    pub show_buyback: ::core::option::Option<bool>,
3335}
3336#[derive(serde::Serialize, serde::Deserialize)]
3337#[allow(clippy::derive_partial_eq_without_eq)]
3338#[derive(Clone, PartialEq, ::prost::Message)]
3339pub struct CDotaUserMsgCourierKilledAlert {
3340    #[prost(uint32, optional, tag = "1")]
3341    pub team: ::core::option::Option<u32>,
3342    #[prost(uint32, optional, tag = "2")]
3343    pub gold_value: ::core::option::Option<u32>,
3344    #[prost(uint32, optional, tag = "3", default = "16777215")]
3345    pub entity_handle: ::core::option::Option<u32>,
3346    #[prost(int32, optional, tag = "4")]
3347    pub timestamp: ::core::option::Option<i32>,
3348    #[prost(message, repeated, tag = "5")]
3349    pub lost_items: ::prost::alloc::vec::Vec<cdota_user_msg_courier_killed_alert::LostItem>,
3350    #[prost(int32, optional, tag = "6", default = "-1")]
3351    pub killer_player_id: ::core::option::Option<i32>,
3352    #[prost(int32, optional, tag = "7", default = "-1")]
3353    pub owning_player_id: ::core::option::Option<i32>,
3354}
3355/// Nested message and enum types in `CDOTAUserMsg_CourierKilledAlert`.
3356pub mod cdota_user_msg_courier_killed_alert {
3357    #[derive(serde::Serialize, serde::Deserialize)]
3358    #[allow(clippy::derive_partial_eq_without_eq)]
3359    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3360    pub struct LostItem {
3361        #[prost(int32, optional, tag = "1", default = "-1")]
3362        pub item_ability_id: ::core::option::Option<i32>,
3363        #[prost(uint32, optional, tag = "2")]
3364        pub quantity: ::core::option::Option<u32>,
3365    }
3366}
3367#[derive(serde::Serialize, serde::Deserialize)]
3368#[allow(clippy::derive_partial_eq_without_eq)]
3369#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3370pub struct CDotaUserMsgMinimapEvent {
3371    #[prost(int32, optional, tag = "1")]
3372    pub event_type: ::core::option::Option<i32>,
3373    #[prost(uint32, optional, tag = "2", default = "16777215")]
3374    pub entity_handle: ::core::option::Option<u32>,
3375    #[prost(int32, optional, tag = "3")]
3376    pub x: ::core::option::Option<i32>,
3377    #[prost(int32, optional, tag = "4")]
3378    pub y: ::core::option::Option<i32>,
3379    #[prost(int32, optional, tag = "5")]
3380    pub duration: ::core::option::Option<i32>,
3381    #[prost(uint32, optional, tag = "6", default = "16777215")]
3382    pub target_entity_handle: ::core::option::Option<u32>,
3383}
3384#[derive(serde::Serialize, serde::Deserialize)]
3385#[allow(clippy::derive_partial_eq_without_eq)]
3386#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3387pub struct CDotaUserMsgMapLine {
3388    #[prost(int32, optional, tag = "1", default = "-1")]
3389    pub player_id: ::core::option::Option<i32>,
3390    #[prost(message, optional, tag = "2")]
3391    pub mapline: ::core::option::Option<CDotaMsgMapLine>,
3392}
3393#[derive(serde::Serialize, serde::Deserialize)]
3394#[allow(clippy::derive_partial_eq_without_eq)]
3395#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3396pub struct CDotaUserMsgMinimapDebugPoint {
3397    #[prost(message, optional, tag = "1")]
3398    pub location: ::core::option::Option<CMsgVector>,
3399    #[prost(uint32, optional, tag = "2")]
3400    pub color: ::core::option::Option<u32>,
3401    #[prost(int32, optional, tag = "3")]
3402    pub size: ::core::option::Option<i32>,
3403    #[prost(float, optional, tag = "4")]
3404    pub duration: ::core::option::Option<f32>,
3405    #[prost(int32, optional, tag = "5")]
3406    pub index: ::core::option::Option<i32>,
3407}
3408#[derive(serde::Serialize, serde::Deserialize)]
3409#[allow(clippy::derive_partial_eq_without_eq)]
3410#[derive(Clone, PartialEq, ::prost::Message)]
3411pub struct CDotaUserMsgCreateLinearProjectile {
3412    #[prost(message, optional, tag = "1")]
3413    pub origin: ::core::option::Option<CMsgVector>,
3414    #[prost(message, optional, tag = "2")]
3415    pub velocity: ::core::option::Option<CMsgVector2D>,
3416    #[prost(int32, optional, tag = "4", default = "-1")]
3417    pub entindex: ::core::option::Option<i32>,
3418    #[prost(uint64, optional, tag = "5")]
3419    pub particle_index: ::core::option::Option<u64>,
3420    #[prost(int32, optional, tag = "6")]
3421    pub handle: ::core::option::Option<i32>,
3422    #[prost(message, optional, tag = "7")]
3423    pub acceleration: ::core::option::Option<CMsgVector2D>,
3424    #[prost(float, optional, tag = "8")]
3425    pub max_speed: ::core::option::Option<f32>,
3426    #[prost(float, optional, tag = "9")]
3427    pub fow_radius: ::core::option::Option<f32>,
3428    #[prost(bool, optional, tag = "10")]
3429    pub sticky_fow_reveal: ::core::option::Option<bool>,
3430    #[prost(float, optional, tag = "11")]
3431    pub distance: ::core::option::Option<f32>,
3432    #[prost(fixed32, optional, tag = "12")]
3433    pub colorgemcolor: ::core::option::Option<u32>,
3434    #[prost(message, repeated, tag = "13")]
3435    pub particle_cp_data: ::prost::alloc::vec::Vec<CDotaUserMsgProjectileParticleCpData>,
3436}
3437#[derive(serde::Serialize, serde::Deserialize)]
3438#[allow(clippy::derive_partial_eq_without_eq)]
3439#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3440pub struct CDotaUserMsgDestroyLinearProjectile {
3441    #[prost(int32, optional, tag = "1")]
3442    pub handle: ::core::option::Option<i32>,
3443}
3444#[derive(serde::Serialize, serde::Deserialize)]
3445#[allow(clippy::derive_partial_eq_without_eq)]
3446#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3447pub struct CDotaUserMsgDodgeTrackingProjectiles {
3448    #[prost(int32, required, tag = "1", default = "-1")]
3449    pub entindex: i32,
3450    #[prost(bool, optional, tag = "2")]
3451    pub attacks_only: ::core::option::Option<bool>,
3452}
3453#[derive(serde::Serialize, serde::Deserialize)]
3454#[allow(clippy::derive_partial_eq_without_eq)]
3455#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3456pub struct CDotaUserMsgSpectatorPlayerClick {
3457    #[prost(int32, required, tag = "1", default = "-1")]
3458    pub entindex: i32,
3459    #[prost(int32, optional, tag = "2")]
3460    pub order_type: ::core::option::Option<i32>,
3461    #[prost(int32, optional, tag = "3", default = "0")]
3462    pub target_index: ::core::option::Option<i32>,
3463}
3464#[derive(serde::Serialize, serde::Deserialize)]
3465#[allow(clippy::derive_partial_eq_without_eq)]
3466#[derive(Clone, PartialEq, ::prost::Message)]
3467pub struct CDotaUserMsgSpectatorPlayerUnitOrders {
3468    #[prost(int32, optional, tag = "1", default = "-1")]
3469    pub entindex: ::core::option::Option<i32>,
3470    #[prost(int32, optional, tag = "2")]
3471    pub order_type: ::core::option::Option<i32>,
3472    #[prost(int32, repeated, packed = "false", tag = "3")]
3473    pub units: ::prost::alloc::vec::Vec<i32>,
3474    #[prost(int32, optional, tag = "4", default = "0")]
3475    pub target_index: ::core::option::Option<i32>,
3476    #[prost(int32, optional, tag = "5", default = "-1")]
3477    pub ability_id: ::core::option::Option<i32>,
3478    #[prost(message, optional, tag = "6")]
3479    pub position: ::core::option::Option<CMsgVector>,
3480    #[prost(bool, optional, tag = "7")]
3481    pub queue: ::core::option::Option<bool>,
3482    #[prost(int32, optional, tag = "8")]
3483    pub sequence_number: ::core::option::Option<i32>,
3484    #[prost(uint32, optional, tag = "9")]
3485    pub flags: ::core::option::Option<u32>,
3486}
3487#[derive(serde::Serialize, serde::Deserialize)]
3488#[allow(clippy::derive_partial_eq_without_eq)]
3489#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3490pub struct CDotaUserMsgNevermoreRequiem {
3491    #[prost(uint32, optional, tag = "1", default = "16777215")]
3492    pub entity_handle: ::core::option::Option<u32>,
3493    #[prost(int32, optional, tag = "2")]
3494    pub lines: ::core::option::Option<i32>,
3495    #[prost(message, optional, tag = "3")]
3496    pub origin: ::core::option::Option<CMsgVector>,
3497    #[prost(bool, optional, tag = "4")]
3498    pub reverse: ::core::option::Option<bool>,
3499}
3500#[derive(serde::Serialize, serde::Deserialize)]
3501#[allow(clippy::derive_partial_eq_without_eq)]
3502#[derive(Clone, PartialEq, ::prost::Message)]
3503pub struct CDotaUserMsgInvalidCommand {
3504    #[prost(string, optional, tag = "1")]
3505    pub message: ::core::option::Option<::prost::alloc::string::String>,
3506    #[prost(int32, optional, tag = "2")]
3507    pub sequence_number: ::core::option::Option<i32>,
3508}
3509#[derive(serde::Serialize, serde::Deserialize)]
3510#[allow(clippy::derive_partial_eq_without_eq)]
3511#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3512pub struct CDotaUserMsgHudError {
3513    #[prost(int32, optional, tag = "1")]
3514    pub order_id: ::core::option::Option<i32>,
3515    #[prost(int32, optional, tag = "2")]
3516    pub sequence_number: ::core::option::Option<i32>,
3517}
3518#[derive(serde::Serialize, serde::Deserialize)]
3519#[allow(clippy::derive_partial_eq_without_eq)]
3520#[derive(Clone, PartialEq, ::prost::Message)]
3521pub struct CDotaUserMsgSharedCooldown {
3522    #[prost(int32, optional, tag = "1", default = "-1")]
3523    pub entindex: ::core::option::Option<i32>,
3524    #[prost(string, optional, tag = "2")]
3525    pub name: ::core::option::Option<::prost::alloc::string::String>,
3526    #[prost(float, optional, tag = "3")]
3527    pub cooldown: ::core::option::Option<f32>,
3528    #[prost(int32, optional, tag = "4")]
3529    pub name_index: ::core::option::Option<i32>,
3530}
3531#[derive(serde::Serialize, serde::Deserialize)]
3532#[allow(clippy::derive_partial_eq_without_eq)]
3533#[derive(Clone, PartialEq, ::prost::Message)]
3534pub struct CDotaUserMsgSetNextAutobuyItem {
3535    #[prost(string, optional, tag = "1")]
3536    pub name: ::core::option::Option<::prost::alloc::string::String>,
3537}
3538#[derive(serde::Serialize, serde::Deserialize)]
3539#[allow(clippy::derive_partial_eq_without_eq)]
3540#[derive(Clone, PartialEq, ::prost::Message)]
3541pub struct CDotaUserMsgHalloweenDrops {
3542    #[prost(uint32, repeated, packed = "false", tag = "1")]
3543    pub item_defs: ::prost::alloc::vec::Vec<u32>,
3544    #[prost(int32, repeated, packed = "false", tag = "2")]
3545    pub player_ids: ::prost::alloc::vec::Vec<i32>,
3546    #[prost(uint32, optional, tag = "3")]
3547    pub prize_list: ::core::option::Option<u32>,
3548}
3549#[derive(serde::Serialize, serde::Deserialize)]
3550#[allow(clippy::derive_partial_eq_without_eq)]
3551#[derive(Clone, PartialEq, ::prost::Message)]
3552pub struct CDotaUserMsgPredictionResult {
3553    #[prost(uint32, optional, tag = "1")]
3554    pub account_id: ::core::option::Option<u32>,
3555    #[prost(uint64, optional, tag = "2")]
3556    pub match_id: ::core::option::Option<u64>,
3557    #[prost(bool, optional, tag = "3")]
3558    pub correct: ::core::option::Option<bool>,
3559    #[prost(message, repeated, tag = "4")]
3560    pub predictions: ::prost::alloc::vec::Vec<cdota_user_msg_prediction_result::Prediction>,
3561}
3562/// Nested message and enum types in `CDOTAUserMsg_PredictionResult`.
3563pub mod cdota_user_msg_prediction_result {
3564    #[derive(serde::Serialize, serde::Deserialize)]
3565    #[allow(clippy::derive_partial_eq_without_eq)]
3566    #[derive(Clone, PartialEq, ::prost::Message)]
3567    pub struct Prediction {
3568        #[prost(uint32, optional, tag = "1")]
3569        pub item_def: ::core::option::Option<u32>,
3570        #[prost(uint32, optional, tag = "2")]
3571        pub num_correct: ::core::option::Option<u32>,
3572        #[prost(uint32, optional, tag = "3")]
3573        pub num_fails: ::core::option::Option<u32>,
3574        #[prost(
3575            enumeration = "prediction::EResult",
3576            optional,
3577            tag = "4",
3578            default = "KEResultItemGranted"
3579        )]
3580        pub result: ::core::option::Option<i32>,
3581        #[prost(uint32, repeated, packed = "false", tag = "6")]
3582        pub granted_item_defs: ::prost::alloc::vec::Vec<u32>,
3583    }
3584    /// Nested message and enum types in `Prediction`.
3585    pub mod prediction {
3586        #[derive(
3587            serde::Serialize,
3588            serde::Deserialize,
3589            Clone,
3590            Copy,
3591            Debug,
3592            PartialEq,
3593            Eq,
3594            Hash,
3595            PartialOrd,
3596            Ord,
3597            ::prost::Enumeration,
3598        )]
3599        #[repr(i32)]
3600        pub enum EResult {
3601            KEResultItemGranted = 1,
3602            KEResultDestroyed = 2,
3603        }
3604    }
3605}
3606#[derive(serde::Serialize, serde::Deserialize)]
3607#[allow(clippy::derive_partial_eq_without_eq)]
3608#[derive(Clone, PartialEq, ::prost::Message)]
3609pub struct CDotaResponseQuerySerialized {
3610    #[prost(message, repeated, tag = "1")]
3611    pub facts: ::prost::alloc::vec::Vec<cdota_response_query_serialized::Fact>,
3612}
3613/// Nested message and enum types in `CDOTAResponseQuerySerialized`.
3614pub mod cdota_response_query_serialized {
3615    #[derive(serde::Serialize, serde::Deserialize)]
3616    #[allow(clippy::derive_partial_eq_without_eq)]
3617    #[derive(Clone, PartialEq, ::prost::Message)]
3618    pub struct Fact {
3619        #[prost(int32, required, tag = "1")]
3620        pub key: i32,
3621        #[prost(
3622            enumeration = "fact::ValueType",
3623            required,
3624            tag = "2",
3625            default = "Numeric"
3626        )]
3627        pub valtype: i32,
3628        #[prost(float, optional, tag = "3")]
3629        pub val_numeric: ::core::option::Option<f32>,
3630        #[prost(string, optional, tag = "4")]
3631        pub val_string: ::core::option::Option<::prost::alloc::string::String>,
3632        #[prost(int32, optional, tag = "5")]
3633        pub val_stringtable_index: ::core::option::Option<i32>,
3634        #[prost(sint32, optional, tag = "6")]
3635        pub val_int_numeric: ::core::option::Option<i32>,
3636    }
3637    /// Nested message and enum types in `Fact`.
3638    pub mod fact {
3639        #[derive(
3640            serde::Serialize,
3641            serde::Deserialize,
3642            Clone,
3643            Copy,
3644            Debug,
3645            PartialEq,
3646            Eq,
3647            Hash,
3648            PartialOrd,
3649            Ord,
3650            ::prost::Enumeration,
3651        )]
3652        #[repr(i32)]
3653        pub enum ValueType {
3654            Numeric = 1,
3655            String = 2,
3656            StringtableIndex = 3,
3657            IntNumeric = 4,
3658        }
3659    }
3660}
3661#[derive(serde::Serialize, serde::Deserialize)]
3662#[allow(clippy::derive_partial_eq_without_eq)]
3663#[derive(Clone, PartialEq, ::prost::Message)]
3664pub struct CDotaSpeechMatchOnClient {
3665    #[prost(int32, optional, tag = "1")]
3666    pub speech_concept: ::core::option::Option<i32>,
3667    #[prost(int32, optional, tag = "2")]
3668    pub recipient_type: ::core::option::Option<i32>,
3669    #[prost(message, optional, tag = "3")]
3670    pub responsequery: ::core::option::Option<CDotaResponseQuerySerialized>,
3671    #[prost(sfixed32, optional, tag = "4", default = "0")]
3672    pub randomseed: ::core::option::Option<i32>,
3673}
3674#[derive(serde::Serialize, serde::Deserialize)]
3675#[allow(clippy::derive_partial_eq_without_eq)]
3676#[derive(Clone, PartialEq, ::prost::Message)]
3677pub struct CDotaUserMsgUnitEvent {
3678    #[prost(
3679        enumeration = "EDotaEntityMessages",
3680        required,
3681        tag = "1",
3682        default = "DotaUnitSpeech"
3683    )]
3684    pub msg_type: i32,
3685    #[prost(int32, required, tag = "2")]
3686    pub entity_index: i32,
3687    #[prost(message, optional, tag = "3")]
3688    pub speech: ::core::option::Option<cdota_user_msg_unit_event::Speech>,
3689    #[prost(message, optional, tag = "4")]
3690    pub speech_mute: ::core::option::Option<cdota_user_msg_unit_event::SpeechMute>,
3691    #[prost(message, optional, tag = "5")]
3692    pub add_gesture: ::core::option::Option<cdota_user_msg_unit_event::AddGesture>,
3693    #[prost(message, optional, tag = "6")]
3694    pub remove_gesture: ::core::option::Option<cdota_user_msg_unit_event::RemoveGesture>,
3695    #[prost(message, optional, tag = "7")]
3696    pub blood_impact: ::core::option::Option<cdota_user_msg_unit_event::BloodImpact>,
3697    #[prost(message, optional, tag = "8")]
3698    pub fade_gesture: ::core::option::Option<cdota_user_msg_unit_event::FadeGesture>,
3699    #[prost(message, optional, tag = "9")]
3700    pub speech_match_on_client: ::core::option::Option<CDotaSpeechMatchOnClient>,
3701}
3702/// Nested message and enum types in `CDOTAUserMsg_UnitEvent`.
3703pub mod cdota_user_msg_unit_event {
3704    #[derive(serde::Serialize, serde::Deserialize)]
3705    #[allow(clippy::derive_partial_eq_without_eq)]
3706    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3707    pub struct Interval {
3708        #[prost(float, optional, tag = "1")]
3709        pub start: ::core::option::Option<f32>,
3710        #[prost(float, optional, tag = "2")]
3711        pub range: ::core::option::Option<f32>,
3712    }
3713    #[derive(serde::Serialize, serde::Deserialize)]
3714    #[allow(clippy::derive_partial_eq_without_eq)]
3715    #[derive(Clone, PartialEq, ::prost::Message)]
3716    pub struct Speech {
3717        #[prost(int32, optional, tag = "1")]
3718        pub speech_concept: ::core::option::Option<i32>,
3719        #[prost(string, optional, tag = "2")]
3720        pub response: ::core::option::Option<::prost::alloc::string::String>,
3721        #[prost(int32, optional, tag = "3")]
3722        pub recipient_type: ::core::option::Option<i32>,
3723        #[prost(bool, optional, tag = "5", default = "false")]
3724        pub muteable: ::core::option::Option<bool>,
3725        #[prost(message, optional, tag = "6")]
3726        pub predelay: ::core::option::Option<Interval>,
3727        #[prost(uint32, optional, tag = "7")]
3728        pub flags: ::core::option::Option<u32>,
3729    }
3730    #[derive(serde::Serialize, serde::Deserialize)]
3731    #[allow(clippy::derive_partial_eq_without_eq)]
3732    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3733    pub struct SpeechMute {
3734        #[prost(float, optional, tag = "1", default = "0.5")]
3735        pub delay: ::core::option::Option<f32>,
3736    }
3737    #[derive(serde::Serialize, serde::Deserialize)]
3738    #[allow(clippy::derive_partial_eq_without_eq)]
3739    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3740    pub struct AddGesture {
3741        #[prost(int32, optional, tag = "1")]
3742        pub activity: ::core::option::Option<i32>,
3743        #[prost(int32, optional, tag = "2")]
3744        pub slot: ::core::option::Option<i32>,
3745        #[prost(float, optional, tag = "3", default = "0")]
3746        pub fade_in: ::core::option::Option<f32>,
3747        #[prost(float, optional, tag = "4", default = "0.1")]
3748        pub fade_out: ::core::option::Option<f32>,
3749        #[prost(float, optional, tag = "5", default = "1")]
3750        pub playback_rate: ::core::option::Option<f32>,
3751        #[prost(int32, optional, tag = "6")]
3752        pub sequence_variant: ::core::option::Option<i32>,
3753    }
3754    #[derive(serde::Serialize, serde::Deserialize)]
3755    #[allow(clippy::derive_partial_eq_without_eq)]
3756    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3757    pub struct RemoveGesture {
3758        #[prost(int32, optional, tag = "1")]
3759        pub activity: ::core::option::Option<i32>,
3760    }
3761    #[derive(serde::Serialize, serde::Deserialize)]
3762    #[allow(clippy::derive_partial_eq_without_eq)]
3763    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3764    pub struct BloodImpact {
3765        #[prost(int32, optional, tag = "1")]
3766        pub scale: ::core::option::Option<i32>,
3767        #[prost(int32, optional, tag = "2")]
3768        pub x_normal: ::core::option::Option<i32>,
3769        #[prost(int32, optional, tag = "3")]
3770        pub y_normal: ::core::option::Option<i32>,
3771    }
3772    #[derive(serde::Serialize, serde::Deserialize)]
3773    #[allow(clippy::derive_partial_eq_without_eq)]
3774    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3775    pub struct FadeGesture {
3776        #[prost(int32, optional, tag = "1")]
3777        pub activity: ::core::option::Option<i32>,
3778    }
3779}
3780#[derive(serde::Serialize, serde::Deserialize)]
3781#[allow(clippy::derive_partial_eq_without_eq)]
3782#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3783pub struct CDotaUserMsgItemPurchased {
3784    #[prost(int32, optional, tag = "1", default = "-1")]
3785    pub item_ability_id: ::core::option::Option<i32>,
3786}
3787#[derive(serde::Serialize, serde::Deserialize)]
3788#[allow(clippy::derive_partial_eq_without_eq)]
3789#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3790pub struct CDotaUserMsgItemSold {
3791    #[prost(int32, optional, tag = "1", default = "-1")]
3792    pub item_ability_id: ::core::option::Option<i32>,
3793}
3794#[derive(serde::Serialize, serde::Deserialize)]
3795#[allow(clippy::derive_partial_eq_without_eq)]
3796#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3797pub struct CDotaUserMsgItemFound {
3798    #[prost(int32, optional, tag = "1", default = "-1")]
3799    pub player: ::core::option::Option<i32>,
3800    #[prost(int32, optional, tag = "2")]
3801    pub quality: ::core::option::Option<i32>,
3802    #[prost(int32, optional, tag = "3")]
3803    pub rarity: ::core::option::Option<i32>,
3804    #[prost(int32, optional, tag = "4")]
3805    pub method: ::core::option::Option<i32>,
3806    #[prost(uint32, optional, tag = "5")]
3807    pub itemdef: ::core::option::Option<u32>,
3808}
3809#[derive(serde::Serialize, serde::Deserialize)]
3810#[allow(clippy::derive_partial_eq_without_eq)]
3811#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3812pub struct CDotaUserMsgOverheadEvent {
3813    #[prost(
3814        enumeration = "DotaOverheadAlert",
3815        required,
3816        tag = "1",
3817        default = "OverheadAlertGold"
3818    )]
3819    pub message_type: i32,
3820    #[prost(int32, optional, tag = "2")]
3821    pub value: ::core::option::Option<i32>,
3822    #[prost(int32, optional, tag = "3", default = "-1")]
3823    pub target_player_entindex: ::core::option::Option<i32>,
3824    #[prost(int32, optional, tag = "4", default = "-1")]
3825    pub target_entindex: ::core::option::Option<i32>,
3826    #[prost(int32, optional, tag = "5", default = "-1")]
3827    pub source_player_entindex: ::core::option::Option<i32>,
3828}
3829#[derive(serde::Serialize, serde::Deserialize)]
3830#[allow(clippy::derive_partial_eq_without_eq)]
3831#[derive(Clone, PartialEq, ::prost::Message)]
3832pub struct CDotaUserMsgTutorialTipInfo {
3833    #[prost(string, optional, tag = "1")]
3834    pub name: ::core::option::Option<::prost::alloc::string::String>,
3835    #[prost(int32, optional, tag = "2")]
3836    pub progress: ::core::option::Option<i32>,
3837}
3838#[derive(serde::Serialize, serde::Deserialize)]
3839#[allow(clippy::derive_partial_eq_without_eq)]
3840#[derive(Clone, PartialEq, ::prost::Message)]
3841pub struct CDotaUserMsgTutorialFinish {
3842    #[prost(string, optional, tag = "1")]
3843    pub heading: ::core::option::Option<::prost::alloc::string::String>,
3844    #[prost(string, optional, tag = "2")]
3845    pub emblem: ::core::option::Option<::prost::alloc::string::String>,
3846    #[prost(string, optional, tag = "3")]
3847    pub body: ::core::option::Option<::prost::alloc::string::String>,
3848    #[prost(bool, optional, tag = "4")]
3849    pub success: ::core::option::Option<bool>,
3850}
3851#[derive(serde::Serialize, serde::Deserialize)]
3852#[allow(clippy::derive_partial_eq_without_eq)]
3853#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3854pub struct CDotaUserMsgTutorialMinimapPosition {}
3855#[derive(serde::Serialize, serde::Deserialize)]
3856#[allow(clippy::derive_partial_eq_without_eq)]
3857#[derive(Clone, PartialEq, ::prost::Message)]
3858pub struct CDotaUserMsgSendGenericToolTip {
3859    #[prost(string, optional, tag = "1")]
3860    pub title: ::core::option::Option<::prost::alloc::string::String>,
3861    #[prost(string, optional, tag = "2")]
3862    pub text: ::core::option::Option<::prost::alloc::string::String>,
3863    #[prost(int32, optional, tag = "3")]
3864    pub entindex: ::core::option::Option<i32>,
3865    #[prost(bool, optional, tag = "4")]
3866    pub close: ::core::option::Option<bool>,
3867}
3868#[derive(serde::Serialize, serde::Deserialize)]
3869#[allow(clippy::derive_partial_eq_without_eq)]
3870#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3871pub struct CDotaUserMsgWorldLine {
3872    #[prost(int32, optional, tag = "1", default = "-1")]
3873    pub player_id: ::core::option::Option<i32>,
3874    #[prost(message, optional, tag = "2")]
3875    pub worldline: ::core::option::Option<CDotaMsgWorldLine>,
3876}
3877#[derive(serde::Serialize, serde::Deserialize)]
3878#[allow(clippy::derive_partial_eq_without_eq)]
3879#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3880pub struct CDotaUserMsgChatWheel {
3881    #[prost(uint32, optional, tag = "1", default = "4294967295")]
3882    pub chat_message_id: ::core::option::Option<u32>,
3883    #[prost(int32, optional, tag = "2", default = "-1")]
3884    pub player_id: ::core::option::Option<i32>,
3885    #[prost(uint32, optional, tag = "3")]
3886    pub account_id: ::core::option::Option<u32>,
3887    #[prost(uint32, optional, tag = "4")]
3888    pub param_hero_id: ::core::option::Option<u32>,
3889    #[prost(uint32, optional, tag = "5")]
3890    pub emoticon_id: ::core::option::Option<u32>,
3891}
3892#[derive(serde::Serialize, serde::Deserialize)]
3893#[allow(clippy::derive_partial_eq_without_eq)]
3894#[derive(Clone, PartialEq, ::prost::Message)]
3895pub struct CDotaUserMsgReceivedXmasGift {
3896    #[prost(int32, optional, tag = "1", default = "-1")]
3897    pub player_id: ::core::option::Option<i32>,
3898    #[prost(string, optional, tag = "2")]
3899    pub item_name: ::core::option::Option<::prost::alloc::string::String>,
3900    #[prost(int32, optional, tag = "3")]
3901    pub inventory_slot: ::core::option::Option<i32>,
3902}
3903#[derive(serde::Serialize, serde::Deserialize)]
3904#[allow(clippy::derive_partial_eq_without_eq)]
3905#[derive(Clone, PartialEq, ::prost::Message)]
3906pub struct CDotaUserMsgShowSurvey {
3907    #[prost(int32, optional, tag = "1")]
3908    pub survey_id: ::core::option::Option<i32>,
3909    #[prost(uint64, optional, tag = "2")]
3910    pub match_id: ::core::option::Option<u64>,
3911    #[prost(string, optional, tag = "3")]
3912    pub response_style: ::core::option::Option<::prost::alloc::string::String>,
3913    #[prost(uint32, optional, tag = "4")]
3914    pub teammate_hero_id: ::core::option::Option<u32>,
3915    #[prost(string, optional, tag = "5")]
3916    pub teammate_name: ::core::option::Option<::prost::alloc::string::String>,
3917    #[prost(uint32, optional, tag = "6")]
3918    pub teammate_account_id: ::core::option::Option<u32>,
3919}
3920#[derive(serde::Serialize, serde::Deserialize)]
3921#[allow(clippy::derive_partial_eq_without_eq)]
3922#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3923pub struct CDotaUserMsgUpdateSharedContent {
3924    #[prost(int32, optional, tag = "1")]
3925    pub slot_type: ::core::option::Option<i32>,
3926}
3927#[derive(serde::Serialize, serde::Deserialize)]
3928#[allow(clippy::derive_partial_eq_without_eq)]
3929#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3930pub struct CDotaUserMsgTutorialRequestExp {}
3931#[derive(serde::Serialize, serde::Deserialize)]
3932#[allow(clippy::derive_partial_eq_without_eq)]
3933#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3934pub struct CDotaUserMsgTutorialFade {
3935    #[prost(int32, optional, tag = "1")]
3936    pub tgt_alpha: ::core::option::Option<i32>,
3937}
3938#[derive(serde::Serialize, serde::Deserialize)]
3939#[allow(clippy::derive_partial_eq_without_eq)]
3940#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3941pub struct CDotaUserMsgTutorialPingMinimap {
3942    #[prost(int32, optional, tag = "1", default = "-1")]
3943    pub player_id: ::core::option::Option<i32>,
3944    #[prost(float, optional, tag = "2")]
3945    pub pos_x: ::core::option::Option<f32>,
3946    #[prost(float, optional, tag = "3")]
3947    pub pos_y: ::core::option::Option<f32>,
3948    #[prost(float, optional, tag = "4")]
3949    pub pos_z: ::core::option::Option<f32>,
3950    #[prost(int32, optional, tag = "5")]
3951    pub entity_index: ::core::option::Option<i32>,
3952}
3953#[derive(serde::Serialize, serde::Deserialize)]
3954#[allow(clippy::derive_partial_eq_without_eq)]
3955#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3956pub struct CDotaUserMsgGamerulesStateChanged {
3957    #[prost(uint32, optional, tag = "1")]
3958    pub state: ::core::option::Option<u32>,
3959}
3960#[derive(serde::Serialize, serde::Deserialize)]
3961#[allow(clippy::derive_partial_eq_without_eq)]
3962#[derive(Clone, PartialEq, ::prost::Message)]
3963pub struct CDotaUserMsgAddQuestLogEntry {
3964    #[prost(string, optional, tag = "1")]
3965    pub npc_name: ::core::option::Option<::prost::alloc::string::String>,
3966    #[prost(string, optional, tag = "2")]
3967    pub npc_dialog: ::core::option::Option<::prost::alloc::string::String>,
3968}
3969#[derive(serde::Serialize, serde::Deserialize)]
3970#[allow(clippy::derive_partial_eq_without_eq)]
3971#[derive(Clone, PartialEq, ::prost::Message)]
3972pub struct CDotaUserMsgSendStatPopup {
3973    #[prost(int32, optional, tag = "1", default = "-1")]
3974    pub player_id: ::core::option::Option<i32>,
3975    #[prost(message, optional, tag = "2")]
3976    pub statpopup: ::core::option::Option<CDotaMsgSendStatPopup>,
3977}
3978#[derive(serde::Serialize, serde::Deserialize)]
3979#[allow(clippy::derive_partial_eq_without_eq)]
3980#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3981pub struct CDotaUserMsgDismissAllStatPopups {
3982    #[prost(message, optional, tag = "1")]
3983    pub dismissallmsg: ::core::option::Option<CDotaMsgDismissAllStatPopups>,
3984}
3985#[derive(serde::Serialize, serde::Deserialize)]
3986#[allow(clippy::derive_partial_eq_without_eq)]
3987#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3988pub struct CDotaUserMsgSendRoshanSpectatorPhase {
3989    #[prost(
3990        enumeration = "DotaRoshanPhase",
3991        optional,
3992        tag = "1",
3993        default = "KSrspRoshanAlive"
3994    )]
3995    pub phase: ::core::option::Option<i32>,
3996    #[prost(int32, optional, tag = "2")]
3997    pub phase_start_time: ::core::option::Option<i32>,
3998    #[prost(int32, optional, tag = "3")]
3999    pub phase_length: ::core::option::Option<i32>,
4000}
4001#[derive(serde::Serialize, serde::Deserialize)]
4002#[allow(clippy::derive_partial_eq_without_eq)]
4003#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4004pub struct CDotaUserMsgSendRoshanPopup {
4005    #[prost(bool, optional, tag = "1")]
4006    pub reclaimed: ::core::option::Option<bool>,
4007    #[prost(int32, optional, tag = "2")]
4008    pub gametime: ::core::option::Option<i32>,
4009}
4010#[derive(serde::Serialize, serde::Deserialize)]
4011#[allow(clippy::derive_partial_eq_without_eq)]
4012#[derive(Clone, PartialEq, ::prost::Message)]
4013pub struct CDotaUserMsgSendFinalGold {
4014    #[prost(uint32, repeated, packed = "false", tag = "1")]
4015    pub reliable_gold: ::prost::alloc::vec::Vec<u32>,
4016    #[prost(uint32, repeated, packed = "false", tag = "2")]
4017    pub unreliable_gold: ::prost::alloc::vec::Vec<u32>,
4018}
4019#[derive(serde::Serialize, serde::Deserialize)]
4020#[allow(clippy::derive_partial_eq_without_eq)]
4021#[derive(Clone, PartialEq, ::prost::Message)]
4022pub struct CDotaUserMsgCustomMsg {
4023    #[prost(string, optional, tag = "1")]
4024    pub message: ::core::option::Option<::prost::alloc::string::String>,
4025    #[prost(int32, optional, tag = "2", default = "-1")]
4026    pub player_id: ::core::option::Option<i32>,
4027    #[prost(int32, optional, tag = "3")]
4028    pub value: ::core::option::Option<i32>,
4029}
4030#[derive(serde::Serialize, serde::Deserialize)]
4031#[allow(clippy::derive_partial_eq_without_eq)]
4032#[derive(Clone, PartialEq, ::prost::Message)]
4033pub struct CDotaUserMsgCoachHudPing {
4034    #[prost(int32, optional, tag = "1", default = "-1")]
4035    pub player_id: ::core::option::Option<i32>,
4036    #[prost(message, optional, tag = "2")]
4037    pub hud_ping: ::core::option::Option<CDotaMsgCoachHudPing>,
4038}
4039#[derive(serde::Serialize, serde::Deserialize)]
4040#[allow(clippy::derive_partial_eq_without_eq)]
4041#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4042pub struct CDotaUserMsgClientLoadGridNav {}
4043#[derive(serde::Serialize, serde::Deserialize)]
4044#[allow(clippy::derive_partial_eq_without_eq)]
4045#[derive(Clone, PartialEq, ::prost::Message)]
4046pub struct CDotaUserMsgTeProjectile {
4047    #[prost(uint32, optional, tag = "1", default = "16777215")]
4048    pub source: ::core::option::Option<u32>,
4049    #[prost(uint32, optional, tag = "2", default = "16777215")]
4050    pub target: ::core::option::Option<u32>,
4051    #[prost(int32, optional, tag = "3")]
4052    pub move_speed: ::core::option::Option<i32>,
4053    #[prost(int32, optional, tag = "4")]
4054    pub source_attachment: ::core::option::Option<i32>,
4055    #[prost(int64, optional, tag = "5")]
4056    pub particle_system_handle: ::core::option::Option<i64>,
4057    #[prost(bool, optional, tag = "6")]
4058    pub dodgeable: ::core::option::Option<bool>,
4059    #[prost(bool, optional, tag = "7")]
4060    pub is_attack: ::core::option::Option<bool>,
4061    #[prost(float, optional, tag = "9")]
4062    pub expire_time: ::core::option::Option<f32>,
4063    #[prost(float, optional, tag = "10")]
4064    pub maximpacttime: ::core::option::Option<f32>,
4065    #[prost(fixed32, optional, tag = "11")]
4066    pub colorgemcolor: ::core::option::Option<u32>,
4067    #[prost(int32, optional, tag = "12")]
4068    pub launch_tick: ::core::option::Option<i32>,
4069    #[prost(int32, optional, tag = "13")]
4070    pub handle: ::core::option::Option<i32>,
4071    #[prost(message, optional, tag = "14")]
4072    pub target_loc: ::core::option::Option<CMsgVector>,
4073    #[prost(message, repeated, tag = "15")]
4074    pub particle_cp_data: ::prost::alloc::vec::Vec<CDotaUserMsgProjectileParticleCpData>,
4075    #[prost(int64, optional, tag = "16")]
4076    pub additional_particle_system_handle: ::core::option::Option<i64>,
4077    #[prost(int32, optional, tag = "17")]
4078    pub original_move_speed: ::core::option::Option<i32>,
4079    #[prost(uint32, optional, tag = "18", default = "16777215")]
4080    pub ability: ::core::option::Option<u32>,
4081}
4082#[derive(serde::Serialize, serde::Deserialize)]
4083#[allow(clippy::derive_partial_eq_without_eq)]
4084#[derive(Clone, PartialEq, ::prost::Message)]
4085pub struct CDotaUserMsgTeProjectileLoc {
4086    #[prost(message, optional, tag = "1")]
4087    pub source_loc: ::core::option::Option<CMsgVector>,
4088    #[prost(uint32, optional, tag = "2", default = "16777215")]
4089    pub target: ::core::option::Option<u32>,
4090    #[prost(int32, optional, tag = "3")]
4091    pub move_speed: ::core::option::Option<i32>,
4092    #[prost(int64, optional, tag = "4")]
4093    pub particle_system_handle: ::core::option::Option<i64>,
4094    #[prost(bool, optional, tag = "5")]
4095    pub dodgeable: ::core::option::Option<bool>,
4096    #[prost(bool, optional, tag = "6")]
4097    pub is_attack: ::core::option::Option<bool>,
4098    #[prost(float, optional, tag = "9")]
4099    pub expire_time: ::core::option::Option<f32>,
4100    #[prost(message, optional, tag = "10")]
4101    pub target_loc: ::core::option::Option<CMsgVector>,
4102    #[prost(fixed32, optional, tag = "11")]
4103    pub colorgemcolor: ::core::option::Option<u32>,
4104    #[prost(int32, optional, tag = "12")]
4105    pub launch_tick: ::core::option::Option<i32>,
4106    #[prost(int32, optional, tag = "13")]
4107    pub handle: ::core::option::Option<i32>,
4108    #[prost(uint32, optional, tag = "14", default = "16777215")]
4109    pub source: ::core::option::Option<u32>,
4110    #[prost(int32, optional, tag = "15")]
4111    pub source_attachment: ::core::option::Option<i32>,
4112    #[prost(message, repeated, tag = "16")]
4113    pub particle_cp_data: ::prost::alloc::vec::Vec<CDotaUserMsgProjectileParticleCpData>,
4114    #[prost(int64, optional, tag = "17")]
4115    pub additional_particle_system_handle: ::core::option::Option<i64>,
4116    #[prost(int32, optional, tag = "18")]
4117    pub original_move_speed: ::core::option::Option<i32>,
4118}
4119#[derive(serde::Serialize, serde::Deserialize)]
4120#[allow(clippy::derive_partial_eq_without_eq)]
4121#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4122pub struct CDotaUserMsgTeDestroyProjectile {
4123    #[prost(int32, optional, tag = "1")]
4124    pub handle: ::core::option::Option<i32>,
4125}
4126#[derive(serde::Serialize, serde::Deserialize)]
4127#[allow(clippy::derive_partial_eq_without_eq)]
4128#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4129pub struct CDotaUserMsgTeDotaBloodImpact {
4130    #[prost(uint32, optional, tag = "1", default = "16777215")]
4131    pub entity: ::core::option::Option<u32>,
4132    #[prost(float, optional, tag = "2")]
4133    pub scale: ::core::option::Option<f32>,
4134    #[prost(float, optional, tag = "3")]
4135    pub xnormal: ::core::option::Option<f32>,
4136    #[prost(float, optional, tag = "4")]
4137    pub ynormal: ::core::option::Option<f32>,
4138}
4139#[derive(serde::Serialize, serde::Deserialize)]
4140#[allow(clippy::derive_partial_eq_without_eq)]
4141#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4142pub struct CDotaUserMsgAbilityPing {
4143    #[prost(int32, optional, tag = "1", default = "-1")]
4144    pub player_id: ::core::option::Option<i32>,
4145    #[prost(int32, optional, tag = "2", default = "-1")]
4146    pub ability_id: ::core::option::Option<i32>,
4147    #[prost(
4148        enumeration = "DotaAbilityPingType",
4149        optional,
4150        tag = "3",
4151        default = "AbilityPingReady"
4152    )]
4153    pub r#type: ::core::option::Option<i32>,
4154    #[prost(uint32, optional, tag = "4")]
4155    pub cooldown_seconds: ::core::option::Option<u32>,
4156    #[prost(uint32, optional, tag = "5")]
4157    pub level: ::core::option::Option<u32>,
4158    #[prost(bool, optional, tag = "6")]
4159    pub passive: ::core::option::Option<bool>,
4160    #[prost(uint32, optional, tag = "7")]
4161    pub mana_needed: ::core::option::Option<u32>,
4162    #[prost(uint32, optional, tag = "8")]
4163    pub entity_id: ::core::option::Option<u32>,
4164    #[prost(int32, optional, tag = "9")]
4165    pub primary_charges: ::core::option::Option<i32>,
4166    #[prost(int32, optional, tag = "10")]
4167    pub secondary_charges: ::core::option::Option<i32>,
4168    #[prost(bool, optional, tag = "12")]
4169    pub ctrl_held: ::core::option::Option<bool>,
4170    #[prost(float, optional, tag = "13")]
4171    pub reclaim_time: ::core::option::Option<f32>,
4172    #[prost(int32, optional, tag = "14", default = "-1")]
4173    pub owner_entity: ::core::option::Option<i32>,
4174}
4175#[derive(serde::Serialize, serde::Deserialize)]
4176#[allow(clippy::derive_partial_eq_without_eq)]
4177#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4178pub struct CDotaUserMsgTeUnitAnimation {
4179    #[prost(uint32, optional, tag = "1", default = "16777215")]
4180    pub entity: ::core::option::Option<u32>,
4181    #[prost(int32, optional, tag = "2")]
4182    pub sequence_variant: ::core::option::Option<i32>,
4183    #[prost(float, optional, tag = "3")]
4184    pub playbackrate: ::core::option::Option<f32>,
4185    #[prost(float, optional, tag = "4")]
4186    pub castpoint: ::core::option::Option<f32>,
4187    #[prost(int32, optional, tag = "5")]
4188    pub r#type: ::core::option::Option<i32>,
4189    #[prost(int32, optional, tag = "6")]
4190    pub activity: ::core::option::Option<i32>,
4191    #[prost(float, optional, tag = "7")]
4192    pub lag_compensation_time: ::core::option::Option<f32>,
4193}
4194#[derive(serde::Serialize, serde::Deserialize)]
4195#[allow(clippy::derive_partial_eq_without_eq)]
4196#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4197pub struct CDotaUserMsgTeUnitAnimationEnd {
4198    #[prost(uint32, optional, tag = "1", default = "16777215")]
4199    pub entity: ::core::option::Option<u32>,
4200    #[prost(bool, optional, tag = "2")]
4201    pub snap: ::core::option::Option<bool>,
4202}
4203#[derive(serde::Serialize, serde::Deserialize)]
4204#[allow(clippy::derive_partial_eq_without_eq)]
4205#[derive(Clone, PartialEq, ::prost::Message)]
4206pub struct CDotaUserMsgShowGenericPopup {
4207    #[prost(string, required, tag = "1")]
4208    pub header: ::prost::alloc::string::String,
4209    #[prost(string, required, tag = "2")]
4210    pub body: ::prost::alloc::string::String,
4211    #[prost(string, optional, tag = "3")]
4212    pub param1: ::core::option::Option<::prost::alloc::string::String>,
4213    #[prost(string, optional, tag = "4")]
4214    pub param2: ::core::option::Option<::prost::alloc::string::String>,
4215    #[prost(bool, optional, tag = "5")]
4216    pub tint_screen: ::core::option::Option<bool>,
4217    #[prost(bool, optional, tag = "6")]
4218    pub show_no_other_dialogs: ::core::option::Option<bool>,
4219}
4220#[derive(serde::Serialize, serde::Deserialize)]
4221#[allow(clippy::derive_partial_eq_without_eq)]
4222#[derive(Clone, PartialEq, ::prost::Message)]
4223pub struct CDotaUserMsgVoteStart {
4224    #[prost(string, optional, tag = "1")]
4225    pub title: ::core::option::Option<::prost::alloc::string::String>,
4226    #[prost(float, optional, tag = "2")]
4227    pub duration: ::core::option::Option<f32>,
4228    #[prost(int32, optional, tag = "3")]
4229    pub choice_count: ::core::option::Option<i32>,
4230    #[prost(string, repeated, tag = "4")]
4231    pub choices: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4232}
4233#[derive(serde::Serialize, serde::Deserialize)]
4234#[allow(clippy::derive_partial_eq_without_eq)]
4235#[derive(Clone, PartialEq, ::prost::Message)]
4236pub struct CDotaUserMsgVoteUpdate {
4237    #[prost(int32, repeated, packed = "false", tag = "1")]
4238    pub choice_counts: ::prost::alloc::vec::Vec<i32>,
4239}
4240#[derive(serde::Serialize, serde::Deserialize)]
4241#[allow(clippy::derive_partial_eq_without_eq)]
4242#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4243pub struct CDotaUserMsgVoteEnd {
4244    #[prost(int32, optional, tag = "1")]
4245    pub selected_choice: ::core::option::Option<i32>,
4246}
4247#[derive(serde::Serialize, serde::Deserialize)]
4248#[allow(clippy::derive_partial_eq_without_eq)]
4249#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4250pub struct CDotaUserMsgBoosterStatePlayer {
4251    #[prost(int32, optional, tag = "1", default = "-1")]
4252    pub player_id: ::core::option::Option<i32>,
4253    #[prost(float, optional, tag = "2")]
4254    pub bonus: ::core::option::Option<f32>,
4255    #[prost(float, optional, tag = "3")]
4256    pub event_bonus: ::core::option::Option<f32>,
4257    #[prost(uint32, optional, tag = "4")]
4258    pub bonus_item_id: ::core::option::Option<u32>,
4259    #[prost(uint32, optional, tag = "5")]
4260    pub event_bonus_item_id: ::core::option::Option<u32>,
4261}
4262#[derive(serde::Serialize, serde::Deserialize)]
4263#[allow(clippy::derive_partial_eq_without_eq)]
4264#[derive(Clone, PartialEq, ::prost::Message)]
4265pub struct CDotaUserMsgBoosterState {
4266    #[prost(message, repeated, tag = "1")]
4267    pub boosted_players: ::prost::alloc::vec::Vec<CDotaUserMsgBoosterStatePlayer>,
4268}
4269#[derive(serde::Serialize, serde::Deserialize)]
4270#[allow(clippy::derive_partial_eq_without_eq)]
4271#[derive(Clone, PartialEq, ::prost::Message)]
4272pub struct CDotaUserMsgPlayerMmr {
4273    #[prost(sint32, repeated, tag = "1")]
4274    pub mmr: ::prost::alloc::vec::Vec<i32>,
4275}
4276#[derive(serde::Serialize, serde::Deserialize)]
4277#[allow(clippy::derive_partial_eq_without_eq)]
4278#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4279pub struct CDotaUserMsgAbilitySteal {
4280    #[prost(int32, optional, tag = "1", default = "-1")]
4281    pub player_id: ::core::option::Option<i32>,
4282    #[prost(int32, optional, tag = "2", default = "-1")]
4283    pub ability_id: ::core::option::Option<i32>,
4284    #[prost(uint32, optional, tag = "3")]
4285    pub ability_level: ::core::option::Option<u32>,
4286}
4287#[derive(serde::Serialize, serde::Deserialize)]
4288#[allow(clippy::derive_partial_eq_without_eq)]
4289#[derive(Clone, PartialEq, ::prost::Message)]
4290pub struct CDotaUserMsgStatsHeroLookup {
4291    #[prost(int32, optional, tag = "1", default = "-1")]
4292    pub player_id: ::core::option::Option<i32>,
4293    #[prost(int32, optional, tag = "2")]
4294    pub hero_id: ::core::option::Option<i32>,
4295    #[prost(string, optional, tag = "3")]
4296    pub hero_name: ::core::option::Option<::prost::alloc::string::String>,
4297    #[prost(string, optional, tag = "4")]
4298    pub persona: ::core::option::Option<::prost::alloc::string::String>,
4299}
4300#[derive(serde::Serialize, serde::Deserialize)]
4301#[allow(clippy::derive_partial_eq_without_eq)]
4302#[derive(Clone, PartialEq, ::prost::Message)]
4303pub struct CDotaUserMsgStatsHeroPositionInfo {
4304    #[prost(float, optional, tag = "1")]
4305    pub average_position: ::core::option::Option<f32>,
4306    #[prost(message, repeated, tag = "2")]
4307    pub position_details:
4308        ::prost::alloc::vec::Vec<cdota_user_msg_stats_hero_position_info::PositionPair>,
4309}
4310/// Nested message and enum types in `CDOTAUserMsg_StatsHeroPositionInfo`.
4311pub mod cdota_user_msg_stats_hero_position_info {
4312    #[derive(serde::Serialize, serde::Deserialize)]
4313    #[allow(clippy::derive_partial_eq_without_eq)]
4314    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
4315    pub struct PositionPair {
4316        #[prost(
4317            enumeration = "super::DotaPositionCategory",
4318            optional,
4319            tag = "1",
4320            default = "DotaPositionNone"
4321        )]
4322        pub position_category: ::core::option::Option<i32>,
4323        #[prost(uint32, optional, tag = "2")]
4324        pub position_count: ::core::option::Option<u32>,
4325    }
4326}
4327#[derive(serde::Serialize, serde::Deserialize)]
4328#[allow(clippy::derive_partial_eq_without_eq)]
4329#[derive(Clone, PartialEq, ::prost::Message)]
4330pub struct CDotaUserMsgStatsHeroMinuteDetails {
4331    #[prost(uint32, optional, tag = "1")]
4332    pub last_hits: ::core::option::Option<u32>,
4333    #[prost(uint32, optional, tag = "2")]
4334    pub hero_kills: ::core::option::Option<u32>,
4335    #[prost(uint32, optional, tag = "3")]
4336    pub hero_damage: ::core::option::Option<u32>,
4337    #[prost(uint32, optional, tag = "4")]
4338    pub tower_damage: ::core::option::Option<u32>,
4339    #[prost(message, optional, tag = "5")]
4340    pub position_info: ::core::option::Option<CDotaUserMsgStatsHeroPositionInfo>,
4341    #[prost(uint32, optional, tag = "6")]
4342    pub total_xp: ::core::option::Option<u32>,
4343    #[prost(uint32, optional, tag = "7")]
4344    pub net_worth: ::core::option::Option<u32>,
4345    #[prost(uint32, optional, tag = "8")]
4346    pub harvested_creep_gold: ::core::option::Option<u32>,
4347    #[prost(uint32, optional, tag = "9")]
4348    pub claimed_farm: ::core::option::Option<u32>,
4349    #[prost(uint32, optional, tag = "10")]
4350    pub wards_placed: ::core::option::Option<u32>,
4351    #[prost(uint32, optional, tag = "11")]
4352    pub runes_collected: ::core::option::Option<u32>,
4353    #[prost(uint32, optional, tag = "12")]
4354    pub tps_used: ::core::option::Option<u32>,
4355    #[prost(uint32, repeated, packed = "false", tag = "13")]
4356    pub mana_spent: ::prost::alloc::vec::Vec<u32>,
4357    #[prost(uint32, repeated, packed = "false", tag = "14")]
4358    pub damage_absorbed: ::prost::alloc::vec::Vec<u32>,
4359    #[prost(uint32, repeated, packed = "false", tag = "15")]
4360    pub damage_done: ::prost::alloc::vec::Vec<u32>,
4361}
4362#[derive(serde::Serialize, serde::Deserialize)]
4363#[allow(clippy::derive_partial_eq_without_eq)]
4364#[derive(Clone, PartialEq, ::prost::Message)]
4365pub struct CDotaUserMsgStatsTeamMinuteDetails {
4366    #[prost(message, repeated, tag = "1")]
4367    pub player_stats: ::prost::alloc::vec::Vec<CDotaUserMsgStatsHeroMinuteDetails>,
4368    #[prost(uint32, optional, tag = "2")]
4369    pub tower_kills: ::core::option::Option<u32>,
4370    #[prost(uint32, optional, tag = "3")]
4371    pub barrack_kills: ::core::option::Option<u32>,
4372    #[prost(uint32, optional, tag = "4")]
4373    pub available_lane_creep_gold: ::core::option::Option<u32>,
4374    #[prost(uint32, optional, tag = "5")]
4375    pub balance_kill_value: ::core::option::Option<u32>,
4376    #[prost(uint32, optional, tag = "6")]
4377    pub balance_tower_value: ::core::option::Option<u32>,
4378    #[prost(uint32, optional, tag = "7")]
4379    pub balance_barracks_value: ::core::option::Option<u32>,
4380    #[prost(uint32, optional, tag = "8")]
4381    pub balance_gold_value: ::core::option::Option<u32>,
4382    #[prost(uint32, optional, tag = "9")]
4383    pub balance_xp_value: ::core::option::Option<u32>,
4384    #[prost(message, repeated, tag = "10")]
4385    pub lane_performance:
4386        ::prost::alloc::vec::Vec<cdota_user_msg_stats_team_minute_details::LocationPerformance>,
4387}
4388/// Nested message and enum types in `CDOTAUserMsg_StatsTeamMinuteDetails`.
4389pub mod cdota_user_msg_stats_team_minute_details {
4390    #[derive(serde::Serialize, serde::Deserialize)]
4391    #[allow(clippy::derive_partial_eq_without_eq)]
4392    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
4393    pub struct LocationPerformance {
4394        #[prost(uint32, optional, tag = "1")]
4395        pub location_category: ::core::option::Option<u32>,
4396        #[prost(uint32, optional, tag = "2")]
4397        pub stat_type: ::core::option::Option<u32>,
4398        #[prost(uint32, optional, tag = "3")]
4399        pub value: ::core::option::Option<u32>,
4400    }
4401}
4402#[derive(serde::Serialize, serde::Deserialize)]
4403#[allow(clippy::derive_partial_eq_without_eq)]
4404#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4405pub struct CDotaUserMsgStatsPlayerKillShare {
4406    #[prost(int32, optional, tag = "1", default = "-1")]
4407    pub player_id: ::core::option::Option<i32>,
4408    #[prost(float, optional, tag = "2")]
4409    pub kill_share_percent: ::core::option::Option<f32>,
4410    #[prost(float, optional, tag = "3")]
4411    pub player_loc_x: ::core::option::Option<f32>,
4412    #[prost(float, optional, tag = "4")]
4413    pub player_loc_y: ::core::option::Option<f32>,
4414    #[prost(float, optional, tag = "5")]
4415    pub health_percent: ::core::option::Option<f32>,
4416    #[prost(float, optional, tag = "6")]
4417    pub mana_percent: ::core::option::Option<f32>,
4418}
4419#[derive(serde::Serialize, serde::Deserialize)]
4420#[allow(clippy::derive_partial_eq_without_eq)]
4421#[derive(Clone, PartialEq, ::prost::Message)]
4422pub struct CDotaUserMsgStatsKillDetails {
4423    #[prost(int32, optional, tag = "1", default = "-1")]
4424    pub victim_id: ::core::option::Option<i32>,
4425    #[prost(message, repeated, tag = "2")]
4426    pub kill_shares: ::prost::alloc::vec::Vec<CDotaUserMsgStatsPlayerKillShare>,
4427    #[prost(uint32, optional, tag = "3")]
4428    pub damage_to_kill: ::core::option::Option<u32>,
4429    #[prost(uint32, optional, tag = "4")]
4430    pub effective_health: ::core::option::Option<u32>,
4431    #[prost(float, optional, tag = "5")]
4432    pub death_time: ::core::option::Option<f32>,
4433    #[prost(int32, optional, tag = "6", default = "-1")]
4434    pub killer_id: ::core::option::Option<i32>,
4435}
4436#[derive(serde::Serialize, serde::Deserialize)]
4437#[allow(clippy::derive_partial_eq_without_eq)]
4438#[derive(Clone, PartialEq, ::prost::Message)]
4439pub struct CDotaUserMsgStatsMatchDetails {
4440    #[prost(message, repeated, tag = "1")]
4441    pub hero_lookup: ::prost::alloc::vec::Vec<CDotaUserMsgStatsHeroLookup>,
4442    #[prost(message, repeated, tag = "2")]
4443    pub radiant_stats: ::prost::alloc::vec::Vec<CDotaUserMsgStatsTeamMinuteDetails>,
4444    #[prost(message, repeated, tag = "3")]
4445    pub dire_stats: ::prost::alloc::vec::Vec<CDotaUserMsgStatsTeamMinuteDetails>,
4446    #[prost(message, repeated, tag = "4")]
4447    pub radiant_kills: ::prost::alloc::vec::Vec<CDotaUserMsgStatsKillDetails>,
4448    #[prost(message, repeated, tag = "5")]
4449    pub dire_kills: ::prost::alloc::vec::Vec<CDotaUserMsgStatsKillDetails>,
4450    #[prost(message, repeated, tag = "6")]
4451    pub fight_details:
4452        ::prost::alloc::vec::Vec<cdota_user_msg_stats_match_details::CDotaUserMsgStatsFightDetails>,
4453}
4454/// Nested message and enum types in `CDOTAUserMsg_StatsMatchDetails`.
4455pub mod cdota_user_msg_stats_match_details {
4456    #[derive(serde::Serialize, serde::Deserialize)]
4457    #[allow(clippy::derive_partial_eq_without_eq)]
4458    #[derive(Clone, PartialEq, ::prost::Message)]
4459    pub struct CDotaUserMsgStatsFightTeamDetails {
4460        #[prost(int32, repeated, packed = "false", tag = "1")]
4461        pub participants: ::prost::alloc::vec::Vec<i32>,
4462        #[prost(int32, repeated, packed = "false", tag = "2")]
4463        pub deaths: ::prost::alloc::vec::Vec<i32>,
4464        #[prost(uint32, optional, tag = "3")]
4465        pub gold_delta: ::core::option::Option<u32>,
4466        #[prost(uint32, optional, tag = "4")]
4467        pub xp_delta: ::core::option::Option<u32>,
4468    }
4469    #[derive(serde::Serialize, serde::Deserialize)]
4470    #[allow(clippy::derive_partial_eq_without_eq)]
4471    #[derive(Clone, PartialEq, ::prost::Message)]
4472    pub struct CDotaUserMsgStatsFightDetails {
4473        #[prost(float, optional, tag = "1")]
4474        pub start_time: ::core::option::Option<f32>,
4475        #[prost(float, optional, tag = "2")]
4476        pub end_time: ::core::option::Option<f32>,
4477        #[prost(message, optional, tag = "3")]
4478        pub radiant_fight_details: ::core::option::Option<CDotaUserMsgStatsFightTeamDetails>,
4479        #[prost(message, optional, tag = "4")]
4480        pub dire_fight_details: ::core::option::Option<CDotaUserMsgStatsFightTeamDetails>,
4481    }
4482}
4483#[derive(serde::Serialize, serde::Deserialize)]
4484#[allow(clippy::derive_partial_eq_without_eq)]
4485#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4486pub struct CDotaUserMsgMiniTaunt {
4487    #[prost(int32, optional, tag = "1", default = "-1")]
4488    pub taunting_player_id: ::core::option::Option<i32>,
4489}
4490#[derive(serde::Serialize, serde::Deserialize)]
4491#[allow(clippy::derive_partial_eq_without_eq)]
4492#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4493pub struct CDotaUserMsgSpeechBubble {
4494    #[prost(bool, optional, tag = "1")]
4495    pub destroy_all: ::core::option::Option<bool>,
4496}
4497#[derive(serde::Serialize, serde::Deserialize)]
4498#[allow(clippy::derive_partial_eq_without_eq)]
4499#[derive(Clone, PartialEq, ::prost::Message)]
4500pub struct CDotaUserMsgCustomHeaderMessage {
4501    #[prost(int32, optional, tag = "1", default = "-1")]
4502    pub player_id: ::core::option::Option<i32>,
4503    #[prost(float, optional, tag = "2")]
4504    pub duration: ::core::option::Option<f32>,
4505    #[prost(string, optional, tag = "3")]
4506    pub message: ::core::option::Option<::prost::alloc::string::String>,
4507    #[prost(int32, optional, tag = "4")]
4508    pub value: ::core::option::Option<i32>,
4509}
4510#[derive(serde::Serialize, serde::Deserialize)]
4511#[allow(clippy::derive_partial_eq_without_eq)]
4512#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4513pub struct CMsgHeroAbilityStat {
4514    #[prost(
4515        enumeration = "EHeroStatType",
4516        optional,
4517        tag = "1",
4518        default = "KEHeroStatTypeNone"
4519    )]
4520    pub stat_type: ::core::option::Option<i32>,
4521    #[prost(int32, optional, tag = "2")]
4522    pub int_value: ::core::option::Option<i32>,
4523    #[prost(float, optional, tag = "3")]
4524    pub float_value: ::core::option::Option<f32>,
4525}
4526#[derive(serde::Serialize, serde::Deserialize)]
4527#[allow(clippy::derive_partial_eq_without_eq)]
4528#[derive(Clone, PartialEq, ::prost::Message)]
4529pub struct CMsgCombatAnalyzerPlayerStat {
4530    #[prost(uint32, optional, tag = "1")]
4531    pub account_id: ::core::option::Option<u32>,
4532    #[prost(message, repeated, tag = "2")]
4533    pub hero_ability_stats: ::prost::alloc::vec::Vec<CMsgHeroAbilityStat>,
4534}
4535#[derive(serde::Serialize, serde::Deserialize)]
4536#[allow(clippy::derive_partial_eq_without_eq)]
4537#[derive(Clone, PartialEq, ::prost::Message)]
4538pub struct CMsgCombatAnalyzerStats {
4539    #[prost(uint64, optional, tag = "1")]
4540    pub match_id: ::core::option::Option<u64>,
4541    #[prost(message, repeated, tag = "2")]
4542    pub player_stats: ::prost::alloc::vec::Vec<CMsgCombatAnalyzerPlayerStat>,
4543}
4544#[derive(serde::Serialize, serde::Deserialize)]
4545#[allow(clippy::derive_partial_eq_without_eq)]
4546#[derive(Clone, PartialEq, ::prost::Message)]
4547pub struct CDotaUserMsgBeastChat {
4548    #[prost(uint32, optional, tag = "1")]
4549    pub team: ::core::option::Option<u32>,
4550    #[prost(string, optional, tag = "2")]
4551    pub format: ::core::option::Option<::prost::alloc::string::String>,
4552    #[prost(string, optional, tag = "3")]
4553    pub message: ::core::option::Option<::prost::alloc::string::String>,
4554    #[prost(string, optional, tag = "4")]
4555    pub target: ::core::option::Option<::prost::alloc::string::String>,
4556}
4557#[derive(serde::Serialize, serde::Deserialize)]
4558#[allow(clippy::derive_partial_eq_without_eq)]
4559#[derive(Clone, PartialEq, ::prost::Message)]
4560pub struct CDotaUserMsgCustomHudElementCreate {
4561    #[prost(string, optional, tag = "1")]
4562    pub element_id: ::core::option::Option<::prost::alloc::string::String>,
4563    #[prost(string, optional, tag = "2")]
4564    pub layout_filename: ::core::option::Option<::prost::alloc::string::String>,
4565    #[prost(bytes = "vec", optional, tag = "3")]
4566    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4567}
4568#[derive(serde::Serialize, serde::Deserialize)]
4569#[allow(clippy::derive_partial_eq_without_eq)]
4570#[derive(Clone, PartialEq, ::prost::Message)]
4571pub struct CDotaUserMsgCustomHudElementModify {
4572    #[prost(string, optional, tag = "1")]
4573    pub element_id: ::core::option::Option<::prost::alloc::string::String>,
4574    #[prost(bool, optional, tag = "2")]
4575    pub modify_visible: ::core::option::Option<bool>,
4576    #[prost(bytes = "vec", optional, tag = "3")]
4577    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4578}
4579#[derive(serde::Serialize, serde::Deserialize)]
4580#[allow(clippy::derive_partial_eq_without_eq)]
4581#[derive(Clone, PartialEq, ::prost::Message)]
4582pub struct CDotaUserMsgCustomHudElementDestroy {
4583    #[prost(string, optional, tag = "1")]
4584    pub element_id: ::core::option::Option<::prost::alloc::string::String>,
4585}
4586#[derive(serde::Serialize, serde::Deserialize)]
4587#[allow(clippy::derive_partial_eq_without_eq)]
4588#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4589pub struct CDotaUserMsgCompendiumStatePlayer {
4590    #[prost(int32, optional, tag = "1", default = "-1")]
4591    pub player_id: ::core::option::Option<i32>,
4592    #[prost(uint32, optional, tag = "2")]
4593    pub level: ::core::option::Option<u32>,
4594}
4595#[derive(serde::Serialize, serde::Deserialize)]
4596#[allow(clippy::derive_partial_eq_without_eq)]
4597#[derive(Clone, PartialEq, ::prost::Message)]
4598pub struct CDotaUserMsgCompendiumState {
4599    #[prost(message, repeated, tag = "1")]
4600    pub compendium_players: ::prost::alloc::vec::Vec<CDotaUserMsgCompendiumStatePlayer>,
4601}
4602#[derive(serde::Serialize, serde::Deserialize)]
4603#[allow(clippy::derive_partial_eq_without_eq)]
4604#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4605pub struct CDotaUserMsgProjectionAbility {
4606    #[prost(int32, optional, tag = "1", default = "-1")]
4607    pub ability_id: ::core::option::Option<i32>,
4608    #[prost(int32, optional, tag = "2", default = "-1")]
4609    pub caster_ent_index: ::core::option::Option<i32>,
4610    #[prost(int32, optional, tag = "3")]
4611    pub caster_team: ::core::option::Option<i32>,
4612    #[prost(bool, optional, tag = "4")]
4613    pub channel_end: ::core::option::Option<bool>,
4614    #[prost(message, optional, tag = "5")]
4615    pub origin: ::core::option::Option<CMsgVector>,
4616    #[prost(bool, optional, tag = "6")]
4617    pub track_caster_only: ::core::option::Option<bool>,
4618    #[prost(float, optional, tag = "7")]
4619    pub end_time: ::core::option::Option<f32>,
4620    #[prost(int32, optional, tag = "8", default = "-1")]
4621    pub victim_ent_index: ::core::option::Option<i32>,
4622}
4623#[derive(serde::Serialize, serde::Deserialize)]
4624#[allow(clippy::derive_partial_eq_without_eq)]
4625#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4626pub struct CDotaUserMsgProjectionEvent {
4627    #[prost(
4628        enumeration = "EProjectionEvent",
4629        optional,
4630        tag = "1",
4631        default = "EPeFirstBlood"
4632    )]
4633    pub event_id: ::core::option::Option<i32>,
4634    #[prost(uint32, optional, tag = "2")]
4635    pub team: ::core::option::Option<u32>,
4636}
4637#[derive(serde::Serialize, serde::Deserialize)]
4638#[allow(clippy::derive_partial_eq_without_eq)]
4639#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4640pub struct CDotaUserMsgXpAlert {
4641    #[prost(int32, optional, tag = "1", default = "-1")]
4642    pub player_id: ::core::option::Option<i32>,
4643    #[prost(int32, optional, tag = "2", default = "-1")]
4644    pub target_entindex: ::core::option::Option<i32>,
4645}
4646#[derive(serde::Serialize, serde::Deserialize)]
4647#[allow(clippy::derive_partial_eq_without_eq)]
4648#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4649pub struct CDotaUserMsgTalentTreeAlert {
4650    #[prost(int32, optional, tag = "1", default = "-1")]
4651    pub player_id: ::core::option::Option<i32>,
4652    #[prost(int32, optional, tag = "2", default = "-1")]
4653    pub target_entindex: ::core::option::Option<i32>,
4654    #[prost(int32, optional, tag = "3", default = "-1")]
4655    pub ability_id: ::core::option::Option<i32>,
4656    #[prost(int32, optional, tag = "4")]
4657    pub slot: ::core::option::Option<i32>,
4658    #[prost(bool, optional, tag = "5")]
4659    pub learned: ::core::option::Option<bool>,
4660}
4661#[derive(serde::Serialize, serde::Deserialize)]
4662#[allow(clippy::derive_partial_eq_without_eq)]
4663#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4664pub struct CDotaUserMsgUpdateQuestProgress {}
4665#[derive(serde::Serialize, serde::Deserialize)]
4666#[allow(clippy::derive_partial_eq_without_eq)]
4667#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4668pub struct CDotaUserMsgQuestStatus {
4669    #[prost(int32, required, tag = "1", default = "-1")]
4670    pub player_id: i32,
4671    #[prost(uint32, optional, tag = "2")]
4672    pub quest_id: ::core::option::Option<u32>,
4673    #[prost(uint32, optional, tag = "3")]
4674    pub challenge_id: ::core::option::Option<u32>,
4675    #[prost(uint32, optional, tag = "4")]
4676    pub progress: ::core::option::Option<u32>,
4677    #[prost(uint32, optional, tag = "5")]
4678    pub goal: ::core::option::Option<u32>,
4679    #[prost(uint32, optional, tag = "6")]
4680    pub query: ::core::option::Option<u32>,
4681    #[prost(float, optional, tag = "7")]
4682    pub fail_gametime: ::core::option::Option<f32>,
4683    #[prost(int32, optional, tag = "8", default = "-1")]
4684    pub item_ability_id: ::core::option::Option<i32>,
4685}
4686#[derive(serde::Serialize, serde::Deserialize)]
4687#[allow(clippy::derive_partial_eq_without_eq)]
4688#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4689pub struct CDotaUserMsgSuggestHeroPick {
4690    #[prost(int32, required, tag = "1", default = "-1")]
4691    pub player_id: i32,
4692    #[prost(uint32, optional, tag = "2")]
4693    pub hero_id: ::core::option::Option<u32>,
4694    #[prost(bool, optional, tag = "3")]
4695    pub ban: ::core::option::Option<bool>,
4696    #[prost(uint32, optional, tag = "4")]
4697    pub facet_id: ::core::option::Option<u32>,
4698}
4699#[derive(serde::Serialize, serde::Deserialize)]
4700#[allow(clippy::derive_partial_eq_without_eq)]
4701#[derive(Clone, PartialEq, ::prost::Message)]
4702pub struct CDotaUserMsgSuggestHeroRole {
4703    #[prost(int32, required, tag = "1", default = "-1")]
4704    pub player_id: i32,
4705    #[prost(string, optional, tag = "2")]
4706    pub hero_role: ::core::option::Option<::prost::alloc::string::String>,
4707}
4708#[derive(serde::Serialize, serde::Deserialize)]
4709#[allow(clippy::derive_partial_eq_without_eq)]
4710#[derive(Clone, PartialEq, ::prost::Message)]
4711pub struct CDotaUserMsgKillcamDamageTaken {
4712    #[prost(int32, required, tag = "1", default = "-1")]
4713    pub player_id: i32,
4714    #[prost(uint32, optional, tag = "2")]
4715    pub damage_taken: ::core::option::Option<u32>,
4716    #[prost(uint32, optional, tag = "3")]
4717    pub item_type: ::core::option::Option<u32>,
4718    #[prost(int32, optional, tag = "4", default = "-1")]
4719    pub item_ability_id: ::core::option::Option<i32>,
4720    #[prost(string, optional, tag = "5")]
4721    pub hero_name: ::core::option::Option<::prost::alloc::string::String>,
4722    #[prost(string, optional, tag = "6")]
4723    pub damage_color: ::core::option::Option<::prost::alloc::string::String>,
4724}
4725#[derive(serde::Serialize, serde::Deserialize)]
4726#[allow(clippy::derive_partial_eq_without_eq)]
4727#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4728pub struct CDotaUserMsgSelectPenaltyGold {
4729    #[prost(int32, required, tag = "1", default = "-1")]
4730    pub player_id: i32,
4731    #[prost(sint32, optional, tag = "2")]
4732    pub cost: ::core::option::Option<i32>,
4733}
4734#[derive(serde::Serialize, serde::Deserialize)]
4735#[allow(clippy::derive_partial_eq_without_eq)]
4736#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4737pub struct CDotaUserMsgRollDiceResult {
4738    #[prost(int32, optional, tag = "1", default = "-1")]
4739    pub player_id: ::core::option::Option<i32>,
4740    #[prost(uint32, optional, tag = "2")]
4741    pub channel_type: ::core::option::Option<u32>,
4742    #[prost(uint32, optional, tag = "3")]
4743    pub roll_min: ::core::option::Option<u32>,
4744    #[prost(uint32, optional, tag = "4")]
4745    pub roll_max: ::core::option::Option<u32>,
4746    #[prost(uint32, optional, tag = "5")]
4747    pub result: ::core::option::Option<u32>,
4748}
4749#[derive(serde::Serialize, serde::Deserialize)]
4750#[allow(clippy::derive_partial_eq_without_eq)]
4751#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4752pub struct CDotaUserMsgFlipCoinResult {
4753    #[prost(int32, optional, tag = "1", default = "-1")]
4754    pub player_id: ::core::option::Option<i32>,
4755    #[prost(uint32, optional, tag = "2")]
4756    pub channel_type: ::core::option::Option<u32>,
4757    #[prost(bool, optional, tag = "3")]
4758    pub result: ::core::option::Option<bool>,
4759}
4760#[derive(serde::Serialize, serde::Deserialize)]
4761#[allow(clippy::derive_partial_eq_without_eq)]
4762#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4763pub struct CDotaUserMessageRequestItemSuggestions {
4764    #[prost(int32, optional, tag = "1", default = "-1")]
4765    pub player_id: ::core::option::Option<i32>,
4766}
4767#[derive(serde::Serialize, serde::Deserialize)]
4768#[allow(clippy::derive_partial_eq_without_eq)]
4769#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4770pub struct CDotaUserMessageTeamCaptainChanged {
4771    #[prost(uint32, optional, tag = "1")]
4772    pub team: ::core::option::Option<u32>,
4773    #[prost(int32, optional, tag = "2", default = "-1")]
4774    pub captain_player_id: ::core::option::Option<i32>,
4775}
4776#[derive(serde::Serialize, serde::Deserialize)]
4777#[allow(clippy::derive_partial_eq_without_eq)]
4778#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4779pub struct CDotaUserMsgChatWheelCooldown {
4780    #[prost(uint32, optional, tag = "1", default = "4294967295")]
4781    pub message_id: ::core::option::Option<u32>,
4782    #[prost(float, optional, tag = "2")]
4783    pub cooldown_remaining: ::core::option::Option<f32>,
4784}
4785#[derive(serde::Serialize, serde::Deserialize)]
4786#[allow(clippy::derive_partial_eq_without_eq)]
4787#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4788pub struct CDotaUserMsgHeroRelicProgress {
4789    #[prost(uint32, optional, tag = "1")]
4790    pub hero_relic_type: ::core::option::Option<u32>,
4791    #[prost(uint32, optional, tag = "2")]
4792    pub value: ::core::option::Option<u32>,
4793    #[prost(uint32, optional, tag = "3", default = "16777215")]
4794    pub ehandle: ::core::option::Option<u32>,
4795    #[prost(uint32, optional, tag = "4")]
4796    pub event_id: ::core::option::Option<u32>,
4797    #[prost(float, optional, tag = "5")]
4798    pub value_display: ::core::option::Option<f32>,
4799}
4800#[derive(serde::Serialize, serde::Deserialize)]
4801#[allow(clippy::derive_partial_eq_without_eq)]
4802#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4803pub struct CDotaUserMsgAbilityDraftRequestAbility {
4804    #[prost(int32, optional, tag = "1", default = "-1")]
4805    pub player_id: ::core::option::Option<i32>,
4806    #[prost(int32, optional, tag = "2", default = "-1")]
4807    pub requested_ability_id: ::core::option::Option<i32>,
4808    #[prost(bool, optional, tag = "3")]
4809    pub ctrl_is_down: ::core::option::Option<bool>,
4810}
4811#[derive(serde::Serialize, serde::Deserialize)]
4812#[allow(clippy::derive_partial_eq_without_eq)]
4813#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4814pub struct CDotaUserMsgDamageReport {
4815    #[prost(int32, optional, tag = "1", default = "-1")]
4816    pub player_id: ::core::option::Option<i32>,
4817    #[prost(uint32, optional, tag = "2")]
4818    pub target_hero_id: ::core::option::Option<u32>,
4819    #[prost(uint32, optional, tag = "3")]
4820    pub source_hero_id: ::core::option::Option<u32>,
4821    #[prost(int32, optional, tag = "4")]
4822    pub damage_amount: ::core::option::Option<i32>,
4823    #[prost(bool, optional, tag = "5")]
4824    pub broadcast: ::core::option::Option<bool>,
4825}
4826#[derive(serde::Serialize, serde::Deserialize)]
4827#[allow(clippy::derive_partial_eq_without_eq)]
4828#[derive(Clone, PartialEq, ::prost::Message)]
4829pub struct CDotaUserMsgSalutePlayer {
4830    #[prost(int32, optional, tag = "1", default = "-1")]
4831    pub source_player_id: ::core::option::Option<i32>,
4832    #[prost(int32, optional, tag = "2", default = "-1")]
4833    pub target_player_id: ::core::option::Option<i32>,
4834    #[prost(uint32, optional, tag = "3")]
4835    pub tip_amount: ::core::option::Option<u32>,
4836    #[prost(uint32, optional, tag = "4")]
4837    pub event_id: ::core::option::Option<u32>,
4838    #[prost(string, optional, tag = "5")]
4839    pub custom_tip_style: ::core::option::Option<::prost::alloc::string::String>,
4840    #[prost(uint32, optional, tag = "6")]
4841    pub num_recent_tips: ::core::option::Option<u32>,
4842}
4843#[derive(serde::Serialize, serde::Deserialize)]
4844#[allow(clippy::derive_partial_eq_without_eq)]
4845#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4846pub struct CDotaUserMsgGiftPlayer {
4847    #[prost(int32, optional, tag = "1", default = "-1")]
4848    pub source_player_id: ::core::option::Option<i32>,
4849    #[prost(int32, optional, tag = "2", default = "-1")]
4850    pub target_player_id: ::core::option::Option<i32>,
4851    #[prost(uint32, optional, tag = "3")]
4852    pub gift_item_def_index: ::core::option::Option<u32>,
4853}
4854#[derive(serde::Serialize, serde::Deserialize)]
4855#[allow(clippy::derive_partial_eq_without_eq)]
4856#[derive(Clone, PartialEq, ::prost::Message)]
4857pub struct CDotaUserMsgTipAlert {
4858    #[prost(int32, optional, tag = "1", default = "-1")]
4859    pub player_id: ::core::option::Option<i32>,
4860    #[prost(string, optional, tag = "2")]
4861    pub tip_text: ::core::option::Option<::prost::alloc::string::String>,
4862}
4863#[derive(serde::Serialize, serde::Deserialize)]
4864#[allow(clippy::derive_partial_eq_without_eq)]
4865#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4866pub struct CDotaUserMsgReplaceQueryUnit {
4867    #[prost(int32, required, tag = "1", default = "-1")]
4868    pub player_id: i32,
4869    #[prost(int32, optional, tag = "2", default = "-1")]
4870    pub source_entindex: ::core::option::Option<i32>,
4871    #[prost(int32, optional, tag = "3", default = "-1")]
4872    pub target_entindex: ::core::option::Option<i32>,
4873}
4874#[derive(serde::Serialize, serde::Deserialize)]
4875#[allow(clippy::derive_partial_eq_without_eq)]
4876#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4877pub struct CDotaUserMsgEsArcanaCombo {
4878    #[prost(uint32, optional, tag = "1", default = "16777215")]
4879    pub ehandle: ::core::option::Option<u32>,
4880    #[prost(uint32, optional, tag = "2")]
4881    pub combo_count: ::core::option::Option<u32>,
4882    #[prost(uint32, optional, tag = "3")]
4883    pub arcana_level: ::core::option::Option<u32>,
4884}
4885#[derive(serde::Serialize, serde::Deserialize)]
4886#[allow(clippy::derive_partial_eq_without_eq)]
4887#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4888pub struct CDotaUserMsgEsArcanaComboSummary {
4889    #[prost(uint32, optional, tag = "1", default = "16777215")]
4890    pub ehandle: ::core::option::Option<u32>,
4891    #[prost(uint32, optional, tag = "2")]
4892    pub combo_count: ::core::option::Option<u32>,
4893    #[prost(uint32, optional, tag = "3")]
4894    pub damage_amount: ::core::option::Option<u32>,
4895}
4896#[derive(serde::Serialize, serde::Deserialize)]
4897#[allow(clippy::derive_partial_eq_without_eq)]
4898#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4899pub struct CDotaUserMsgOmArcanaCombo {
4900    #[prost(uint32, optional, tag = "1", default = "16777215")]
4901    pub ehandle: ::core::option::Option<u32>,
4902    #[prost(uint32, optional, tag = "2")]
4903    pub multicast_amount: ::core::option::Option<u32>,
4904    #[prost(uint32, optional, tag = "3")]
4905    pub arcana_level: ::core::option::Option<u32>,
4906    #[prost(uint32, optional, tag = "4")]
4907    pub multicast_chance: ::core::option::Option<u32>,
4908}
4909#[derive(serde::Serialize, serde::Deserialize)]
4910#[allow(clippy::derive_partial_eq_without_eq)]
4911#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4912pub struct CDotaUserMsgHighFiveCompleted {
4913    #[prost(int32, optional, tag = "1", default = "-1")]
4914    pub player_id_1: ::core::option::Option<i32>,
4915    #[prost(int32, optional, tag = "2", default = "-1")]
4916    pub player_id_2: ::core::option::Option<i32>,
4917    #[prost(bool, optional, tag = "3")]
4918    pub special_high_five: ::core::option::Option<bool>,
4919    #[prost(int32, optional, tag = "4", default = "-1")]
4920    pub special_entindex: ::core::option::Option<i32>,
4921}
4922#[derive(serde::Serialize, serde::Deserialize)]
4923#[allow(clippy::derive_partial_eq_without_eq)]
4924#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4925pub struct CDotaUserMsgHighFiveLeftHanging {
4926    #[prost(int32, optional, tag = "1", default = "-1")]
4927    pub player_id: ::core::option::Option<i32>,
4928}
4929#[derive(serde::Serialize, serde::Deserialize)]
4930#[allow(clippy::derive_partial_eq_without_eq)]
4931#[derive(Clone, PartialEq, ::prost::Message)]
4932pub struct CDotaUserMsgShovelUnearth {
4933    #[prost(int32, optional, tag = "1", default = "-1")]
4934    pub player_id: ::core::option::Option<i32>,
4935    #[prost(bool, optional, tag = "2")]
4936    pub all_chat: ::core::option::Option<bool>,
4937    #[prost(string, optional, tag = "3")]
4938    pub locstring: ::core::option::Option<::prost::alloc::string::String>,
4939    #[prost(uint32, optional, tag = "4")]
4940    pub quantity: ::core::option::Option<u32>,
4941}
4942#[derive(serde::Serialize, serde::Deserialize)]
4943#[allow(clippy::derive_partial_eq_without_eq)]
4944#[derive(Clone, PartialEq, ::prost::Message)]
4945pub struct CDotaUserMsgAllStarEvent {
4946    #[prost(int32, optional, tag = "1", default = "-1")]
4947    pub source_player_id: ::core::option::Option<i32>,
4948    #[prost(int32, optional, tag = "2", default = "-1")]
4949    pub target_player_id: ::core::option::Option<i32>,
4950    #[prost(uint32, optional, tag = "3")]
4951    pub point_amount: ::core::option::Option<u32>,
4952    #[prost(uint32, optional, tag = "4")]
4953    pub event_id: ::core::option::Option<u32>,
4954    #[prost(message, repeated, tag = "5")]
4955    pub player_scores: ::prost::alloc::vec::Vec<cdota_user_msg_all_star_event::PlayerScore>,
4956}
4957/// Nested message and enum types in `CDOTAUserMsg_AllStarEvent`.
4958pub mod cdota_user_msg_all_star_event {
4959    #[derive(serde::Serialize, serde::Deserialize)]
4960    #[allow(clippy::derive_partial_eq_without_eq)]
4961    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
4962    pub struct PlayerScore {
4963        #[prost(int32, optional, tag = "1", default = "-1")]
4964        pub player_id: ::core::option::Option<i32>,
4965        #[prost(uint32, optional, tag = "2")]
4966        pub score_sans_kda: ::core::option::Option<u32>,
4967    }
4968}
4969#[derive(serde::Serialize, serde::Deserialize)]
4970#[allow(clippy::derive_partial_eq_without_eq)]
4971#[derive(Clone, PartialEq, ::prost::Message)]
4972pub struct CDotaUserMsgQueuedOrderRemoved {
4973    #[prost(uint32, repeated, packed = "false", tag = "1")]
4974    pub unit_order_sequence: ::prost::alloc::vec::Vec<u32>,
4975}
4976#[derive(serde::Serialize, serde::Deserialize)]
4977#[allow(clippy::derive_partial_eq_without_eq)]
4978#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4979pub struct CDotaUserMsgDebugChallenge {
4980    #[prost(uint32, required, tag = "1")]
4981    pub challenge_type: u32,
4982    #[prost(uint32, required, tag = "2")]
4983    pub challenge_query_id: u32,
4984    #[prost(uint32, required, tag = "3")]
4985    pub event_id: u32,
4986    #[prost(uint32, optional, tag = "4")]
4987    pub instance_id: ::core::option::Option<u32>,
4988    #[prost(uint32, optional, tag = "5")]
4989    pub challenge_var_0: ::core::option::Option<u32>,
4990    #[prost(uint32, optional, tag = "6")]
4991    pub challenge_var_1: ::core::option::Option<u32>,
4992    #[prost(uint32, optional, tag = "7")]
4993    pub challenge_max_rank: ::core::option::Option<u32>,
4994}
4995#[derive(serde::Serialize, serde::Deserialize)]
4996#[allow(clippy::derive_partial_eq_without_eq)]
4997#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4998pub struct CDotaUserMsgFoundNeutralItem {
4999    #[prost(int32, optional, tag = "1", default = "-1")]
5000    pub player_id: ::core::option::Option<i32>,
5001    #[prost(int32, optional, tag = "2", default = "-1")]
5002    pub item_ability_id: ::core::option::Option<i32>,
5003    #[prost(uint32, optional, tag = "3")]
5004    pub item_tier: ::core::option::Option<u32>,
5005    #[prost(uint32, optional, tag = "4")]
5006    pub tier_item_count: ::core::option::Option<u32>,
5007}
5008#[derive(serde::Serialize, serde::Deserialize)]
5009#[allow(clippy::derive_partial_eq_without_eq)]
5010#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5011pub struct CDotaUserMsgOutpostCaptured {
5012    #[prost(int32, optional, tag = "1", default = "-1")]
5013    pub outpost_entindex: ::core::option::Option<i32>,
5014    #[prost(uint32, optional, tag = "2")]
5015    pub team_id: ::core::option::Option<u32>,
5016}
5017#[derive(serde::Serialize, serde::Deserialize)]
5018#[allow(clippy::derive_partial_eq_without_eq)]
5019#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5020pub struct CDotaUserMsgOutpostGrantedXp {
5021    #[prost(uint32, optional, tag = "1")]
5022    pub team_id: ::core::option::Option<u32>,
5023    #[prost(uint32, optional, tag = "2")]
5024    pub xp_amount: ::core::option::Option<u32>,
5025}
5026#[derive(serde::Serialize, serde::Deserialize)]
5027#[allow(clippy::derive_partial_eq_without_eq)]
5028#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5029pub struct CDotaUserMsgMoveCameraToUnit {
5030    #[prost(uint32, optional, tag = "1", default = "16777215")]
5031    pub unit_ehandle: ::core::option::Option<u32>,
5032}
5033#[derive(serde::Serialize, serde::Deserialize)]
5034#[allow(clippy::derive_partial_eq_without_eq)]
5035#[derive(Clone, PartialEq, ::prost::Message)]
5036pub struct CDotaUserMsgPauseMinigameData {
5037    #[prost(message, repeated, tag = "1")]
5038    pub data_bits: ::prost::alloc::vec::Vec<cdota_user_msg_pause_minigame_data::DataBit>,
5039}
5040/// Nested message and enum types in `CDOTAUserMsg_PauseMinigameData`.
5041pub mod cdota_user_msg_pause_minigame_data {
5042    #[derive(serde::Serialize, serde::Deserialize)]
5043    #[allow(clippy::derive_partial_eq_without_eq)]
5044    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
5045    pub struct DataBit {
5046        #[prost(uint32, optional, tag = "1")]
5047        pub index: ::core::option::Option<u32>,
5048        #[prost(int32, optional, tag = "2")]
5049        pub data: ::core::option::Option<i32>,
5050        #[prost(int64, optional, tag = "3")]
5051        pub data_extra: ::core::option::Option<i64>,
5052    }
5053}
5054#[derive(serde::Serialize, serde::Deserialize)]
5055#[allow(clippy::derive_partial_eq_without_eq)]
5056#[derive(Clone, PartialEq, ::prost::Message)]
5057pub struct CDotaUserMsgVersusScenePlayerBehavior {
5058    #[prost(int32, optional, tag = "1", default = "-1")]
5059    pub player_id: ::core::option::Option<i32>,
5060    #[prost(
5061        enumeration = "EDotaVersusScenePlayerBehavior",
5062        optional,
5063        tag = "2",
5064        default = "VsPlayerBehaviorPlayActivity"
5065    )]
5066    pub behavior: ::core::option::Option<i32>,
5067    #[prost(message, optional, tag = "3")]
5068    pub play_activity: ::core::option::Option<VersusScenePlayActivity>,
5069    #[prost(message, optional, tag = "4")]
5070    pub chat_wheel: ::core::option::Option<VersusSceneChatWheel>,
5071    #[prost(message, optional, tag = "5")]
5072    pub playback_rate: ::core::option::Option<VersusScenePlaybackRate>,
5073}
5074#[derive(serde::Serialize, serde::Deserialize)]
5075#[allow(clippy::derive_partial_eq_without_eq)]
5076#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5077pub struct CDotaUserMsgQoPArcanaSummary {
5078    #[prost(uint32, optional, tag = "1", default = "16777215")]
5079    pub ehandle: ::core::option::Option<u32>,
5080    #[prost(uint32, optional, tag = "2")]
5081    pub arcana_level: ::core::option::Option<u32>,
5082    #[prost(uint32, optional, tag = "3")]
5083    pub players_hit: ::core::option::Option<u32>,
5084    #[prost(uint32, optional, tag = "4")]
5085    pub players_killed: ::core::option::Option<u32>,
5086}
5087#[derive(serde::Serialize, serde::Deserialize)]
5088#[allow(clippy::derive_partial_eq_without_eq)]
5089#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5090pub struct CDotaUserMsgHotPotatoCreated {
5091    #[prost(int32, optional, tag = "1", default = "-1")]
5092    pub player_id_1: ::core::option::Option<i32>,
5093    #[prost(int32, optional, tag = "2", default = "-1")]
5094    pub player_id_2: ::core::option::Option<i32>,
5095}
5096#[derive(serde::Serialize, serde::Deserialize)]
5097#[allow(clippy::derive_partial_eq_without_eq)]
5098#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5099pub struct CDotaUserMsgHotPotatoExploded {
5100    #[prost(int32, optional, tag = "1", default = "-1")]
5101    pub player_id: ::core::option::Option<i32>,
5102}
5103#[derive(serde::Serialize, serde::Deserialize)]
5104#[allow(clippy::derive_partial_eq_without_eq)]
5105#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5106pub struct CDotaUserMsgWkArcanaProgress {
5107    #[prost(uint32, optional, tag = "1", default = "16777215")]
5108    pub ehandle: ::core::option::Option<u32>,
5109    #[prost(uint32, optional, tag = "2")]
5110    pub arcana_level: ::core::option::Option<u32>,
5111    #[prost(uint32, optional, tag = "3")]
5112    pub hero_id: ::core::option::Option<u32>,
5113}
5114#[derive(serde::Serialize, serde::Deserialize)]
5115#[allow(clippy::derive_partial_eq_without_eq)]
5116#[derive(Clone, PartialEq, ::prost::Message)]
5117pub struct CDotaUserMsgGuildChallengeProgress {
5118    #[prost(message, repeated, tag = "1")]
5119    pub player_progress:
5120        ::prost::alloc::vec::Vec<cdota_user_msg_guild_challenge_progress::PlayerProgress>,
5121    #[prost(uint32, optional, tag = "2")]
5122    pub guild_id: ::core::option::Option<u32>,
5123    #[prost(uint32, optional, tag = "3")]
5124    pub challenge_instance_id: ::core::option::Option<u32>,
5125    #[prost(uint32, optional, tag = "4")]
5126    pub challenge_parameter: ::core::option::Option<u32>,
5127    #[prost(
5128        enumeration = "cdota_user_msg_guild_challenge_progress::EChallengeType",
5129        optional,
5130        tag = "5",
5131        default = "KEChallengeTypeInvalid"
5132    )]
5133    pub challenge_type: ::core::option::Option<i32>,
5134    #[prost(uint32, optional, tag = "7")]
5135    pub challenge_progress_at_start: ::core::option::Option<u32>,
5136    #[prost(bool, optional, tag = "8")]
5137    pub complete: ::core::option::Option<bool>,
5138}
5139/// Nested message and enum types in `CDOTAUserMsg_GuildChallenge_Progress`.
5140pub mod cdota_user_msg_guild_challenge_progress {
5141    #[derive(serde::Serialize, serde::Deserialize)]
5142    #[allow(clippy::derive_partial_eq_without_eq)]
5143    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
5144    pub struct PlayerProgress {
5145        #[prost(int32, optional, tag = "1", default = "-1")]
5146        pub player_id: ::core::option::Option<i32>,
5147        #[prost(uint32, optional, tag = "6")]
5148        pub progress: ::core::option::Option<u32>,
5149    }
5150    #[derive(
5151        serde::Serialize,
5152        serde::Deserialize,
5153        Clone,
5154        Copy,
5155        Debug,
5156        PartialEq,
5157        Eq,
5158        Hash,
5159        PartialOrd,
5160        Ord,
5161        ::prost::Enumeration,
5162    )]
5163    #[repr(i32)]
5164    pub enum EChallengeType {
5165        KEChallengeTypeInvalid = 0,
5166        KEChallengeTypeCooperative = 1,
5167        KEChallengeTypeContract = 2,
5168    }
5169}
5170#[derive(serde::Serialize, serde::Deserialize)]
5171#[allow(clippy::derive_partial_eq_without_eq)]
5172#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5173pub struct CDotaUserMsgWrArcanaProgress {
5174    #[prost(uint32, optional, tag = "1", default = "16777215")]
5175    pub ehandle: ::core::option::Option<u32>,
5176    #[prost(uint32, optional, tag = "2", default = "16777215")]
5177    pub target_ehandle: ::core::option::Option<u32>,
5178    #[prost(uint32, optional, tag = "3")]
5179    pub arrows_landed: ::core::option::Option<u32>,
5180    #[prost(uint32, optional, tag = "4")]
5181    pub damage_dealt: ::core::option::Option<u32>,
5182    #[prost(uint32, optional, tag = "5")]
5183    pub target_hp: ::core::option::Option<u32>,
5184    #[prost(uint32, optional, tag = "6")]
5185    pub target_max_hp: ::core::option::Option<u32>,
5186    #[prost(uint32, optional, tag = "7")]
5187    pub arcana_level: ::core::option::Option<u32>,
5188}
5189#[derive(serde::Serialize, serde::Deserialize)]
5190#[allow(clippy::derive_partial_eq_without_eq)]
5191#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5192pub struct CDotaUserMsgWrArcanaSummary {
5193    #[prost(uint32, optional, tag = "1", default = "16777215")]
5194    pub ehandle: ::core::option::Option<u32>,
5195    #[prost(uint32, optional, tag = "2", default = "16777215")]
5196    pub target_ehandle: ::core::option::Option<u32>,
5197    #[prost(uint32, optional, tag = "3")]
5198    pub arrows_landed: ::core::option::Option<u32>,
5199    #[prost(uint32, optional, tag = "4")]
5200    pub damage_dealt: ::core::option::Option<u32>,
5201    #[prost(uint32, optional, tag = "5")]
5202    pub target_hp: ::core::option::Option<u32>,
5203    #[prost(uint32, optional, tag = "6")]
5204    pub target_max_hp: ::core::option::Option<u32>,
5205    #[prost(uint32, optional, tag = "7")]
5206    pub arcana_level: ::core::option::Option<u32>,
5207    #[prost(bool, optional, tag = "8")]
5208    pub success: ::core::option::Option<bool>,
5209}
5210#[derive(serde::Serialize, serde::Deserialize)]
5211#[allow(clippy::derive_partial_eq_without_eq)]
5212#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5213pub struct CDotaUserMsgEmptyItemSlotAlert {
5214    #[prost(int32, optional, tag = "1", default = "-1")]
5215    pub source_player_id: ::core::option::Option<i32>,
5216    #[prost(int32, optional, tag = "2", default = "-1")]
5217    pub target_player_id: ::core::option::Option<i32>,
5218    #[prost(int32, optional, tag = "3")]
5219    pub slot_index: ::core::option::Option<i32>,
5220    #[prost(int32, optional, tag = "4")]
5221    pub cooldown_seconds: ::core::option::Option<i32>,
5222}
5223#[derive(serde::Serialize, serde::Deserialize)]
5224#[allow(clippy::derive_partial_eq_without_eq)]
5225#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5226pub struct CDotaUserMsgAghsStatusAlert {
5227    #[prost(int32, optional, tag = "1", default = "-1")]
5228    pub source_player_id: ::core::option::Option<i32>,
5229    #[prost(int32, optional, tag = "2", default = "-1")]
5230    pub target_player_id: ::core::option::Option<i32>,
5231    #[prost(int32, optional, tag = "3", default = "-1")]
5232    pub target_entindex: ::core::option::Option<i32>,
5233    #[prost(uint32, optional, tag = "4")]
5234    pub alert_type: ::core::option::Option<u32>,
5235    #[prost(bool, optional, tag = "5")]
5236    pub has_scepter: ::core::option::Option<bool>,
5237    #[prost(bool, optional, tag = "6")]
5238    pub has_shard: ::core::option::Option<bool>,
5239}
5240#[derive(serde::Serialize, serde::Deserialize)]
5241#[allow(clippy::derive_partial_eq_without_eq)]
5242#[derive(Clone, PartialEq, ::prost::Message)]
5243pub struct CDotaUserMsgMutedPlayers {
5244    #[prost(int32, repeated, packed = "false", tag = "1")]
5245    pub text_muted_player_ids: ::prost::alloc::vec::Vec<i32>,
5246    #[prost(int32, repeated, packed = "false", tag = "2")]
5247    pub voice_muted_player_ids: ::prost::alloc::vec::Vec<i32>,
5248}
5249#[derive(serde::Serialize, serde::Deserialize)]
5250#[allow(clippy::derive_partial_eq_without_eq)]
5251#[derive(Clone, PartialEq, ::prost::Message)]
5252pub struct CDotaUserMsgContextualTip {
5253    #[prost(int32, optional, tag = "1")]
5254    pub tip_id: ::core::option::Option<i32>,
5255    #[prost(string, repeated, tag = "2")]
5256    pub referenced_abilities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5257    #[prost(string, repeated, tag = "3")]
5258    pub referenced_units: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5259    #[prost(string, repeated, tag = "4")]
5260    pub panorama_classes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5261    #[prost(bool, optional, tag = "5")]
5262    pub force_annotation: ::core::option::Option<bool>,
5263    #[prost(int32, optional, tag = "6")]
5264    pub variant: ::core::option::Option<i32>,
5265    #[prost(int32, optional, tag = "7")]
5266    pub int_param: ::core::option::Option<i32>,
5267    #[prost(int32, optional, tag = "8")]
5268    pub int_param2: ::core::option::Option<i32>,
5269    #[prost(float, optional, tag = "9")]
5270    pub float_param: ::core::option::Option<f32>,
5271    #[prost(float, optional, tag = "10")]
5272    pub float_param2: ::core::option::Option<f32>,
5273    #[prost(string, optional, tag = "11")]
5274    pub string_param: ::core::option::Option<::prost::alloc::string::String>,
5275    #[prost(string, optional, tag = "12")]
5276    pub string_param2: ::core::option::Option<::prost::alloc::string::String>,
5277    #[prost(string, optional, tag = "13")]
5278    pub tip_text_override: ::core::option::Option<::prost::alloc::string::String>,
5279    #[prost(string, optional, tag = "14")]
5280    pub tip_annotation_override: ::core::option::Option<::prost::alloc::string::String>,
5281    #[prost(string, optional, tag = "15")]
5282    pub panorama_snippet: ::core::option::Option<::prost::alloc::string::String>,
5283}
5284#[derive(serde::Serialize, serde::Deserialize)]
5285#[allow(clippy::derive_partial_eq_without_eq)]
5286#[derive(Clone, PartialEq, ::prost::Message)]
5287pub struct CDotaUserMsgChatMessage {
5288    #[prost(int32, optional, tag = "1", default = "-1")]
5289    pub source_player_id: ::core::option::Option<i32>,
5290    #[prost(uint32, optional, tag = "2")]
5291    pub channel_type: ::core::option::Option<u32>,
5292    #[prost(string, optional, tag = "3")]
5293    pub message_text: ::core::option::Option<::prost::alloc::string::String>,
5294}
5295#[derive(serde::Serialize, serde::Deserialize)]
5296#[allow(clippy::derive_partial_eq_without_eq)]
5297#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5298pub struct CDotaUserMsgRockPaperScissorsStarted {
5299    #[prost(int32, optional, tag = "1", default = "-1")]
5300    pub player_id_source: ::core::option::Option<i32>,
5301    #[prost(int32, optional, tag = "2", default = "-1")]
5302    pub player_id_target: ::core::option::Option<i32>,
5303}
5304#[derive(serde::Serialize, serde::Deserialize)]
5305#[allow(clippy::derive_partial_eq_without_eq)]
5306#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5307pub struct CDotaUserMsgRockPaperScissorsFinished {
5308    #[prost(int32, optional, tag = "1", default = "-1")]
5309    pub player_id_1: ::core::option::Option<i32>,
5310    #[prost(int32, optional, tag = "2", default = "-1")]
5311    pub player_id_2: ::core::option::Option<i32>,
5312    #[prost(int32, optional, tag = "3")]
5313    pub player_1_choice: ::core::option::Option<i32>,
5314    #[prost(int32, optional, tag = "4")]
5315    pub player_2_choice: ::core::option::Option<i32>,
5316}
5317#[derive(serde::Serialize, serde::Deserialize)]
5318#[allow(clippy::derive_partial_eq_without_eq)]
5319#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5320pub struct CDotaUserMsgDuelOpponentKilled {
5321    #[prost(int32, optional, tag = "1")]
5322    pub player_id_winner: ::core::option::Option<i32>,
5323    #[prost(int32, optional, tag = "2")]
5324    pub player_id_loser: ::core::option::Option<i32>,
5325}
5326#[derive(serde::Serialize, serde::Deserialize)]
5327#[allow(clippy::derive_partial_eq_without_eq)]
5328#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5329pub struct CDotaUserMsgDuelAccepted {
5330    #[prost(int32, optional, tag = "1")]
5331    pub player_id_1: ::core::option::Option<i32>,
5332    #[prost(int32, optional, tag = "2")]
5333    pub player_id_2: ::core::option::Option<i32>,
5334}
5335#[derive(serde::Serialize, serde::Deserialize)]
5336#[allow(clippy::derive_partial_eq_without_eq)]
5337#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5338pub struct CDotaUserMsgDuelRequested {
5339    #[prost(int32, optional, tag = "1", default = "-1")]
5340    pub player_id_requestor: ::core::option::Option<i32>,
5341}
5342#[derive(serde::Serialize, serde::Deserialize)]
5343#[allow(clippy::derive_partial_eq_without_eq)]
5344#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5345pub struct CDotaUserMsgMuertaReleaseEventAssignedTargetKilled {
5346    #[prost(int32, required, tag = "1", default = "-1")]
5347    pub player_id_killer: i32,
5348    #[prost(int32, required, tag = "2", default = "-1")]
5349    pub player_id_target: i32,
5350    #[prost(int32, required, tag = "3")]
5351    pub points: i32,
5352    #[prost(int32, required, tag = "4")]
5353    pub points_total: i32,
5354    #[prost(bool, required, tag = "5")]
5355    pub last_hit: bool,
5356}
5357#[derive(serde::Serialize, serde::Deserialize)]
5358#[allow(clippy::derive_partial_eq_without_eq)]
5359#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5360pub struct CDotaUserMsgPlayerDraftSuggestPick {
5361    #[prost(int32, optional, tag = "1", default = "-1")]
5362    pub player_id: ::core::option::Option<i32>,
5363    #[prost(int32, optional, tag = "2", default = "-1")]
5364    pub suggestion_player_id: ::core::option::Option<i32>,
5365}
5366#[derive(serde::Serialize, serde::Deserialize)]
5367#[allow(clippy::derive_partial_eq_without_eq)]
5368#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5369pub struct CDotaUserMsgPlayerDraftPick {
5370    #[prost(int32, optional, tag = "1", default = "-1")]
5371    pub player_id_captain: ::core::option::Option<i32>,
5372    #[prost(int32, optional, tag = "2", default = "-1")]
5373    pub player_id_target: ::core::option::Option<i32>,
5374    #[prost(int32, optional, tag = "3")]
5375    pub team: ::core::option::Option<i32>,
5376}
5377#[derive(serde::Serialize, serde::Deserialize)]
5378#[allow(clippy::derive_partial_eq_without_eq)]
5379#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5380pub struct CDotaUserMsgFacetPing {
5381    #[prost(int32, optional, tag = "1", default = "-1")]
5382    pub player_id: ::core::option::Option<i32>,
5383    #[prost(uint32, optional, tag = "2")]
5384    pub facet_strhash: ::core::option::Option<u32>,
5385    #[prost(uint32, optional, tag = "3")]
5386    pub entity_id: ::core::option::Option<u32>,
5387    #[prost(bool, optional, tag = "4")]
5388    pub all_chat: ::core::option::Option<bool>,
5389}
5390#[derive(serde::Serialize, serde::Deserialize)]
5391#[allow(clippy::derive_partial_eq_without_eq)]
5392#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5393pub struct CDotaUserMsgInnatePing {
5394    #[prost(int32, optional, tag = "1", default = "-1")]
5395    pub player_id: ::core::option::Option<i32>,
5396    #[prost(uint32, optional, tag = "2")]
5397    pub entity_id: ::core::option::Option<u32>,
5398    #[prost(bool, optional, tag = "3")]
5399    pub all_chat: ::core::option::Option<bool>,
5400}
5401#[derive(
5402    serde::Serialize,
5403    serde::Deserialize,
5404    Clone,
5405    Copy,
5406    Debug,
5407    PartialEq,
5408    Eq,
5409    Hash,
5410    PartialOrd,
5411    Ord,
5412    ::prost::Enumeration,
5413)]
5414#[repr(i32)]
5415pub enum EDotaUserMessages {
5416    DotaUmAddUnitToSelection = 464,
5417    DotaUmAiDebugLine = 465,
5418    DotaUmChatEvent = 466,
5419    DotaUmCombatHeroPositions = 467,
5420    DotaUmCombatLogData = 468,
5421    DotaUmCombatLogBulkData = 470,
5422    DotaUmCreateLinearProjectile = 471,
5423    DotaUmDestroyLinearProjectile = 472,
5424    DotaUmDodgeTrackingProjectiles = 473,
5425    DotaUmGlobalLightColor = 474,
5426    DotaUmGlobalLightDirection = 475,
5427    DotaUmInvalidCommand = 476,
5428    DotaUmLocationPing = 477,
5429    DotaUmMapLine = 478,
5430    DotaUmMiniKillCamInfo = 479,
5431    DotaUmMinimapDebugPoint = 480,
5432    DotaUmMinimapEvent = 481,
5433    DotaUmNevermoreRequiem = 482,
5434    DotaUmOverheadEvent = 483,
5435    DotaUmSetNextAutobuyItem = 484,
5436    DotaUmSharedCooldown = 485,
5437    DotaUmSpectatorPlayerClick = 486,
5438    DotaUmTutorialTipInfo = 487,
5439    DotaUmUnitEvent = 488,
5440    DotaUmParticleManager = 489,
5441    DotaUmBotChat = 490,
5442    DotaUmHudError = 491,
5443    DotaUmItemPurchased = 492,
5444    DotaUmPing = 493,
5445    DotaUmItemFound = 494,
5446    DotaUmCharacterSpeakConcept = 495,
5447    DotaUmSwapVerify = 496,
5448    DotaUmWorldLine = 497,
5449    DotaUmTournamentDrop = 498,
5450    DotaUmItemAlert = 499,
5451    DotaUmHalloweenDrops = 500,
5452    DotaUmChatWheel = 501,
5453    DotaUmReceivedXmasGift = 502,
5454    DotaUmUpdateSharedContent = 503,
5455    DotaUmTutorialRequestExp = 504,
5456    DotaUmTutorialPingMinimap = 505,
5457    DotaUmGamerulesStateChanged = 506,
5458    DotaUmShowSurvey = 507,
5459    DotaUmTutorialFade = 508,
5460    DotaUmAddQuestLogEntry = 509,
5461    DotaUmSendStatPopup = 510,
5462    DotaUmTutorialFinish = 511,
5463    DotaUmSendRoshanPopup = 512,
5464    DotaUmSendGenericToolTip = 513,
5465    DotaUmSendFinalGold = 514,
5466    DotaUmCustomMsg = 515,
5467    DotaUmCoachHudPing = 516,
5468    DotaUmClientLoadGridNav = 517,
5469    DotaUmTeProjectile = 518,
5470    DotaUmTeProjectileLoc = 519,
5471    DotaUmTeDotaBloodImpact = 520,
5472    DotaUmTeUnitAnimation = 521,
5473    DotaUmTeUnitAnimationEnd = 522,
5474    DotaUmAbilityPing = 523,
5475    DotaUmShowGenericPopup = 524,
5476    DotaUmVoteStart = 525,
5477    DotaUmVoteUpdate = 526,
5478    DotaUmVoteEnd = 527,
5479    DotaUmBoosterState = 528,
5480    DotaUmWillPurchaseAlert = 529,
5481    DotaUmTutorialMinimapPosition = 530,
5482    DotaUmPlayerMmr = 531,
5483    DotaUmAbilitySteal = 532,
5484    DotaUmCourierKilledAlert = 533,
5485    DotaUmEnemyItemAlert = 534,
5486    DotaUmStatsMatchDetails = 535,
5487    DotaUmMiniTaunt = 536,
5488    DotaUmBuyBackStateAlert = 537,
5489    DotaUmSpeechBubble = 538,
5490    DotaUmCustomHeaderMessage = 539,
5491    DotaUmQuickBuyAlert = 540,
5492    DotaUmStatsHeroDetails = 541,
5493    DotaUmPredictionResult = 542,
5494    DotaUmModifierAlert = 543,
5495    DotaUmHpManaAlert = 544,
5496    DotaUmGlyphAlert = 545,
5497    DotaUmBeastChat = 546,
5498    DotaUmSpectatorPlayerUnitOrders = 547,
5499    DotaUmCustomHudElementCreate = 548,
5500    DotaUmCustomHudElementModify = 549,
5501    DotaUmCustomHudElementDestroy = 550,
5502    DotaUmCompendiumState = 551,
5503    DotaUmProjectionAbility = 552,
5504    DotaUmProjectionEvent = 553,
5505    DotaUmCombatLogDataHltv = 554,
5506    DotaUmXpAlert = 555,
5507    DotaUmUpdateQuestProgress = 556,
5508    DotaUmMatchMetadata = 557,
5509    DotaUmMatchDetails = 558,
5510    DotaUmQuestStatus = 559,
5511    DotaUmSuggestHeroPick = 560,
5512    DotaUmSuggestHeroRole = 561,
5513    DotaUmKillcamDamageTaken = 562,
5514    DotaUmSelectPenaltyGold = 563,
5515    DotaUmRollDiceResult = 564,
5516    DotaUmFlipCoinResult = 565,
5517    DotaUmRequestItemSuggestions = 566,
5518    DotaUmTeamCaptainChanged = 567,
5519    DotaUmSendRoshanSpectatorPhase = 568,
5520    DotaUmChatWheelCooldown = 569,
5521    DotaUmDismissAllStatPopups = 570,
5522    DotaUmTeDestroyProjectile = 571,
5523    DotaUmHeroRelicProgress = 572,
5524    DotaUmAbilityDraftRequestAbility = 573,
5525    DotaUmItemSold = 574,
5526    DotaUmDamageReport = 575,
5527    DotaUmSalutePlayer = 576,
5528    DotaUmTipAlert = 577,
5529    DotaUmReplaceQueryUnit = 578,
5530    DotaUmEmptyTeleportAlert = 579,
5531    DotaUmMarsArenaOfBloodAttack = 580,
5532    DotaUmEsArcanaCombo = 581,
5533    DotaUmEsArcanaComboSummary = 582,
5534    DotaUmHighFiveLeftHanging = 583,
5535    DotaUmHighFiveCompleted = 584,
5536    DotaUmShovelUnearth = 585,
5537    DotaEmInvokerSpellCast = 586,
5538    DotaUmRadarAlert = 587,
5539    DotaUmAllStarEvent = 588,
5540    DotaUmTalentTreeAlert = 589,
5541    DotaUmQueuedOrderRemoved = 590,
5542    DotaUmDebugChallenge = 591,
5543    DotaUmOmArcanaCombo = 592,
5544    DotaUmFoundNeutralItem = 593,
5545    DotaUmOutpostCaptured = 594,
5546    DotaUmOutpostGrantedXp = 595,
5547    DotaUmMoveCameraToUnit = 596,
5548    DotaUmPauseMinigameData = 597,
5549    DotaUmVersusScenePlayerBehavior = 598,
5550    DotaUmQoPArcanaSummary = 600,
5551    DotaUmHotPotatoCreated = 601,
5552    DotaUmHotPotatoExploded = 602,
5553    DotaUmWkArcanaProgress = 603,
5554    DotaUmGuildChallengeProgress = 604,
5555    DotaUmWrArcanaProgress = 605,
5556    DotaUmWrArcanaSummary = 606,
5557    DotaUmEmptyItemSlotAlert = 607,
5558    DotaUmAghsStatusAlert = 608,
5559    DotaUmPingConfirmation = 609,
5560    DotaUmMutedPlayers = 610,
5561    DotaUmContextualTip = 611,
5562    DotaUmChatMessage = 612,
5563    DotaUmNeutralCampAlert = 613,
5564    DotaUmRockPaperScissorsStarted = 614,
5565    DotaUmRockPaperScissorsFinished = 615,
5566    DotaUmDuelOpponentKilled = 616,
5567    DotaUmDuelAccepted = 617,
5568    DotaUmDuelRequested = 618,
5569    DotaUmMuertaReleaseEventAssignedTargetKilled = 619,
5570    DotaUmPlayerDraftSuggestPick = 620,
5571    DotaUmPlayerDraftPick = 621,
5572    DotaUmUpdateLinearProjectileCpData = 622,
5573    DotaUmGiftPlayer = 623,
5574    DotaUmFacetPing = 624,
5575    DotaUmInnatePing = 625,
5576}
5577#[derive(
5578    serde::Serialize,
5579    serde::Deserialize,
5580    Clone,
5581    Copy,
5582    Debug,
5583    PartialEq,
5584    Eq,
5585    Hash,
5586    PartialOrd,
5587    Ord,
5588    ::prost::Enumeration,
5589)]
5590#[repr(i32)]
5591pub enum DotaChatMessage {
5592    ChatMessageInvalid = -1,
5593    ChatMessageHeroKill = 0,
5594    ChatMessageHeroDeny = 1,
5595    ChatMessageBarracksKill = 2,
5596    ChatMessageTowerKill = 3,
5597    ChatMessageTowerDeny = 4,
5598    ChatMessageFirstblood = 5,
5599    ChatMessageStreakKill = 6,
5600    ChatMessageBuyback = 7,
5601    ChatMessageAegis = 8,
5602    ChatMessageRoshanKill = 9,
5603    ChatMessageCourierLost = 10,
5604    ChatMessageCourierRespawned = 11,
5605    ChatMessageGlyphUsed = 12,
5606    ChatMessageItemPurchase = 13,
5607    ChatMessageConnect = 14,
5608    ChatMessageDisconnect = 15,
5609    ChatMessageDisconnectWaitForReconnect = 16,
5610    ChatMessageDisconnectTimeRemaining = 17,
5611    ChatMessageDisconnectTimeRemainingPlural = 18,
5612    ChatMessageReconnect = 19,
5613    ChatMessagePlayerLeft = 20,
5614    ChatMessageSafeToLeave = 21,
5615    ChatMessageRunePickup = 22,
5616    ChatMessageRuneBottle = 23,
5617    ChatMessageRuneDeny = 114,
5618    ChatMessageInthebag = 24,
5619    ChatMessageSecretshop = 25,
5620    ChatMessageItemAutopurchased = 26,
5621    ChatMessageItemsCombined = 27,
5622    ChatMessageSuperCreeps = 28,
5623    ChatMessageCantUseActionItem = 29,
5624    ChatMessageCantpause = 31,
5625    ChatMessageNopausesleft = 32,
5626    ChatMessageCantpauseyet = 33,
5627    ChatMessagePaused = 34,
5628    ChatMessageUnpauseCountdown = 35,
5629    ChatMessageUnpaused = 36,
5630    ChatMessageAutoUnpaused = 37,
5631    ChatMessageYoupaused = 38,
5632    ChatMessageCantunpauseteam = 39,
5633    ChatMessageVoiceTextBanned = 41,
5634    ChatMessageSpectatorsWatchingThisGame = 42,
5635    ChatMessageReportReminder = 43,
5636    ChatMessageEconItem = 44,
5637    ChatMessageTaunt = 45,
5638    ChatMessageRandom = 46,
5639    ChatMessageRdTurn = 47,
5640    ChatMessageDropRateBonus = 49,
5641    ChatMessageNoBattlePoints = 50,
5642    ChatMessageDeniedAegis = 51,
5643    ChatMessageInformational = 52,
5644    ChatMessageAegisStolen = 53,
5645    ChatMessageRoshanCandy = 54,
5646    ChatMessageItemGifted = 55,
5647    ChatMessageHeroKillWithGreevil = 56,
5648    ChatMessageHoldoutTowerDestroyed = 57,
5649    ChatMessageHoldoutWallDestroyed = 58,
5650    ChatMessageHoldoutWallFinished = 59,
5651    ChatMessagePlayerLeftLimitedHero = 62,
5652    ChatMessageAbandonLimitedHeroExplanation = 63,
5653    ChatMessageDisconnectLimitedHero = 64,
5654    ChatMessageLowPriorityCompletedExplanation = 65,
5655    ChatMessageRecruitmentDropRateBonus = 66,
5656    ChatMessageFrostivusShiningBoosterActive = 67,
5657    ChatMessagePlayerLeftAfk = 73,
5658    ChatMessagePlayerLeftDisconnectedTooLong = 74,
5659    ChatMessagePlayerAbandoned = 75,
5660    ChatMessagePlayerAbandonedAfk = 76,
5661    ChatMessagePlayerAbandonedDisconnectedTooLong = 77,
5662    ChatMessageWillNotBeScored = 78,
5663    ChatMessageWillNotBeScoredRanked = 79,
5664    ChatMessageWillNotBeScoredNetwork = 80,
5665    ChatMessageWillNotBeScoredNetworkRanked = 81,
5666    ChatMessageCanQuitWithoutAbandon = 82,
5667    ChatMessageRankedGameStillScoredLeaversGetLoss = 83,
5668    ChatMessageAbandonRankedBeforeFirstBloodParty = 84,
5669    ChatMessageCompendiumLevel = 85,
5670    ChatMessageVictoryPredictionStreak = 86,
5671    ChatMessageAssassinAnnounce = 87,
5672    ChatMessageAssassinSuccess = 88,
5673    ChatMessageAssassinDenied = 89,
5674    ChatMessageVictoryPredictionSingleUserConfirm = 90,
5675    ChatMessageEffigyKill = 91,
5676    ChatMessageVoiceTextBannedOverflow = 92,
5677    ChatMessageYearBeastKilled = 93,
5678    ChatMessagePauseCountdown = 94,
5679    ChatMessageCoinsWagered = 95,
5680    ChatMessageHeroNominatedBan = 96,
5681    ChatMessageHeroBanned = 97,
5682    ChatMessageHeroBanCount = 98,
5683    ChatMessageRiverPainted = 99,
5684    ChatMessageScanUsed = 100,
5685    ChatMessageShrineKilled = 101,
5686    ChatMessageWagerTokenSpent = 102,
5687    ChatMessageRankWager = 103,
5688    ChatMessageNewPlayerReminder = 104,
5689    ChatMessageObserverWardKilled = 105,
5690    ChatMessageSentryWardKilled = 106,
5691    ChatMessageItemPlacedInNeutralStash = 107,
5692    ChatMessageHeroChoiceInvalid = 108,
5693    ChatMessageBounty = 109,
5694    ChatMessageAbilityDraftStart = 110,
5695    ChatMessageHeroFoundCandy = 111,
5696    ChatMessageAbilityDraftRandomed = 112,
5697    ChatMessagePrivateCoachConnected = 113,
5698    ChatMessageCantPauseTooEarly = 115,
5699    ChatMessageHeroKillWithPenguin = 116,
5700    ChatMessageMinibossKill = 117,
5701    ChatMessagePlayerInGameBanText = 118,
5702    ChatMessageBannerPlanted = 119,
5703}
5704#[derive(
5705    serde::Serialize,
5706    serde::Deserialize,
5707    Clone,
5708    Copy,
5709    Debug,
5710    PartialEq,
5711    Eq,
5712    Hash,
5713    PartialOrd,
5714    Ord,
5715    ::prost::Enumeration,
5716)]
5717#[repr(i32)]
5718pub enum DotaNoBattlePointsReasons {
5719    NoBattlePointsWrongLobbyType = 1,
5720    NoBattlePointsPracticeBots = 2,
5721    NoBattlePointsCheatsEnabled = 3,
5722    NoBattlePointsLowPriority = 4,
5723}
5724#[derive(
5725    serde::Serialize,
5726    serde::Deserialize,
5727    Clone,
5728    Copy,
5729    Debug,
5730    PartialEq,
5731    Eq,
5732    Hash,
5733    PartialOrd,
5734    Ord,
5735    ::prost::Enumeration,
5736)]
5737#[repr(i32)]
5738pub enum DotaChatInformational {
5739    InfoCoopBattlePointsRules = 1,
5740    InfoFrostivusAbandonReminder = 2,
5741    InfoRankedReminder = 3,
5742    InfoCoopLowPriorityPassiveReminder = 4,
5743    InfoCustomGamePenaltyReminder = 5,
5744}
5745#[derive(
5746    serde::Serialize,
5747    serde::Deserialize,
5748    Clone,
5749    Copy,
5750    Debug,
5751    PartialEq,
5752    Eq,
5753    Hash,
5754    PartialOrd,
5755    Ord,
5756    ::prost::Enumeration,
5757)]
5758#[repr(i32)]
5759pub enum DotaAbilityPingType {
5760    AbilityPingReady = 1,
5761    AbilityPingMana = 2,
5762    AbilityPingCooldown = 3,
5763    AbilityPingEnemy = 4,
5764    AbilityPingUnlearned = 5,
5765    AbilityPingInbackpack = 6,
5766    AbilityPingInstash = 7,
5767    AbilityPingOncourier = 8,
5768    AbilityPingAlly = 9,
5769    AbilityPingLearnReady = 10,
5770    AbilityPingWillLearn = 11,
5771    AbilityPingFutureLearn = 12,
5772    AbilityPingNeutralOffer = 13,
5773    AbilityPingNeutralRequest = 14,
5774    AbilityPingNeutralEquip = 15,
5775    AbilityPingIncourierbackpack = 16,
5776}
5777#[derive(
5778    serde::Serialize,
5779    serde::Deserialize,
5780    Clone,
5781    Copy,
5782    Debug,
5783    PartialEq,
5784    Eq,
5785    Hash,
5786    PartialOrd,
5787    Ord,
5788    ::prost::Enumeration,
5789)]
5790#[repr(i32)]
5791pub enum DotaReplayStateEvent {
5792    GameStart = 1,
5793    StartingHorn = 2,
5794    FirstBlood = 3,
5795    Showcase = 4,
5796    PostGame = 5,
5797    WaitForMap = 6,
5798}
5799#[derive(
5800    serde::Serialize,
5801    serde::Deserialize,
5802    Clone,
5803    Copy,
5804    Debug,
5805    PartialEq,
5806    Eq,
5807    Hash,
5808    PartialOrd,
5809    Ord,
5810    ::prost::Enumeration,
5811)]
5812#[repr(i32)]
5813pub enum EDotaEntityMessages {
5814    DotaUnitSpeech = 0,
5815    DotaUnitSpeechMute = 1,
5816    DotaUnitAddGesture = 2,
5817    DotaUnitRemoveGesture = 3,
5818    DotaUnitRemoveAllGestures = 4,
5819    DotaUnitFadeGesture = 6,
5820    DotaUnitSpeechClientsideRules = 7,
5821}
5822#[derive(
5823    serde::Serialize,
5824    serde::Deserialize,
5825    Clone,
5826    Copy,
5827    Debug,
5828    PartialEq,
5829    Eq,
5830    Hash,
5831    PartialOrd,
5832    Ord,
5833    ::prost::Enumeration,
5834)]
5835#[repr(i32)]
5836pub enum DotaOverheadAlert {
5837    OverheadAlertGold = 0,
5838    OverheadAlertDeny = 1,
5839    OverheadAlertCritical = 2,
5840    OverheadAlertXp = 3,
5841    OverheadAlertBonusSpellDamage = 4,
5842    OverheadAlertMiss = 5,
5843    OverheadAlertDamage = 6,
5844    OverheadAlertEvade = 7,
5845    OverheadAlertBlock = 8,
5846    OverheadAlertBonusPoisonDamage = 9,
5847    OverheadAlertHeal = 10,
5848    OverheadAlertManaAdd = 11,
5849    OverheadAlertManaLoss = 12,
5850    OverheadAlertLastHitEarly = 13,
5851    OverheadAlertLastHitClose = 14,
5852    OverheadAlertLastHitMiss = 15,
5853    OverheadAlertMagicalBlock = 16,
5854    OverheadAlertIncomingDamage = 17,
5855    OverheadAlertOutgoingDamage = 18,
5856    OverheadAlertDisableResist = 19,
5857    OverheadAlertDeath = 20,
5858    OverheadAlertBlocked = 21,
5859    OverheadAlertItemReceived = 22,
5860    OverheadAlertShard = 23,
5861    OverheadAlertDeadlyBlow = 24,
5862    OverheadAlertForceMiss = 25,
5863}
5864#[derive(
5865    serde::Serialize,
5866    serde::Deserialize,
5867    Clone,
5868    Copy,
5869    Debug,
5870    PartialEq,
5871    Eq,
5872    Hash,
5873    PartialOrd,
5874    Ord,
5875    ::prost::Enumeration,
5876)]
5877#[repr(i32)]
5878pub enum DotaRoshanPhase {
5879    KSrspRoshanAlive = 0,
5880    KSrspRoshanBaseTimer = 1,
5881    KSrspRoshanVisibleTimer = 2,
5882}
5883#[derive(
5884    serde::Serialize,
5885    serde::Deserialize,
5886    Clone,
5887    Copy,
5888    Debug,
5889    PartialEq,
5890    Eq,
5891    Hash,
5892    PartialOrd,
5893    Ord,
5894    ::prost::Enumeration,
5895)]
5896#[repr(i32)]
5897pub enum DotaPositionCategory {
5898    DotaPositionNone = 0,
5899    DotaPositionBottomLane = 1,
5900    DotaPositionMidLane = 2,
5901    DotaPositionTopLane = 3,
5902    DotaPositionRadiantJungle = 4,
5903    DotaPositionDireJungle = 5,
5904    DotaPositionRadiantAncients = 6,
5905    DotaPositionDireAncients = 7,
5906    DotaPositionRadiantSecretShop = 8,
5907    DotaPositionDireSecretShop = 9,
5908    DotaPositionRiver = 10,
5909    DotaPositionRoshanPit = 11,
5910    DotaPositionRadiantBase = 12,
5911    DotaPositionDireBase = 13,
5912    DotaPositionFountain = 14,
5913    DotaPositionOther = 15,
5914}
5915#[derive(
5916    serde::Serialize,
5917    serde::Deserialize,
5918    Clone,
5919    Copy,
5920    Debug,
5921    PartialEq,
5922    Eq,
5923    Hash,
5924    PartialOrd,
5925    Ord,
5926    ::prost::Enumeration,
5927)]
5928#[repr(i32)]
5929pub enum DotaAbilityTargetType {
5930    DotaAbilityTargetNone = 0,
5931    DotaAbilityTargetSelf = 1,
5932    DotaAbilityTargetAllyHero = 2,
5933    DotaAbilityTargetAllyCreep = 3,
5934    DotaAbilityTargetEnemyHero = 4,
5935    DotaAbilityTargetEnemyCreep = 5,
5936}
5937#[derive(
5938    serde::Serialize,
5939    serde::Deserialize,
5940    Clone,
5941    Copy,
5942    Debug,
5943    PartialEq,
5944    Eq,
5945    Hash,
5946    PartialOrd,
5947    Ord,
5948    ::prost::Enumeration,
5949)]
5950#[repr(i32)]
5951pub enum EHeroStatType {
5952    KEHeroStatTypeNone = 0,
5953    KEHeroStatTypeAxeTotalDamage = 2000,
5954    KEHeroStatTypeBattleHungerDamage = 2001,
5955    KEHeroStatTypeCounterHelixDamage = 2002,
5956    KEHeroStatTypeCullingBladeDamage = 2003,
5957    KEHeroStatTypeBerserkersCallCastCount = 2004,
5958    KEHeroStatTypeBerserkersCallHeroesHitAverage = 2005,
5959    KEHeroStatTypeBerserkersCallOtherUnitsHit = 2006,
5960    KEHeroStatTypeBerserkersCallHeroAttacksTaken = 2007,
5961    KEHeroStatTypeBerserkersCallOtherAttacksTaken = 2008,
5962    KEHeroStatTypeBattleHungerCastCount = 2009,
5963    KEHeroStatTypeBattleHungerPotentialDuration = 2010,
5964    KEHeroStatTypeBattleHungerAverageDuration = 2011,
5965    KEHeroStatTypeCounterHelixProcCount = 2012,
5966    KEHeroStatTypeCounterHelixHeroProcCount = 2013,
5967    KEHeroStatTypeCounterHelixHeroesHitAverage = 2014,
5968    KEHeroStatTypeCounterHelixOtherUnitsHitCount = 2015,
5969    KEHeroStatTypeCullingBladeCastCount = 2016,
5970    KEHeroStatTypeCullingBladeKillCount = 2017,
5971    KEHeroStatTypeCullingBladeAverageHealthCulled = 2018,
5972    KEHeroStatTypeCullingBladeAverageDamageAvailable = 2019,
5973    KEHeroStatTypeCullingBladeHeroBuffAverage = 2020,
5974}
5975#[derive(
5976    serde::Serialize,
5977    serde::Deserialize,
5978    Clone,
5979    Copy,
5980    Debug,
5981    PartialEq,
5982    Eq,
5983    Hash,
5984    PartialOrd,
5985    Ord,
5986    ::prost::Enumeration,
5987)]
5988#[repr(i32)]
5989pub enum EPlayerVoiceListenState {
5990    KPvlsNone = 0,
5991    KPvlsDeniedChatBanned = 1,
5992    KPvlsDeniedPartner = 2,
5993    KPvlsDeniedHltvTalkerNotSpectator = 3,
5994    KPvlsDeniedHltvNoTalkerPlayerId = 4,
5995    KPvlsDeniedHltvTalkerNotBroadcaster = 5,
5996    KPvlsDeniedTeamSpectator = 6,
5997    KPvlsDeniedStudent = 8,
5998    KPvlsDeniedPrivateCoach = 9,
5999    KPvlsDenied = 64,
6000    KPvlsAllowHltvTalkerIsBroadcaster = 65,
6001    KPvlsAllowCoBroadcaster = 66,
6002    KPvlsAllowAllChat = 67,
6003    KPvlsAllowStudentToCoach = 68,
6004    KPvlsAllowFellowStudent = 69,
6005    KPvlsAllowTalkerIsCoach = 70,
6006    KPvlsAllowCoachHearTeam = 71,
6007    KPvlsAllowSameTeam = 72,
6008    KPvlsAllowShowcase = 73,
6009    KPvlsAllowPrivateCoach = 74,
6010}
6011#[derive(
6012    serde::Serialize,
6013    serde::Deserialize,
6014    Clone,
6015    Copy,
6016    Debug,
6017    PartialEq,
6018    Eq,
6019    Hash,
6020    PartialOrd,
6021    Ord,
6022    ::prost::Enumeration,
6023)]
6024#[repr(i32)]
6025pub enum EProjectionEvent {
6026    EPeFirstBlood = 0,
6027    EPeKillstreakGodlike = 1,
6028}
6029#[derive(serde::Serialize, serde::Deserialize)]
6030#[allow(clippy::derive_partial_eq_without_eq)]
6031#[derive(Clone, PartialEq, ::prost::Message)]
6032pub struct CMsgVDebugGameSessionIdEvent {
6033    #[prost(int32, optional, tag = "1")]
6034    pub clientid: ::core::option::Option<i32>,
6035    #[prost(string, optional, tag = "2")]
6036    pub gamesessionid: ::core::option::Option<::prost::alloc::string::String>,
6037}
6038#[derive(serde::Serialize, serde::Deserialize)]
6039#[allow(clippy::derive_partial_eq_without_eq)]
6040#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6041pub struct CMsgPlaceDecalEvent {
6042    #[prost(message, optional, tag = "1")]
6043    pub position: ::core::option::Option<CMsgVector>,
6044    #[prost(message, optional, tag = "2")]
6045    pub normal: ::core::option::Option<CMsgVector>,
6046    #[prost(message, optional, tag = "3")]
6047    pub saxis: ::core::option::Option<CMsgVector>,
6048    #[prost(uint32, optional, tag = "4")]
6049    pub decalmaterialindex: ::core::option::Option<u32>,
6050    #[prost(uint32, optional, tag = "5")]
6051    pub flags: ::core::option::Option<u32>,
6052    #[prost(fixed32, optional, tag = "6")]
6053    pub color: ::core::option::Option<u32>,
6054    #[prost(float, optional, tag = "7")]
6055    pub width: ::core::option::Option<f32>,
6056    #[prost(float, optional, tag = "8")]
6057    pub height: ::core::option::Option<f32>,
6058    #[prost(float, optional, tag = "9")]
6059    pub depth: ::core::option::Option<f32>,
6060    #[prost(uint32, optional, tag = "10")]
6061    pub entityhandleindex: ::core::option::Option<u32>,
6062    #[prost(fixed32, optional, tag = "11")]
6063    pub skeletoninstancehash: ::core::option::Option<u32>,
6064    #[prost(int32, optional, tag = "12")]
6065    pub boneindex: ::core::option::Option<i32>,
6066    #[prost(bool, optional, tag = "13")]
6067    pub translucenthit: ::core::option::Option<bool>,
6068    #[prost(bool, optional, tag = "14")]
6069    pub is_adjacent: ::core::option::Option<bool>,
6070}
6071#[derive(serde::Serialize, serde::Deserialize)]
6072#[allow(clippy::derive_partial_eq_without_eq)]
6073#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6074pub struct CMsgClearWorldDecalsEvent {
6075    #[prost(uint32, optional, tag = "1")]
6076    pub flagstoclear: ::core::option::Option<u32>,
6077}
6078#[derive(serde::Serialize, serde::Deserialize)]
6079#[allow(clippy::derive_partial_eq_without_eq)]
6080#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6081pub struct CMsgClearEntityDecalsEvent {
6082    #[prost(uint32, optional, tag = "1")]
6083    pub flagstoclear: ::core::option::Option<u32>,
6084}
6085#[derive(serde::Serialize, serde::Deserialize)]
6086#[allow(clippy::derive_partial_eq_without_eq)]
6087#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6088pub struct CMsgClearDecalsForSkeletonInstanceEvent {
6089    #[prost(uint32, optional, tag = "1")]
6090    pub flagstoclear: ::core::option::Option<u32>,
6091    #[prost(uint32, optional, tag = "2")]
6092    pub entityhandleindex: ::core::option::Option<u32>,
6093    #[prost(uint32, optional, tag = "3")]
6094    pub skeletoninstancehash: ::core::option::Option<u32>,
6095}
6096#[derive(serde::Serialize, serde::Deserialize)]
6097#[allow(clippy::derive_partial_eq_without_eq)]
6098#[derive(Clone, PartialEq, ::prost::Message)]
6099pub struct CMsgSource1LegacyGameEventList {
6100    #[prost(message, repeated, tag = "1")]
6101    pub descriptors: ::prost::alloc::vec::Vec<c_msg_source1_legacy_game_event_list::DescriptorT>,
6102}
6103/// Nested message and enum types in `CMsgSource1LegacyGameEventList`.
6104pub mod c_msg_source1_legacy_game_event_list {
6105    #[derive(serde::Serialize, serde::Deserialize)]
6106    #[allow(clippy::derive_partial_eq_without_eq)]
6107    #[derive(Clone, PartialEq, ::prost::Message)]
6108    pub struct KeyT {
6109        #[prost(int32, optional, tag = "1")]
6110        pub r#type: ::core::option::Option<i32>,
6111        #[prost(string, optional, tag = "2")]
6112        pub name: ::core::option::Option<::prost::alloc::string::String>,
6113    }
6114    #[derive(serde::Serialize, serde::Deserialize)]
6115    #[allow(clippy::derive_partial_eq_without_eq)]
6116    #[derive(Clone, PartialEq, ::prost::Message)]
6117    pub struct DescriptorT {
6118        #[prost(int32, optional, tag = "1")]
6119        pub eventid: ::core::option::Option<i32>,
6120        #[prost(string, optional, tag = "2")]
6121        pub name: ::core::option::Option<::prost::alloc::string::String>,
6122        #[prost(message, repeated, tag = "3")]
6123        pub keys: ::prost::alloc::vec::Vec<KeyT>,
6124    }
6125}
6126#[derive(serde::Serialize, serde::Deserialize)]
6127#[allow(clippy::derive_partial_eq_without_eq)]
6128#[derive(Clone, PartialEq, ::prost::Message)]
6129pub struct CMsgSource1LegacyListenEvents {
6130    #[prost(int32, optional, tag = "1")]
6131    pub playerslot: ::core::option::Option<i32>,
6132    #[prost(uint32, repeated, packed = "false", tag = "2")]
6133    pub eventarraybits: ::prost::alloc::vec::Vec<u32>,
6134}
6135#[derive(serde::Serialize, serde::Deserialize)]
6136#[allow(clippy::derive_partial_eq_without_eq)]
6137#[derive(Clone, PartialEq, ::prost::Message)]
6138pub struct CMsgSource1LegacyGameEvent {
6139    #[prost(string, optional, tag = "1")]
6140    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
6141    #[prost(int32, optional, tag = "2")]
6142    pub eventid: ::core::option::Option<i32>,
6143    #[prost(message, repeated, tag = "3")]
6144    pub keys: ::prost::alloc::vec::Vec<c_msg_source1_legacy_game_event::KeyT>,
6145    #[prost(int32, optional, tag = "4")]
6146    pub server_tick: ::core::option::Option<i32>,
6147    #[prost(int32, optional, tag = "5")]
6148    pub passthrough: ::core::option::Option<i32>,
6149}
6150/// Nested message and enum types in `CMsgSource1LegacyGameEvent`.
6151pub mod c_msg_source1_legacy_game_event {
6152    #[derive(serde::Serialize, serde::Deserialize)]
6153    #[allow(clippy::derive_partial_eq_without_eq)]
6154    #[derive(Clone, PartialEq, ::prost::Message)]
6155    pub struct KeyT {
6156        #[prost(int32, optional, tag = "1")]
6157        pub r#type: ::core::option::Option<i32>,
6158        #[prost(string, optional, tag = "2")]
6159        pub val_string: ::core::option::Option<::prost::alloc::string::String>,
6160        #[prost(float, optional, tag = "3")]
6161        pub val_float: ::core::option::Option<f32>,
6162        #[prost(int32, optional, tag = "4")]
6163        pub val_long: ::core::option::Option<i32>,
6164        #[prost(int32, optional, tag = "5")]
6165        pub val_short: ::core::option::Option<i32>,
6166        #[prost(int32, optional, tag = "6")]
6167        pub val_byte: ::core::option::Option<i32>,
6168        #[prost(bool, optional, tag = "7")]
6169        pub val_bool: ::core::option::Option<bool>,
6170        #[prost(uint64, optional, tag = "8")]
6171        pub val_uint64: ::core::option::Option<u64>,
6172    }
6173}
6174#[derive(serde::Serialize, serde::Deserialize)]
6175#[allow(clippy::derive_partial_eq_without_eq)]
6176#[derive(Clone, PartialEq, ::prost::Message)]
6177pub struct CMsgSosStartSoundEvent {
6178    #[prost(int32, optional, tag = "1")]
6179    pub soundevent_guid: ::core::option::Option<i32>,
6180    #[prost(fixed32, optional, tag = "2")]
6181    pub soundevent_hash: ::core::option::Option<u32>,
6182    #[prost(int32, optional, tag = "3", default = "-1")]
6183    pub source_entity_index: ::core::option::Option<i32>,
6184    #[prost(int32, optional, tag = "4")]
6185    pub seed: ::core::option::Option<i32>,
6186    #[prost(bytes = "vec", optional, tag = "5")]
6187    pub packed_params: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6188    #[prost(float, optional, tag = "6")]
6189    pub start_time: ::core::option::Option<f32>,
6190}
6191#[derive(serde::Serialize, serde::Deserialize)]
6192#[allow(clippy::derive_partial_eq_without_eq)]
6193#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6194pub struct CMsgSosStopSoundEvent {
6195    #[prost(int32, optional, tag = "1")]
6196    pub soundevent_guid: ::core::option::Option<i32>,
6197}
6198#[derive(serde::Serialize, serde::Deserialize)]
6199#[allow(clippy::derive_partial_eq_without_eq)]
6200#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6201pub struct CMsgSosStopSoundEventHash {
6202    #[prost(fixed32, optional, tag = "1")]
6203    pub soundevent_hash: ::core::option::Option<u32>,
6204    #[prost(int32, optional, tag = "2", default = "-1")]
6205    pub source_entity_index: ::core::option::Option<i32>,
6206}
6207#[derive(serde::Serialize, serde::Deserialize)]
6208#[allow(clippy::derive_partial_eq_without_eq)]
6209#[derive(Clone, PartialEq, ::prost::Message)]
6210pub struct CMsgSosSetSoundEventParams {
6211    #[prost(int32, optional, tag = "1")]
6212    pub soundevent_guid: ::core::option::Option<i32>,
6213    #[prost(bytes = "vec", optional, tag = "5")]
6214    pub packed_params: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6215}
6216#[derive(serde::Serialize, serde::Deserialize)]
6217#[allow(clippy::derive_partial_eq_without_eq)]
6218#[derive(Clone, PartialEq, ::prost::Message)]
6219pub struct CMsgSosSetLibraryStackFields {
6220    #[prost(fixed32, optional, tag = "1")]
6221    pub stack_hash: ::core::option::Option<u32>,
6222    #[prost(bytes = "vec", optional, tag = "5")]
6223    pub packed_fields: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6224}
6225#[derive(
6226    serde::Serialize,
6227    serde::Deserialize,
6228    Clone,
6229    Copy,
6230    Debug,
6231    PartialEq,
6232    Eq,
6233    Hash,
6234    PartialOrd,
6235    Ord,
6236    ::prost::Enumeration,
6237)]
6238#[repr(i32)]
6239pub enum EBaseGameEvents {
6240    GeVDebugGameSessionIdEvent = 200,
6241    GePlaceDecalEvent = 201,
6242    GeClearWorldDecalsEvent = 202,
6243    GeClearEntityDecalsEvent = 203,
6244    GeClearDecalsForSkeletonInstanceEvent = 204,
6245    GeSource1LegacyGameEventList = 205,
6246    GeSource1LegacyListenEvents = 206,
6247    GeSource1LegacyGameEvent = 207,
6248    GeSosStartSoundEvent = 208,
6249    GeSosStopSoundEvent = 209,
6250    GeSosSetSoundEventParams = 210,
6251    GeSosSetLibraryStackFields = 211,
6252    GeSosStopSoundEventHash = 212,
6253}
6254#[derive(serde::Serialize, serde::Deserialize)]
6255#[allow(clippy::derive_partial_eq_without_eq)]
6256#[derive(Clone, PartialEq, ::prost::Message)]
6257pub struct CClcMsgClientInfo {
6258    #[prost(fixed32, optional, tag = "1")]
6259    pub send_table_crc: ::core::option::Option<u32>,
6260    #[prost(uint32, optional, tag = "2")]
6261    pub server_count: ::core::option::Option<u32>,
6262    #[prost(bool, optional, tag = "3")]
6263    pub is_hltv: ::core::option::Option<bool>,
6264    #[prost(uint32, optional, tag = "5")]
6265    pub friends_id: ::core::option::Option<u32>,
6266    #[prost(string, optional, tag = "6")]
6267    pub friends_name: ::core::option::Option<::prost::alloc::string::String>,
6268}
6269#[derive(serde::Serialize, serde::Deserialize)]
6270#[allow(clippy::derive_partial_eq_without_eq)]
6271#[derive(Clone, PartialEq, ::prost::Message)]
6272pub struct CClcMsgMove {
6273    #[prost(bytes = "vec", optional, tag = "3")]
6274    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6275    #[prost(uint32, optional, tag = "4")]
6276    pub command_number: ::core::option::Option<u32>,
6277    #[prost(uint32, optional, tag = "5")]
6278    pub num_commands: ::core::option::Option<u32>,
6279}
6280#[derive(serde::Serialize, serde::Deserialize)]
6281#[allow(clippy::derive_partial_eq_without_eq)]
6282#[derive(Clone, PartialEq, ::prost::Message)]
6283pub struct CMsgVoiceAudio {
6284    #[prost(
6285        enumeration = "VoiceDataFormatT",
6286        optional,
6287        tag = "1",
6288        default = "VoicedataFormatSteam"
6289    )]
6290    pub format: ::core::option::Option<i32>,
6291    #[prost(bytes = "vec", optional, tag = "2")]
6292    pub voice_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6293    #[prost(int32, optional, tag = "3")]
6294    pub sequence_bytes: ::core::option::Option<i32>,
6295    #[prost(uint32, optional, tag = "4")]
6296    pub section_number: ::core::option::Option<u32>,
6297    #[prost(uint32, optional, tag = "5")]
6298    pub sample_rate: ::core::option::Option<u32>,
6299    #[prost(uint32, optional, tag = "6")]
6300    pub uncompressed_sample_offset: ::core::option::Option<u32>,
6301    #[prost(uint32, optional, tag = "7")]
6302    pub num_packets: ::core::option::Option<u32>,
6303    #[prost(uint32, repeated, tag = "8")]
6304    pub packet_offsets: ::prost::alloc::vec::Vec<u32>,
6305    #[prost(float, optional, tag = "9")]
6306    pub voice_level: ::core::option::Option<f32>,
6307}
6308#[derive(serde::Serialize, serde::Deserialize)]
6309#[allow(clippy::derive_partial_eq_without_eq)]
6310#[derive(Clone, PartialEq, ::prost::Message)]
6311pub struct CClcMsgVoiceData {
6312    #[prost(message, optional, tag = "1")]
6313    pub audio: ::core::option::Option<CMsgVoiceAudio>,
6314    #[prost(fixed64, optional, tag = "2")]
6315    pub xuid: ::core::option::Option<u64>,
6316    #[prost(uint32, optional, tag = "3")]
6317    pub tick: ::core::option::Option<u32>,
6318}
6319#[derive(serde::Serialize, serde::Deserialize)]
6320#[allow(clippy::derive_partial_eq_without_eq)]
6321#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6322pub struct CClcMsgBaselineAck {
6323    #[prost(int32, optional, tag = "1")]
6324    pub baseline_tick: ::core::option::Option<i32>,
6325    #[prost(int32, optional, tag = "2")]
6326    pub baseline_nr: ::core::option::Option<i32>,
6327}
6328#[derive(serde::Serialize, serde::Deserialize)]
6329#[allow(clippy::derive_partial_eq_without_eq)]
6330#[derive(Clone, PartialEq, ::prost::Message)]
6331pub struct CClcMsgListenEvents {
6332    #[prost(fixed32, repeated, packed = "false", tag = "1")]
6333    pub event_mask: ::prost::alloc::vec::Vec<u32>,
6334}
6335#[derive(serde::Serialize, serde::Deserialize)]
6336#[allow(clippy::derive_partial_eq_without_eq)]
6337#[derive(Clone, PartialEq, ::prost::Message)]
6338pub struct CClcMsgRespondCvarValue {
6339    #[prost(int32, optional, tag = "1")]
6340    pub cookie: ::core::option::Option<i32>,
6341    #[prost(int32, optional, tag = "2")]
6342    pub status_code: ::core::option::Option<i32>,
6343    #[prost(string, optional, tag = "3")]
6344    pub name: ::core::option::Option<::prost::alloc::string::String>,
6345    #[prost(string, optional, tag = "4")]
6346    pub value: ::core::option::Option<::prost::alloc::string::String>,
6347}
6348#[derive(serde::Serialize, serde::Deserialize)]
6349#[allow(clippy::derive_partial_eq_without_eq)]
6350#[derive(Clone, PartialEq, ::prost::Message)]
6351pub struct CClcMsgFileCrcCheck {
6352    #[prost(int32, optional, tag = "1")]
6353    pub code_path: ::core::option::Option<i32>,
6354    #[prost(string, optional, tag = "2")]
6355    pub path: ::core::option::Option<::prost::alloc::string::String>,
6356    #[prost(int32, optional, tag = "3")]
6357    pub code_filename: ::core::option::Option<i32>,
6358    #[prost(string, optional, tag = "4")]
6359    pub filename: ::core::option::Option<::prost::alloc::string::String>,
6360    #[prost(fixed32, optional, tag = "5")]
6361    pub crc: ::core::option::Option<u32>,
6362}
6363#[derive(serde::Serialize, serde::Deserialize)]
6364#[allow(clippy::derive_partial_eq_without_eq)]
6365#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6366pub struct CClcMsgLoadingProgress {
6367    #[prost(int32, optional, tag = "1")]
6368    pub progress: ::core::option::Option<i32>,
6369}
6370#[derive(serde::Serialize, serde::Deserialize)]
6371#[allow(clippy::derive_partial_eq_without_eq)]
6372#[derive(Clone, PartialEq, ::prost::Message)]
6373pub struct CClcMsgSplitPlayerConnect {
6374    #[prost(string, optional, tag = "1")]
6375    pub playername: ::core::option::Option<::prost::alloc::string::String>,
6376}
6377#[derive(serde::Serialize, serde::Deserialize)]
6378#[allow(clippy::derive_partial_eq_without_eq)]
6379#[derive(Clone, PartialEq, ::prost::Message)]
6380pub struct CClcMsgClientMessage {
6381    #[prost(int32, optional, tag = "1")]
6382    pub msg_type: ::core::option::Option<i32>,
6383    #[prost(bytes = "vec", optional, tag = "2")]
6384    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6385}
6386#[derive(serde::Serialize, serde::Deserialize)]
6387#[allow(clippy::derive_partial_eq_without_eq)]
6388#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6389pub struct CClcMsgSplitPlayerDisconnect {
6390    #[prost(int32, optional, tag = "1")]
6391    pub slot: ::core::option::Option<i32>,
6392}
6393#[derive(serde::Serialize, serde::Deserialize)]
6394#[allow(clippy::derive_partial_eq_without_eq)]
6395#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6396pub struct CClcMsgServerStatus {
6397    #[prost(bool, optional, tag = "1")]
6398    pub simplified: ::core::option::Option<bool>,
6399}
6400#[derive(serde::Serialize, serde::Deserialize)]
6401#[allow(clippy::derive_partial_eq_without_eq)]
6402#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6403pub struct CClcMsgRequestPause {
6404    #[prost(
6405        enumeration = "RequestPauseT",
6406        optional,
6407        tag = "1",
6408        default = "RpPause"
6409    )]
6410    pub pause_type: ::core::option::Option<i32>,
6411    #[prost(int32, optional, tag = "2")]
6412    pub pause_group: ::core::option::Option<i32>,
6413}
6414#[derive(serde::Serialize, serde::Deserialize)]
6415#[allow(clippy::derive_partial_eq_without_eq)]
6416#[derive(Clone, PartialEq, ::prost::Message)]
6417pub struct CClcMsgCmdKeyValues {
6418    #[prost(bytes = "vec", optional, tag = "1")]
6419    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6420}
6421#[derive(serde::Serialize, serde::Deserialize)]
6422#[allow(clippy::derive_partial_eq_without_eq)]
6423#[derive(Clone, PartialEq, ::prost::Message)]
6424pub struct CClcMsgRconServerDetails {
6425    #[prost(bytes = "vec", optional, tag = "1")]
6426    pub token: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6427}
6428#[derive(serde::Serialize, serde::Deserialize)]
6429#[allow(clippy::derive_partial_eq_without_eq)]
6430#[derive(Clone, PartialEq, ::prost::Message)]
6431pub struct CSvcMsgServerInfo {
6432    #[prost(int32, optional, tag = "1")]
6433    pub protocol: ::core::option::Option<i32>,
6434    #[prost(int32, optional, tag = "2")]
6435    pub server_count: ::core::option::Option<i32>,
6436    #[prost(bool, optional, tag = "3")]
6437    pub is_dedicated: ::core::option::Option<bool>,
6438    #[prost(bool, optional, tag = "4")]
6439    pub is_hltv: ::core::option::Option<bool>,
6440    #[prost(int32, optional, tag = "6")]
6441    pub c_os: ::core::option::Option<i32>,
6442    #[prost(int32, optional, tag = "10")]
6443    pub max_clients: ::core::option::Option<i32>,
6444    #[prost(int32, optional, tag = "11")]
6445    pub max_classes: ::core::option::Option<i32>,
6446    #[prost(int32, optional, tag = "12", default = "-1")]
6447    pub player_slot: ::core::option::Option<i32>,
6448    #[prost(float, optional, tag = "13")]
6449    pub tick_interval: ::core::option::Option<f32>,
6450    #[prost(string, optional, tag = "14")]
6451    pub game_dir: ::core::option::Option<::prost::alloc::string::String>,
6452    #[prost(string, optional, tag = "15")]
6453    pub map_name: ::core::option::Option<::prost::alloc::string::String>,
6454    #[prost(string, optional, tag = "16")]
6455    pub sky_name: ::core::option::Option<::prost::alloc::string::String>,
6456    #[prost(string, optional, tag = "17")]
6457    pub host_name: ::core::option::Option<::prost::alloc::string::String>,
6458    #[prost(string, optional, tag = "18")]
6459    pub addon_name: ::core::option::Option<::prost::alloc::string::String>,
6460    #[prost(message, optional, tag = "19")]
6461    pub game_session_config: ::core::option::Option<CSvcMsgGameSessionConfiguration>,
6462    #[prost(bytes = "vec", optional, tag = "20")]
6463    pub game_session_manifest: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6464}
6465#[derive(serde::Serialize, serde::Deserialize)]
6466#[allow(clippy::derive_partial_eq_without_eq)]
6467#[derive(Clone, PartialEq, ::prost::Message)]
6468pub struct CSvcMsgClassInfo {
6469    #[prost(bool, optional, tag = "1")]
6470    pub create_on_client: ::core::option::Option<bool>,
6471    #[prost(message, repeated, tag = "2")]
6472    pub classes: ::prost::alloc::vec::Vec<csvc_msg_class_info::ClassT>,
6473}
6474/// Nested message and enum types in `CSVCMsg_ClassInfo`.
6475pub mod csvc_msg_class_info {
6476    #[derive(serde::Serialize, serde::Deserialize)]
6477    #[allow(clippy::derive_partial_eq_without_eq)]
6478    #[derive(Clone, PartialEq, ::prost::Message)]
6479    pub struct ClassT {
6480        #[prost(int32, optional, tag = "1")]
6481        pub class_id: ::core::option::Option<i32>,
6482        #[prost(string, optional, tag = "3")]
6483        pub class_name: ::core::option::Option<::prost::alloc::string::String>,
6484    }
6485}
6486#[derive(serde::Serialize, serde::Deserialize)]
6487#[allow(clippy::derive_partial_eq_without_eq)]
6488#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6489pub struct CSvcMsgSetPause {
6490    #[prost(bool, optional, tag = "1")]
6491    pub paused: ::core::option::Option<bool>,
6492}
6493#[derive(serde::Serialize, serde::Deserialize)]
6494#[allow(clippy::derive_partial_eq_without_eq)]
6495#[derive(Clone, PartialEq, ::prost::Message)]
6496pub struct CSvcMsgVoiceInit {
6497    #[prost(int32, optional, tag = "1")]
6498    pub quality: ::core::option::Option<i32>,
6499    #[prost(string, optional, tag = "2")]
6500    pub codec: ::core::option::Option<::prost::alloc::string::String>,
6501    #[prost(int32, optional, tag = "3", default = "0")]
6502    pub version: ::core::option::Option<i32>,
6503}
6504#[derive(serde::Serialize, serde::Deserialize)]
6505#[allow(clippy::derive_partial_eq_without_eq)]
6506#[derive(Clone, PartialEq, ::prost::Message)]
6507pub struct CSvcMsgPrint {
6508    #[prost(string, optional, tag = "1")]
6509    pub text: ::core::option::Option<::prost::alloc::string::String>,
6510}
6511#[derive(serde::Serialize, serde::Deserialize)]
6512#[allow(clippy::derive_partial_eq_without_eq)]
6513#[derive(Clone, PartialEq, ::prost::Message)]
6514pub struct CSvcMsgSounds {
6515    #[prost(bool, optional, tag = "1")]
6516    pub reliable_sound: ::core::option::Option<bool>,
6517    #[prost(message, repeated, tag = "2")]
6518    pub sounds: ::prost::alloc::vec::Vec<csvc_msg_sounds::SounddataT>,
6519}
6520/// Nested message and enum types in `CSVCMsg_Sounds`.
6521pub mod csvc_msg_sounds {
6522    #[derive(serde::Serialize, serde::Deserialize)]
6523    #[allow(clippy::derive_partial_eq_without_eq)]
6524    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
6525    pub struct SounddataT {
6526        #[prost(sint32, optional, tag = "1")]
6527        pub origin_x: ::core::option::Option<i32>,
6528        #[prost(sint32, optional, tag = "2")]
6529        pub origin_y: ::core::option::Option<i32>,
6530        #[prost(sint32, optional, tag = "3")]
6531        pub origin_z: ::core::option::Option<i32>,
6532        #[prost(uint32, optional, tag = "4")]
6533        pub volume: ::core::option::Option<u32>,
6534        #[prost(float, optional, tag = "5")]
6535        pub delay_value: ::core::option::Option<f32>,
6536        #[prost(int32, optional, tag = "6")]
6537        pub sequence_number: ::core::option::Option<i32>,
6538        #[prost(int32, optional, tag = "7", default = "-1")]
6539        pub entity_index: ::core::option::Option<i32>,
6540        #[prost(int32, optional, tag = "8")]
6541        pub channel: ::core::option::Option<i32>,
6542        #[prost(int32, optional, tag = "9")]
6543        pub pitch: ::core::option::Option<i32>,
6544        #[prost(int32, optional, tag = "10")]
6545        pub flags: ::core::option::Option<i32>,
6546        #[prost(uint32, optional, tag = "11")]
6547        pub sound_num: ::core::option::Option<u32>,
6548        #[prost(fixed32, optional, tag = "12")]
6549        pub sound_num_handle: ::core::option::Option<u32>,
6550        #[prost(int32, optional, tag = "13")]
6551        pub speaker_entity: ::core::option::Option<i32>,
6552        #[prost(int32, optional, tag = "14")]
6553        pub random_seed: ::core::option::Option<i32>,
6554        #[prost(int32, optional, tag = "15")]
6555        pub sound_level: ::core::option::Option<i32>,
6556        #[prost(bool, optional, tag = "16")]
6557        pub is_sentence: ::core::option::Option<bool>,
6558        #[prost(bool, optional, tag = "17")]
6559        pub is_ambient: ::core::option::Option<bool>,
6560        #[prost(uint32, optional, tag = "18")]
6561        pub guid: ::core::option::Option<u32>,
6562        #[prost(fixed64, optional, tag = "19")]
6563        pub sound_resource_id: ::core::option::Option<u64>,
6564    }
6565}
6566#[derive(serde::Serialize, serde::Deserialize)]
6567#[allow(clippy::derive_partial_eq_without_eq)]
6568#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6569pub struct CSvcMsgPrefetch {
6570    #[prost(int32, optional, tag = "1")]
6571    pub sound_index: ::core::option::Option<i32>,
6572    #[prost(
6573        enumeration = "PrefetchType",
6574        optional,
6575        tag = "2",
6576        default = "PftSound"
6577    )]
6578    pub resource_type: ::core::option::Option<i32>,
6579}
6580#[derive(serde::Serialize, serde::Deserialize)]
6581#[allow(clippy::derive_partial_eq_without_eq)]
6582#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6583pub struct CSvcMsgSetView {
6584    #[prost(int32, optional, tag = "1", default = "-1")]
6585    pub entity_index: ::core::option::Option<i32>,
6586    #[prost(int32, optional, tag = "2", default = "-1")]
6587    pub slot: ::core::option::Option<i32>,
6588}
6589#[derive(serde::Serialize, serde::Deserialize)]
6590#[allow(clippy::derive_partial_eq_without_eq)]
6591#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6592pub struct CSvcMsgFixAngle {
6593    #[prost(bool, optional, tag = "1")]
6594    pub relative: ::core::option::Option<bool>,
6595    #[prost(message, optional, tag = "2")]
6596    pub angle: ::core::option::Option<CMsgQAngle>,
6597}
6598#[derive(serde::Serialize, serde::Deserialize)]
6599#[allow(clippy::derive_partial_eq_without_eq)]
6600#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6601pub struct CSvcMsgCrosshairAngle {
6602    #[prost(message, optional, tag = "1")]
6603    pub angle: ::core::option::Option<CMsgQAngle>,
6604}
6605#[derive(serde::Serialize, serde::Deserialize)]
6606#[allow(clippy::derive_partial_eq_without_eq)]
6607#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6608pub struct CSvcMsgBspDecal {
6609    #[prost(message, optional, tag = "1")]
6610    pub pos: ::core::option::Option<CMsgVector>,
6611    #[prost(int32, optional, tag = "2")]
6612    pub decal_texture_index: ::core::option::Option<i32>,
6613    #[prost(int32, optional, tag = "3", default = "-1")]
6614    pub entity_index: ::core::option::Option<i32>,
6615    #[prost(int32, optional, tag = "4")]
6616    pub model_index: ::core::option::Option<i32>,
6617    #[prost(bool, optional, tag = "5")]
6618    pub low_priority: ::core::option::Option<bool>,
6619}
6620#[derive(serde::Serialize, serde::Deserialize)]
6621#[allow(clippy::derive_partial_eq_without_eq)]
6622#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6623pub struct CSvcMsgSplitScreen {
6624    #[prost(
6625        enumeration = "ESplitScreenMessageType",
6626        optional,
6627        tag = "1",
6628        default = "MsgSplitscreenAdduser"
6629    )]
6630    pub r#type: ::core::option::Option<i32>,
6631    #[prost(int32, optional, tag = "2")]
6632    pub slot: ::core::option::Option<i32>,
6633    #[prost(int32, optional, tag = "3", default = "-1")]
6634    pub player_index: ::core::option::Option<i32>,
6635}
6636#[derive(serde::Serialize, serde::Deserialize)]
6637#[allow(clippy::derive_partial_eq_without_eq)]
6638#[derive(Clone, PartialEq, ::prost::Message)]
6639pub struct CSvcMsgGetCvarValue {
6640    #[prost(int32, optional, tag = "1")]
6641    pub cookie: ::core::option::Option<i32>,
6642    #[prost(string, optional, tag = "2")]
6643    pub cvar_name: ::core::option::Option<::prost::alloc::string::String>,
6644}
6645#[derive(serde::Serialize, serde::Deserialize)]
6646#[allow(clippy::derive_partial_eq_without_eq)]
6647#[derive(Clone, PartialEq, ::prost::Message)]
6648pub struct CSvcMsgMenu {
6649    #[prost(int32, optional, tag = "1")]
6650    pub dialog_type: ::core::option::Option<i32>,
6651    #[prost(bytes = "vec", optional, tag = "2")]
6652    pub menu_key_values: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6653}
6654#[derive(serde::Serialize, serde::Deserialize)]
6655#[allow(clippy::derive_partial_eq_without_eq)]
6656#[derive(Clone, PartialEq, ::prost::Message)]
6657pub struct CSvcMsgUserMessage {
6658    #[prost(int32, optional, tag = "1")]
6659    pub msg_type: ::core::option::Option<i32>,
6660    #[prost(bytes = "vec", optional, tag = "2")]
6661    pub msg_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6662    #[prost(int32, optional, tag = "3")]
6663    pub passthrough: ::core::option::Option<i32>,
6664}
6665#[derive(serde::Serialize, serde::Deserialize)]
6666#[allow(clippy::derive_partial_eq_without_eq)]
6667#[derive(Clone, PartialEq, ::prost::Message)]
6668pub struct CSvcMsgSendTable {
6669    #[prost(bool, optional, tag = "1")]
6670    pub is_end: ::core::option::Option<bool>,
6671    #[prost(string, optional, tag = "2")]
6672    pub net_table_name: ::core::option::Option<::prost::alloc::string::String>,
6673    #[prost(bool, optional, tag = "3")]
6674    pub needs_decoder: ::core::option::Option<bool>,
6675    #[prost(message, repeated, tag = "4")]
6676    pub props: ::prost::alloc::vec::Vec<csvc_msg_send_table::SendpropT>,
6677}
6678/// Nested message and enum types in `CSVCMsg_SendTable`.
6679pub mod csvc_msg_send_table {
6680    #[derive(serde::Serialize, serde::Deserialize)]
6681    #[allow(clippy::derive_partial_eq_without_eq)]
6682    #[derive(Clone, PartialEq, ::prost::Message)]
6683    pub struct SendpropT {
6684        #[prost(int32, optional, tag = "1")]
6685        pub r#type: ::core::option::Option<i32>,
6686        #[prost(string, optional, tag = "2")]
6687        pub var_name: ::core::option::Option<::prost::alloc::string::String>,
6688        #[prost(int32, optional, tag = "3")]
6689        pub flags: ::core::option::Option<i32>,
6690        #[prost(int32, optional, tag = "4")]
6691        pub priority: ::core::option::Option<i32>,
6692        #[prost(string, optional, tag = "5")]
6693        pub dt_name: ::core::option::Option<::prost::alloc::string::String>,
6694        #[prost(int32, optional, tag = "6")]
6695        pub num_elements: ::core::option::Option<i32>,
6696        #[prost(float, optional, tag = "7")]
6697        pub low_value: ::core::option::Option<f32>,
6698        #[prost(float, optional, tag = "8")]
6699        pub high_value: ::core::option::Option<f32>,
6700        #[prost(int32, optional, tag = "9")]
6701        pub num_bits: ::core::option::Option<i32>,
6702    }
6703}
6704#[derive(serde::Serialize, serde::Deserialize)]
6705#[allow(clippy::derive_partial_eq_without_eq)]
6706#[derive(Clone, PartialEq, ::prost::Message)]
6707pub struct CSvcMsgGameEventList {
6708    #[prost(message, repeated, tag = "1")]
6709    pub descriptors: ::prost::alloc::vec::Vec<csvc_msg_game_event_list::DescriptorT>,
6710}
6711/// Nested message and enum types in `CSVCMsg_GameEventList`.
6712pub mod csvc_msg_game_event_list {
6713    #[derive(serde::Serialize, serde::Deserialize)]
6714    #[allow(clippy::derive_partial_eq_without_eq)]
6715    #[derive(Clone, PartialEq, ::prost::Message)]
6716    pub struct KeyT {
6717        #[prost(int32, optional, tag = "1")]
6718        pub r#type: ::core::option::Option<i32>,
6719        #[prost(string, optional, tag = "2")]
6720        pub name: ::core::option::Option<::prost::alloc::string::String>,
6721    }
6722    #[derive(serde::Serialize, serde::Deserialize)]
6723    #[allow(clippy::derive_partial_eq_without_eq)]
6724    #[derive(Clone, PartialEq, ::prost::Message)]
6725    pub struct DescriptorT {
6726        #[prost(int32, optional, tag = "1")]
6727        pub eventid: ::core::option::Option<i32>,
6728        #[prost(string, optional, tag = "2")]
6729        pub name: ::core::option::Option<::prost::alloc::string::String>,
6730        #[prost(message, repeated, tag = "3")]
6731        pub keys: ::prost::alloc::vec::Vec<KeyT>,
6732    }
6733}
6734#[derive(serde::Serialize, serde::Deserialize)]
6735#[allow(clippy::derive_partial_eq_without_eq)]
6736#[derive(Clone, PartialEq, ::prost::Message)]
6737pub struct CSvcMsgPacketEntities {
6738    #[prost(int32, optional, tag = "1")]
6739    pub max_entries: ::core::option::Option<i32>,
6740    #[prost(int32, optional, tag = "2")]
6741    pub updated_entries: ::core::option::Option<i32>,
6742    #[prost(bool, optional, tag = "3")]
6743    pub legacy_is_delta: ::core::option::Option<bool>,
6744    #[prost(bool, optional, tag = "4")]
6745    pub update_baseline: ::core::option::Option<bool>,
6746    #[prost(int32, optional, tag = "5")]
6747    pub baseline: ::core::option::Option<i32>,
6748    #[prost(int32, optional, tag = "6")]
6749    pub delta_from: ::core::option::Option<i32>,
6750    #[prost(bytes = "vec", optional, tag = "7")]
6751    pub entity_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6752    #[prost(bool, optional, tag = "8")]
6753    pub pending_full_frame: ::core::option::Option<bool>,
6754    #[prost(uint32, optional, tag = "9")]
6755    pub active_spawngroup_handle: ::core::option::Option<u32>,
6756    #[prost(uint32, optional, tag = "10")]
6757    pub max_spawngroup_creationsequence: ::core::option::Option<u32>,
6758    #[prost(uint32, optional, tag = "11")]
6759    pub last_cmd_number_executed: ::core::option::Option<u32>,
6760    #[prost(sint32, optional, tag = "17")]
6761    pub last_cmd_number_recv_delta: ::core::option::Option<i32>,
6762    #[prost(uint32, optional, tag = "12")]
6763    pub server_tick: ::core::option::Option<u32>,
6764    #[prost(bytes = "vec", optional, tag = "13")]
6765    pub serialized_entities: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6766    #[prost(message, optional, tag = "14")]
6767    pub command_queue_info: ::core::option::Option<csvc_msg_packet_entities::CommandQueueInfoT>,
6768    #[prost(message, repeated, tag = "15")]
6769    pub alternate_baselines: ::prost::alloc::vec::Vec<csvc_msg_packet_entities::AlternateBaselineT>,
6770    #[prost(uint32, optional, tag = "16")]
6771    pub has_pvs_vis_bits: ::core::option::Option<u32>,
6772    #[prost(uint32, optional, tag = "18")]
6773    pub last_cmd_recv_margin: ::core::option::Option<u32>,
6774    #[prost(message, optional, tag = "19")]
6775    pub non_transmitted_entities:
6776        ::core::option::Option<csvc_msg_packet_entities::NonTransmittedEntitiesT>,
6777    #[prost(bytes = "vec", optional, tag = "999")]
6778    pub dev_padding: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6779}
6780/// Nested message and enum types in `CSVCMsg_PacketEntities`.
6781pub mod csvc_msg_packet_entities {
6782    #[derive(serde::Serialize, serde::Deserialize)]
6783    #[allow(clippy::derive_partial_eq_without_eq)]
6784    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
6785    pub struct CommandQueueInfoT {
6786        #[prost(uint32, optional, tag = "1")]
6787        pub commands_queued: ::core::option::Option<u32>,
6788        #[prost(uint32, optional, tag = "3")]
6789        pub starved_command_ticks: ::core::option::Option<u32>,
6790        #[prost(uint32, optional, tag = "5")]
6791        pub discarded_command_ticks: ::core::option::Option<u32>,
6792    }
6793    #[derive(serde::Serialize, serde::Deserialize)]
6794    #[allow(clippy::derive_partial_eq_without_eq)]
6795    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
6796    pub struct AlternateBaselineT {
6797        #[prost(int32, optional, tag = "1")]
6798        pub entity_index: ::core::option::Option<i32>,
6799        #[prost(int32, optional, tag = "2")]
6800        pub baseline_index: ::core::option::Option<i32>,
6801    }
6802    #[derive(serde::Serialize, serde::Deserialize)]
6803    #[allow(clippy::derive_partial_eq_without_eq)]
6804    #[derive(Clone, PartialEq, ::prost::Message)]
6805    pub struct NonTransmittedEntitiesT {
6806        #[prost(int32, optional, tag = "1")]
6807        pub header_count: ::core::option::Option<i32>,
6808        #[prost(bytes = "vec", optional, tag = "2")]
6809        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6810    }
6811}
6812#[derive(serde::Serialize, serde::Deserialize)]
6813#[allow(clippy::derive_partial_eq_without_eq)]
6814#[derive(Clone, PartialEq, ::prost::Message)]
6815pub struct CSvcMsgTempEntities {
6816    #[prost(bool, optional, tag = "1")]
6817    pub reliable: ::core::option::Option<bool>,
6818    #[prost(int32, optional, tag = "2")]
6819    pub num_entries: ::core::option::Option<i32>,
6820    #[prost(bytes = "vec", optional, tag = "3")]
6821    pub entity_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6822}
6823#[derive(serde::Serialize, serde::Deserialize)]
6824#[allow(clippy::derive_partial_eq_without_eq)]
6825#[derive(Clone, PartialEq, ::prost::Message)]
6826pub struct CSvcMsgCreateStringTable {
6827    #[prost(string, optional, tag = "1")]
6828    pub name: ::core::option::Option<::prost::alloc::string::String>,
6829    #[prost(int32, optional, tag = "2")]
6830    pub num_entries: ::core::option::Option<i32>,
6831    #[prost(bool, optional, tag = "3")]
6832    pub user_data_fixed_size: ::core::option::Option<bool>,
6833    #[prost(int32, optional, tag = "4")]
6834    pub user_data_size: ::core::option::Option<i32>,
6835    #[prost(int32, optional, tag = "5")]
6836    pub user_data_size_bits: ::core::option::Option<i32>,
6837    #[prost(int32, optional, tag = "6")]
6838    pub flags: ::core::option::Option<i32>,
6839    #[prost(bytes = "vec", optional, tag = "7")]
6840    pub string_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6841    #[prost(int32, optional, tag = "8")]
6842    pub uncompressed_size: ::core::option::Option<i32>,
6843    #[prost(bool, optional, tag = "9")]
6844    pub data_compressed: ::core::option::Option<bool>,
6845    #[prost(bool, optional, tag = "10")]
6846    pub using_varint_bitcounts: ::core::option::Option<bool>,
6847}
6848#[derive(serde::Serialize, serde::Deserialize)]
6849#[allow(clippy::derive_partial_eq_without_eq)]
6850#[derive(Clone, PartialEq, ::prost::Message)]
6851pub struct CSvcMsgUpdateStringTable {
6852    #[prost(int32, optional, tag = "1")]
6853    pub table_id: ::core::option::Option<i32>,
6854    #[prost(int32, optional, tag = "2")]
6855    pub num_changed_entries: ::core::option::Option<i32>,
6856    #[prost(bytes = "vec", optional, tag = "3")]
6857    pub string_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6858}
6859#[derive(serde::Serialize, serde::Deserialize)]
6860#[allow(clippy::derive_partial_eq_without_eq)]
6861#[derive(Clone, PartialEq, ::prost::Message)]
6862pub struct CSvcMsgVoiceData {
6863    #[prost(message, optional, tag = "1")]
6864    pub audio: ::core::option::Option<CMsgVoiceAudio>,
6865    #[prost(int32, optional, tag = "2", default = "-1")]
6866    pub client: ::core::option::Option<i32>,
6867    #[prost(bool, optional, tag = "3")]
6868    pub proximity: ::core::option::Option<bool>,
6869    #[prost(fixed64, optional, tag = "4")]
6870    pub xuid: ::core::option::Option<u64>,
6871    #[prost(int32, optional, tag = "5")]
6872    pub audible_mask: ::core::option::Option<i32>,
6873    #[prost(uint32, optional, tag = "6")]
6874    pub tick: ::core::option::Option<u32>,
6875    #[prost(int32, optional, tag = "7")]
6876    pub passthrough: ::core::option::Option<i32>,
6877}
6878#[derive(serde::Serialize, serde::Deserialize)]
6879#[allow(clippy::derive_partial_eq_without_eq)]
6880#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6881pub struct CSvcMsgPacketReliable {
6882    #[prost(int32, optional, tag = "1")]
6883    pub tick: ::core::option::Option<i32>,
6884    #[prost(int32, optional, tag = "2")]
6885    pub messagessize: ::core::option::Option<i32>,
6886    #[prost(bool, optional, tag = "3")]
6887    pub state: ::core::option::Option<bool>,
6888}
6889#[derive(serde::Serialize, serde::Deserialize)]
6890#[allow(clippy::derive_partial_eq_without_eq)]
6891#[derive(Clone, PartialEq, ::prost::Message)]
6892pub struct CSvcMsgFullFrameSplit {
6893    #[prost(int32, optional, tag = "1")]
6894    pub tick: ::core::option::Option<i32>,
6895    #[prost(int32, optional, tag = "2")]
6896    pub section: ::core::option::Option<i32>,
6897    #[prost(int32, optional, tag = "3")]
6898    pub total: ::core::option::Option<i32>,
6899    #[prost(bytes = "vec", optional, tag = "4")]
6900    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6901}
6902#[derive(serde::Serialize, serde::Deserialize)]
6903#[allow(clippy::derive_partial_eq_without_eq)]
6904#[derive(Clone, PartialEq, ::prost::Message)]
6905pub struct CSvcMsgHltvStatus {
6906    #[prost(string, optional, tag = "1")]
6907    pub master: ::core::option::Option<::prost::alloc::string::String>,
6908    #[prost(int32, optional, tag = "2")]
6909    pub clients: ::core::option::Option<i32>,
6910    #[prost(int32, optional, tag = "3")]
6911    pub slots: ::core::option::Option<i32>,
6912    #[prost(int32, optional, tag = "4")]
6913    pub proxies: ::core::option::Option<i32>,
6914}
6915#[derive(serde::Serialize, serde::Deserialize)]
6916#[allow(clippy::derive_partial_eq_without_eq)]
6917#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6918pub struct CSvcMsgServerSteamId {
6919    #[prost(uint64, optional, tag = "1")]
6920    pub steam_id: ::core::option::Option<u64>,
6921}
6922#[derive(serde::Serialize, serde::Deserialize)]
6923#[allow(clippy::derive_partial_eq_without_eq)]
6924#[derive(Clone, PartialEq, ::prost::Message)]
6925pub struct CSvcMsgCmdKeyValues {
6926    #[prost(bytes = "vec", optional, tag = "1")]
6927    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6928}
6929#[derive(serde::Serialize, serde::Deserialize)]
6930#[allow(clippy::derive_partial_eq_without_eq)]
6931#[derive(Clone, PartialEq, ::prost::Message)]
6932pub struct CSvcMsgRconServerDetails {
6933    #[prost(bytes = "vec", optional, tag = "1")]
6934    pub token: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6935    #[prost(string, optional, tag = "2")]
6936    pub details: ::core::option::Option<::prost::alloc::string::String>,
6937}
6938#[derive(serde::Serialize, serde::Deserialize)]
6939#[allow(clippy::derive_partial_eq_without_eq)]
6940#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6941pub struct CMsgIpcAddress {
6942    #[prost(fixed64, optional, tag = "1")]
6943    pub computer_guid: ::core::option::Option<u64>,
6944    #[prost(uint32, optional, tag = "2")]
6945    pub process_id: ::core::option::Option<u32>,
6946}
6947#[derive(serde::Serialize, serde::Deserialize)]
6948#[allow(clippy::derive_partial_eq_without_eq)]
6949#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6950pub struct CMsgServerPeer {
6951    #[prost(int32, optional, tag = "1", default = "-1")]
6952    pub player_slot: ::core::option::Option<i32>,
6953    #[prost(fixed64, optional, tag = "2")]
6954    pub steamid: ::core::option::Option<u64>,
6955    #[prost(message, optional, tag = "3")]
6956    pub ipc: ::core::option::Option<CMsgIpcAddress>,
6957    #[prost(bool, optional, tag = "4")]
6958    pub they_hear_you: ::core::option::Option<bool>,
6959    #[prost(bool, optional, tag = "5")]
6960    pub you_hear_them: ::core::option::Option<bool>,
6961    #[prost(bool, optional, tag = "6")]
6962    pub is_listenserver_host: ::core::option::Option<bool>,
6963}
6964#[derive(serde::Serialize, serde::Deserialize)]
6965#[allow(clippy::derive_partial_eq_without_eq)]
6966#[derive(Clone, PartialEq, ::prost::Message)]
6967pub struct CSvcMsgPeerList {
6968    #[prost(message, repeated, tag = "1")]
6969    pub peer: ::prost::alloc::vec::Vec<CMsgServerPeer>,
6970}
6971#[derive(serde::Serialize, serde::Deserialize)]
6972#[allow(clippy::derive_partial_eq_without_eq)]
6973#[derive(Clone, PartialEq, ::prost::Message)]
6974pub struct CSvcMsgClearAllStringTables {
6975    #[prost(string, optional, tag = "1")]
6976    pub mapname: ::core::option::Option<::prost::alloc::string::String>,
6977    #[prost(bool, optional, tag = "3")]
6978    pub create_tables_skipped: ::core::option::Option<bool>,
6979}
6980#[derive(serde::Serialize, serde::Deserialize)]
6981#[allow(clippy::derive_partial_eq_without_eq)]
6982#[derive(Clone, PartialEq, ::prost::Message)]
6983pub struct ProtoFlattenedSerializerFieldT {
6984    #[prost(int32, optional, tag = "1")]
6985    pub var_type_sym: ::core::option::Option<i32>,
6986    #[prost(int32, optional, tag = "2")]
6987    pub var_name_sym: ::core::option::Option<i32>,
6988    #[prost(int32, optional, tag = "3")]
6989    pub bit_count: ::core::option::Option<i32>,
6990    #[prost(float, optional, tag = "4")]
6991    pub low_value: ::core::option::Option<f32>,
6992    #[prost(float, optional, tag = "5")]
6993    pub high_value: ::core::option::Option<f32>,
6994    #[prost(int32, optional, tag = "6")]
6995    pub encode_flags: ::core::option::Option<i32>,
6996    #[prost(int32, optional, tag = "7")]
6997    pub field_serializer_name_sym: ::core::option::Option<i32>,
6998    #[prost(int32, optional, tag = "8")]
6999    pub field_serializer_version: ::core::option::Option<i32>,
7000    #[prost(int32, optional, tag = "9")]
7001    pub send_node_sym: ::core::option::Option<i32>,
7002    #[prost(int32, optional, tag = "10")]
7003    pub var_encoder_sym: ::core::option::Option<i32>,
7004    #[prost(message, repeated, tag = "11")]
7005    pub polymorphic_types:
7006        ::prost::alloc::vec::Vec<proto_flattened_serializer_field_t::PolymorphicFieldT>,
7007    #[prost(int32, optional, tag = "12")]
7008    pub var_serializer_sym: ::core::option::Option<i32>,
7009}
7010/// Nested message and enum types in `ProtoFlattenedSerializerField_t`.
7011pub mod proto_flattened_serializer_field_t {
7012    #[derive(serde::Serialize, serde::Deserialize)]
7013    #[allow(clippy::derive_partial_eq_without_eq)]
7014    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
7015    pub struct PolymorphicFieldT {
7016        #[prost(int32, optional, tag = "1")]
7017        pub polymorphic_field_serializer_name_sym: ::core::option::Option<i32>,
7018        #[prost(int32, optional, tag = "2")]
7019        pub polymorphic_field_serializer_version: ::core::option::Option<i32>,
7020    }
7021}
7022#[derive(serde::Serialize, serde::Deserialize)]
7023#[allow(clippy::derive_partial_eq_without_eq)]
7024#[derive(Clone, PartialEq, ::prost::Message)]
7025pub struct ProtoFlattenedSerializerT {
7026    #[prost(int32, optional, tag = "1")]
7027    pub serializer_name_sym: ::core::option::Option<i32>,
7028    #[prost(int32, optional, tag = "2")]
7029    pub serializer_version: ::core::option::Option<i32>,
7030    #[prost(int32, repeated, packed = "false", tag = "3")]
7031    pub fields_index: ::prost::alloc::vec::Vec<i32>,
7032}
7033#[derive(serde::Serialize, serde::Deserialize)]
7034#[allow(clippy::derive_partial_eq_without_eq)]
7035#[derive(Clone, PartialEq, ::prost::Message)]
7036pub struct CSvcMsgFlattenedSerializer {
7037    #[prost(message, repeated, tag = "1")]
7038    pub serializers: ::prost::alloc::vec::Vec<ProtoFlattenedSerializerT>,
7039    #[prost(string, repeated, tag = "2")]
7040    pub symbols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7041    #[prost(message, repeated, tag = "3")]
7042    pub fields: ::prost::alloc::vec::Vec<ProtoFlattenedSerializerFieldT>,
7043}
7044#[derive(serde::Serialize, serde::Deserialize)]
7045#[allow(clippy::derive_partial_eq_without_eq)]
7046#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7047pub struct CSvcMsgStopSound {
7048    #[prost(fixed32, optional, tag = "1")]
7049    pub guid: ::core::option::Option<u32>,
7050}
7051#[derive(serde::Serialize, serde::Deserialize)]
7052#[allow(clippy::derive_partial_eq_without_eq)]
7053#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7054pub struct CBidirMsgRebroadcastGameEvent {
7055    #[prost(bool, optional, tag = "1")]
7056    pub posttoserver: ::core::option::Option<bool>,
7057    #[prost(int32, optional, tag = "2")]
7058    pub buftype: ::core::option::Option<i32>,
7059    #[prost(uint32, optional, tag = "3")]
7060    pub clientbitcount: ::core::option::Option<u32>,
7061    #[prost(uint64, optional, tag = "4")]
7062    pub receivingclients: ::core::option::Option<u64>,
7063}
7064#[derive(serde::Serialize, serde::Deserialize)]
7065#[allow(clippy::derive_partial_eq_without_eq)]
7066#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7067pub struct CBidirMsgRebroadcastSource {
7068    #[prost(int32, optional, tag = "1")]
7069    pub eventsource: ::core::option::Option<i32>,
7070}
7071#[derive(serde::Serialize, serde::Deserialize)]
7072#[allow(clippy::derive_partial_eq_without_eq)]
7073#[derive(Clone, PartialEq, ::prost::Message)]
7074pub struct CMsgServerNetworkStats {
7075    #[prost(bool, optional, tag = "1")]
7076    pub dedicated: ::core::option::Option<bool>,
7077    #[prost(int32, optional, tag = "2")]
7078    pub cpu_usage: ::core::option::Option<i32>,
7079    #[prost(int32, optional, tag = "3")]
7080    pub memory_used_mb: ::core::option::Option<i32>,
7081    #[prost(int32, optional, tag = "4")]
7082    pub memory_free_mb: ::core::option::Option<i32>,
7083    #[prost(int32, optional, tag = "5")]
7084    pub uptime: ::core::option::Option<i32>,
7085    #[prost(int32, optional, tag = "6")]
7086    pub spawn_count: ::core::option::Option<i32>,
7087    #[prost(int32, optional, tag = "8")]
7088    pub num_clients: ::core::option::Option<i32>,
7089    #[prost(int32, optional, tag = "9")]
7090    pub num_bots: ::core::option::Option<i32>,
7091    #[prost(int32, optional, tag = "10")]
7092    pub num_spectators: ::core::option::Option<i32>,
7093    #[prost(int32, optional, tag = "11")]
7094    pub num_tv_relays: ::core::option::Option<i32>,
7095    #[prost(float, optional, tag = "12")]
7096    pub fps: ::core::option::Option<f32>,
7097    #[prost(message, repeated, tag = "17")]
7098    pub ports: ::prost::alloc::vec::Vec<c_msg_server_network_stats::Port>,
7099    #[prost(float, optional, tag = "18")]
7100    pub avg_ping_ms: ::core::option::Option<f32>,
7101    #[prost(float, optional, tag = "19")]
7102    pub avg_engine_latency_out: ::core::option::Option<f32>,
7103    #[prost(float, optional, tag = "20")]
7104    pub avg_packets_out: ::core::option::Option<f32>,
7105    #[prost(float, optional, tag = "21")]
7106    pub avg_packets_in: ::core::option::Option<f32>,
7107    #[prost(float, optional, tag = "22")]
7108    pub avg_loss_out: ::core::option::Option<f32>,
7109    #[prost(float, optional, tag = "23")]
7110    pub avg_loss_in: ::core::option::Option<f32>,
7111    #[prost(float, optional, tag = "24")]
7112    pub avg_data_out: ::core::option::Option<f32>,
7113    #[prost(float, optional, tag = "25")]
7114    pub avg_data_in: ::core::option::Option<f32>,
7115    #[prost(uint64, optional, tag = "26")]
7116    pub total_data_in: ::core::option::Option<u64>,
7117    #[prost(uint64, optional, tag = "27")]
7118    pub total_packets_in: ::core::option::Option<u64>,
7119    #[prost(uint64, optional, tag = "28")]
7120    pub total_data_out: ::core::option::Option<u64>,
7121    #[prost(uint64, optional, tag = "29")]
7122    pub total_packets_out: ::core::option::Option<u64>,
7123    #[prost(message, repeated, tag = "30")]
7124    pub players: ::prost::alloc::vec::Vec<c_msg_server_network_stats::Player>,
7125}
7126/// Nested message and enum types in `CMsgServerNetworkStats`.
7127pub mod c_msg_server_network_stats {
7128    #[derive(serde::Serialize, serde::Deserialize)]
7129    #[allow(clippy::derive_partial_eq_without_eq)]
7130    #[derive(Clone, PartialEq, ::prost::Message)]
7131    pub struct Port {
7132        #[prost(int32, optional, tag = "1")]
7133        pub port: ::core::option::Option<i32>,
7134        #[prost(string, optional, tag = "2")]
7135        pub name: ::core::option::Option<::prost::alloc::string::String>,
7136    }
7137    #[derive(serde::Serialize, serde::Deserialize)]
7138    #[allow(clippy::derive_partial_eq_without_eq)]
7139    #[derive(Clone, PartialEq, ::prost::Message)]
7140    pub struct Player {
7141        #[prost(uint64, optional, tag = "1")]
7142        pub steamid: ::core::option::Option<u64>,
7143        #[prost(string, optional, tag = "2")]
7144        pub remote_addr: ::core::option::Option<::prost::alloc::string::String>,
7145        #[prost(int32, optional, tag = "4")]
7146        pub ping_avg_ms: ::core::option::Option<i32>,
7147        #[prost(float, optional, tag = "5")]
7148        pub packet_loss_pct: ::core::option::Option<f32>,
7149        #[prost(bool, optional, tag = "6")]
7150        pub is_bot: ::core::option::Option<bool>,
7151        #[prost(float, optional, tag = "7")]
7152        pub loss_in: ::core::option::Option<f32>,
7153        #[prost(float, optional, tag = "8")]
7154        pub loss_out: ::core::option::Option<f32>,
7155        #[prost(int32, optional, tag = "9")]
7156        pub engine_latency_ms: ::core::option::Option<i32>,
7157    }
7158}
7159#[derive(serde::Serialize, serde::Deserialize)]
7160#[allow(clippy::derive_partial_eq_without_eq)]
7161#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7162pub struct CSvcMsgHltvReplay {
7163    #[prost(int32, optional, tag = "1")]
7164    pub delay: ::core::option::Option<i32>,
7165    #[prost(int32, optional, tag = "2", default = "-1")]
7166    pub primary_target: ::core::option::Option<i32>,
7167    #[prost(int32, optional, tag = "3")]
7168    pub replay_stop_at: ::core::option::Option<i32>,
7169    #[prost(int32, optional, tag = "4")]
7170    pub replay_start_at: ::core::option::Option<i32>,
7171    #[prost(int32, optional, tag = "5")]
7172    pub replay_slowdown_begin: ::core::option::Option<i32>,
7173    #[prost(int32, optional, tag = "6")]
7174    pub replay_slowdown_end: ::core::option::Option<i32>,
7175    #[prost(float, optional, tag = "7")]
7176    pub replay_slowdown_rate: ::core::option::Option<f32>,
7177    #[prost(int32, optional, tag = "8")]
7178    pub reason: ::core::option::Option<i32>,
7179}
7180#[derive(serde::Serialize, serde::Deserialize)]
7181#[allow(clippy::derive_partial_eq_without_eq)]
7182#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7183pub struct CClcMsgHltvReplay {
7184    #[prost(int32, optional, tag = "1")]
7185    pub request: ::core::option::Option<i32>,
7186    #[prost(float, optional, tag = "2")]
7187    pub slowdown_length: ::core::option::Option<f32>,
7188    #[prost(float, optional, tag = "3")]
7189    pub slowdown_rate: ::core::option::Option<f32>,
7190    #[prost(int32, optional, tag = "4", default = "-1")]
7191    pub primary_target: ::core::option::Option<i32>,
7192    #[prost(float, optional, tag = "5")]
7193    pub event_time: ::core::option::Option<f32>,
7194}
7195#[derive(serde::Serialize, serde::Deserialize)]
7196#[allow(clippy::derive_partial_eq_without_eq)]
7197#[derive(Clone, PartialEq, ::prost::Message)]
7198pub struct CSvcMsgBroadcastCommand {
7199    #[prost(string, optional, tag = "1")]
7200    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
7201}
7202#[derive(serde::Serialize, serde::Deserialize)]
7203#[allow(clippy::derive_partial_eq_without_eq)]
7204#[derive(Clone, PartialEq, ::prost::Message)]
7205pub struct CClcMsgHltvFixupOperatorTick {
7206    #[prost(int32, optional, tag = "1")]
7207    pub tick: ::core::option::Option<i32>,
7208    #[prost(bytes = "vec", optional, tag = "2")]
7209    pub props_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7210    #[prost(message, optional, tag = "3")]
7211    pub origin: ::core::option::Option<CMsgVector>,
7212    #[prost(message, optional, tag = "4")]
7213    pub eye_angles: ::core::option::Option<CMsgQAngle>,
7214    #[prost(int32, optional, tag = "5")]
7215    pub observer_mode: ::core::option::Option<i32>,
7216    #[prost(bool, optional, tag = "6")]
7217    pub cameraman_scoreboard: ::core::option::Option<bool>,
7218    #[prost(int32, optional, tag = "7")]
7219    pub observer_target: ::core::option::Option<i32>,
7220    #[prost(message, optional, tag = "8")]
7221    pub view_offset: ::core::option::Option<CMsgVector>,
7222}
7223#[derive(serde::Serialize, serde::Deserialize)]
7224#[allow(clippy::derive_partial_eq_without_eq)]
7225#[derive(Clone, PartialEq, ::prost::Message)]
7226pub struct CSvcMsgHltvFixupOperatorStatus {
7227    #[prost(uint32, optional, tag = "1")]
7228    pub mode: ::core::option::Option<u32>,
7229    #[prost(string, optional, tag = "2")]
7230    pub override_operator_name: ::core::option::Option<::prost::alloc::string::String>,
7231}
7232#[derive(
7233    serde::Serialize,
7234    serde::Deserialize,
7235    Clone,
7236    Copy,
7237    Debug,
7238    PartialEq,
7239    Eq,
7240    Hash,
7241    PartialOrd,
7242    Ord,
7243    ::prost::Enumeration,
7244)]
7245#[repr(i32)]
7246pub enum ClcMessages {
7247    ClcClientInfo = 20,
7248    ClcMove = 21,
7249    ClcVoiceData = 22,
7250    ClcBaselineAck = 23,
7251    ClcListenEvents = 24,
7252    ClcRespondCvarValue = 25,
7253    ClcFileCrcCheck = 26,
7254    ClcLoadingProgress = 27,
7255    ClcSplitPlayerConnect = 28,
7256    ClcClientMessage = 29,
7257    ClcSplitPlayerDisconnect = 30,
7258    ClcServerStatus = 31,
7259    ClcServerPing = 32,
7260    ClcRequestPause = 33,
7261    ClcCmdKeyValues = 34,
7262    ClcRconServerDetails = 35,
7263    ClcHltvReplay = 36,
7264}
7265#[derive(
7266    serde::Serialize,
7267    serde::Deserialize,
7268    Clone,
7269    Copy,
7270    Debug,
7271    PartialEq,
7272    Eq,
7273    Hash,
7274    PartialOrd,
7275    Ord,
7276    ::prost::Enumeration,
7277)]
7278#[repr(i32)]
7279pub enum SvcMessages {
7280    SvcServerInfo = 40,
7281    SvcFlattenedSerializer = 41,
7282    SvcClassInfo = 42,
7283    SvcSetPause = 43,
7284    SvcCreateStringTable = 44,
7285    SvcUpdateStringTable = 45,
7286    SvcVoiceInit = 46,
7287    SvcVoiceData = 47,
7288    SvcPrint = 48,
7289    SvcSounds = 49,
7290    SvcSetView = 50,
7291    SvcClearAllStringTables = 51,
7292    SvcCmdKeyValues = 52,
7293    SvcBspDecal = 53,
7294    SvcSplitScreen = 54,
7295    SvcPacketEntities = 55,
7296    SvcPrefetch = 56,
7297    SvcMenu = 57,
7298    SvcGetCvarValue = 58,
7299    SvcStopSound = 59,
7300    SvcPeerList = 60,
7301    SvcPacketReliable = 61,
7302    SvcHltvStatus = 62,
7303    SvcServerSteamId = 63,
7304    SvcFullFrameSplit = 70,
7305    SvcRconServerDetails = 71,
7306    SvcUserMessage = 72,
7307    SvcHltvReplay = 73,
7308    SvcBroadcastCommand = 74,
7309    SvcHltvFixupOperatorStatus = 75,
7310}
7311#[derive(
7312    serde::Serialize,
7313    serde::Deserialize,
7314    Clone,
7315    Copy,
7316    Debug,
7317    PartialEq,
7318    Eq,
7319    Hash,
7320    PartialOrd,
7321    Ord,
7322    ::prost::Enumeration,
7323)]
7324#[repr(i32)]
7325pub enum VoiceDataFormatT {
7326    VoicedataFormatSteam = 0,
7327    VoicedataFormatEngine = 1,
7328    VoicedataFormatOpus = 2,
7329}
7330#[derive(
7331    serde::Serialize,
7332    serde::Deserialize,
7333    Clone,
7334    Copy,
7335    Debug,
7336    PartialEq,
7337    Eq,
7338    Hash,
7339    PartialOrd,
7340    Ord,
7341    ::prost::Enumeration,
7342)]
7343#[repr(i32)]
7344pub enum RequestPauseT {
7345    RpPause = 0,
7346    RpUnpause = 1,
7347    RpTogglepause = 2,
7348}
7349#[derive(
7350    serde::Serialize,
7351    serde::Deserialize,
7352    Clone,
7353    Copy,
7354    Debug,
7355    PartialEq,
7356    Eq,
7357    Hash,
7358    PartialOrd,
7359    Ord,
7360    ::prost::Enumeration,
7361)]
7362#[repr(i32)]
7363pub enum PrefetchType {
7364    PftSound = 0,
7365}
7366#[derive(
7367    serde::Serialize,
7368    serde::Deserialize,
7369    Clone,
7370    Copy,
7371    Debug,
7372    PartialEq,
7373    Eq,
7374    Hash,
7375    PartialOrd,
7376    Ord,
7377    ::prost::Enumeration,
7378)]
7379#[repr(i32)]
7380pub enum ESplitScreenMessageType {
7381    MsgSplitscreenAdduser = 0,
7382    MsgSplitscreenRemoveuser = 1,
7383}
7384#[derive(
7385    serde::Serialize,
7386    serde::Deserialize,
7387    Clone,
7388    Copy,
7389    Debug,
7390    PartialEq,
7391    Eq,
7392    Hash,
7393    PartialOrd,
7394    Ord,
7395    ::prost::Enumeration,
7396)]
7397#[repr(i32)]
7398pub enum EQueryCvarValueStatus {
7399    ValueIntact = 0,
7400    CvarNotFound = 1,
7401    NotACvar = 2,
7402    CvarProtected = 3,
7403}
7404#[derive(
7405    serde::Serialize,
7406    serde::Deserialize,
7407    Clone,
7408    Copy,
7409    Debug,
7410    PartialEq,
7411    Eq,
7412    Hash,
7413    PartialOrd,
7414    Ord,
7415    ::prost::Enumeration,
7416)]
7417#[repr(i32)]
7418pub enum DialogType {
7419    DialogMsg = 0,
7420    DialogMenu = 1,
7421    DialogText = 2,
7422    DialogEntry = 3,
7423    DialogAskconnect = 4,
7424}
7425#[derive(
7426    serde::Serialize,
7427    serde::Deserialize,
7428    Clone,
7429    Copy,
7430    Debug,
7431    PartialEq,
7432    Eq,
7433    Hash,
7434    PartialOrd,
7435    Ord,
7436    ::prost::Enumeration,
7437)]
7438#[repr(i32)]
7439pub enum SvcMessagesLowFrequency {
7440    SvcDummy = 600,
7441}
7442#[derive(
7443    serde::Serialize,
7444    serde::Deserialize,
7445    Clone,
7446    Copy,
7447    Debug,
7448    PartialEq,
7449    Eq,
7450    Hash,
7451    PartialOrd,
7452    Ord,
7453    ::prost::Enumeration,
7454)]
7455#[repr(i32)]
7456pub enum BidirectionalMessages {
7457    BiRebroadcastGameEvent = 16,
7458    BiRebroadcastSource = 17,
7459    BiGameEvent = 18,
7460}
7461#[derive(
7462    serde::Serialize,
7463    serde::Deserialize,
7464    Clone,
7465    Copy,
7466    Debug,
7467    PartialEq,
7468    Eq,
7469    Hash,
7470    PartialOrd,
7471    Ord,
7472    ::prost::Enumeration,
7473)]
7474#[repr(i32)]
7475pub enum BidirectionalMessagesLowFrequency {
7476    BiRelayInfo = 700,
7477    BiRelayPacket = 701,
7478}
7479#[derive(
7480    serde::Serialize,
7481    serde::Deserialize,
7482    Clone,
7483    Copy,
7484    Debug,
7485    PartialEq,
7486    Eq,
7487    Hash,
7488    PartialOrd,
7489    Ord,
7490    ::prost::Enumeration,
7491)]
7492#[repr(i32)]
7493pub enum ReplayEventTypeT {
7494    ReplayEventCancel = 0,
7495    ReplayEventDeath = 1,
7496    ReplayEventGeneric = 2,
7497    ReplayEventStuckNeedFullUpdate = 3,
7498    ReplayEventVictory = 4,
7499}
7500#[derive(serde::Serialize, serde::Deserialize)]
7501#[allow(clippy::derive_partial_eq_without_eq)]
7502#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7503pub struct CUserMessageAchievementEvent {
7504    #[prost(uint32, optional, tag = "1")]
7505    pub achievement: ::core::option::Option<u32>,
7506}
7507#[derive(serde::Serialize, serde::Deserialize)]
7508#[allow(clippy::derive_partial_eq_without_eq)]
7509#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7510pub struct CUserMessageCloseCaption {
7511    #[prost(fixed32, optional, tag = "1")]
7512    pub hash: ::core::option::Option<u32>,
7513    #[prost(float, optional, tag = "2")]
7514    pub duration: ::core::option::Option<f32>,
7515    #[prost(bool, optional, tag = "3")]
7516    pub from_player: ::core::option::Option<bool>,
7517    #[prost(int32, optional, tag = "4", default = "-1")]
7518    pub ent_index: ::core::option::Option<i32>,
7519}
7520#[derive(serde::Serialize, serde::Deserialize)]
7521#[allow(clippy::derive_partial_eq_without_eq)]
7522#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7523pub struct CUserMessageCloseCaptionDirect {
7524    #[prost(fixed32, optional, tag = "1")]
7525    pub hash: ::core::option::Option<u32>,
7526    #[prost(float, optional, tag = "2")]
7527    pub duration: ::core::option::Option<f32>,
7528    #[prost(bool, optional, tag = "3")]
7529    pub from_player: ::core::option::Option<bool>,
7530    #[prost(int32, optional, tag = "4", default = "-1")]
7531    pub ent_index: ::core::option::Option<i32>,
7532}
7533#[derive(serde::Serialize, serde::Deserialize)]
7534#[allow(clippy::derive_partial_eq_without_eq)]
7535#[derive(Clone, PartialEq, ::prost::Message)]
7536pub struct CUserMessageCloseCaptionPlaceholder {
7537    #[prost(string, optional, tag = "1")]
7538    pub string: ::core::option::Option<::prost::alloc::string::String>,
7539    #[prost(float, optional, tag = "2")]
7540    pub duration: ::core::option::Option<f32>,
7541    #[prost(bool, optional, tag = "3")]
7542    pub from_player: ::core::option::Option<bool>,
7543    #[prost(int32, optional, tag = "4", default = "-1")]
7544    pub ent_index: ::core::option::Option<i32>,
7545}
7546#[derive(serde::Serialize, serde::Deserialize)]
7547#[allow(clippy::derive_partial_eq_without_eq)]
7548#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7549pub struct CUserMessageCurrentTimescale {
7550    #[prost(float, optional, tag = "1")]
7551    pub current: ::core::option::Option<f32>,
7552}
7553#[derive(serde::Serialize, serde::Deserialize)]
7554#[allow(clippy::derive_partial_eq_without_eq)]
7555#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7556pub struct CUserMessageDesiredTimescale {
7557    #[prost(float, optional, tag = "1")]
7558    pub desired: ::core::option::Option<f32>,
7559    #[prost(float, optional, tag = "2")]
7560    pub acceleration: ::core::option::Option<f32>,
7561    #[prost(float, optional, tag = "3")]
7562    pub minblendrate: ::core::option::Option<f32>,
7563    #[prost(float, optional, tag = "4")]
7564    pub blenddeltamultiplier: ::core::option::Option<f32>,
7565}
7566#[derive(serde::Serialize, serde::Deserialize)]
7567#[allow(clippy::derive_partial_eq_without_eq)]
7568#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7569pub struct CUserMessageFade {
7570    #[prost(uint32, optional, tag = "1")]
7571    pub duration: ::core::option::Option<u32>,
7572    #[prost(uint32, optional, tag = "2")]
7573    pub hold_time: ::core::option::Option<u32>,
7574    #[prost(uint32, optional, tag = "3")]
7575    pub flags: ::core::option::Option<u32>,
7576    #[prost(fixed32, optional, tag = "4")]
7577    pub color: ::core::option::Option<u32>,
7578}
7579#[derive(serde::Serialize, serde::Deserialize)]
7580#[allow(clippy::derive_partial_eq_without_eq)]
7581#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7582pub struct CUserMessageShake {
7583    #[prost(uint32, optional, tag = "1")]
7584    pub command: ::core::option::Option<u32>,
7585    #[prost(float, optional, tag = "2")]
7586    pub amplitude: ::core::option::Option<f32>,
7587    #[prost(float, optional, tag = "3")]
7588    pub frequency: ::core::option::Option<f32>,
7589    #[prost(float, optional, tag = "4")]
7590    pub duration: ::core::option::Option<f32>,
7591}
7592#[derive(serde::Serialize, serde::Deserialize)]
7593#[allow(clippy::derive_partial_eq_without_eq)]
7594#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7595pub struct CUserMessageShakeDir {
7596    #[prost(message, optional, tag = "1")]
7597    pub shake: ::core::option::Option<CUserMessageShake>,
7598    #[prost(message, optional, tag = "2")]
7599    pub direction: ::core::option::Option<CMsgVector>,
7600}
7601#[derive(serde::Serialize, serde::Deserialize)]
7602#[allow(clippy::derive_partial_eq_without_eq)]
7603#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7604pub struct CUserMessageWaterShake {
7605    #[prost(uint32, optional, tag = "1")]
7606    pub command: ::core::option::Option<u32>,
7607    #[prost(float, optional, tag = "2")]
7608    pub amplitude: ::core::option::Option<f32>,
7609    #[prost(float, optional, tag = "3")]
7610    pub frequency: ::core::option::Option<f32>,
7611    #[prost(float, optional, tag = "4")]
7612    pub duration: ::core::option::Option<f32>,
7613}
7614#[derive(serde::Serialize, serde::Deserialize)]
7615#[allow(clippy::derive_partial_eq_without_eq)]
7616#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7617pub struct CUserMessageScreenTilt {
7618    #[prost(uint32, optional, tag = "1")]
7619    pub command: ::core::option::Option<u32>,
7620    #[prost(bool, optional, tag = "2")]
7621    pub ease_in_out: ::core::option::Option<bool>,
7622    #[prost(message, optional, tag = "3")]
7623    pub angle: ::core::option::Option<CMsgVector>,
7624    #[prost(float, optional, tag = "4")]
7625    pub duration: ::core::option::Option<f32>,
7626    #[prost(float, optional, tag = "5")]
7627    pub time: ::core::option::Option<f32>,
7628}
7629#[derive(serde::Serialize, serde::Deserialize)]
7630#[allow(clippy::derive_partial_eq_without_eq)]
7631#[derive(Clone, PartialEq, ::prost::Message)]
7632pub struct CUserMessageSayText {
7633    #[prost(int32, optional, tag = "1", default = "-1")]
7634    pub playerindex: ::core::option::Option<i32>,
7635    #[prost(string, optional, tag = "2")]
7636    pub text: ::core::option::Option<::prost::alloc::string::String>,
7637    #[prost(bool, optional, tag = "3")]
7638    pub chat: ::core::option::Option<bool>,
7639}
7640#[derive(serde::Serialize, serde::Deserialize)]
7641#[allow(clippy::derive_partial_eq_without_eq)]
7642#[derive(Clone, PartialEq, ::prost::Message)]
7643pub struct CUserMessageSayText2 {
7644    #[prost(int32, optional, tag = "1", default = "-1")]
7645    pub entityindex: ::core::option::Option<i32>,
7646    #[prost(bool, optional, tag = "2")]
7647    pub chat: ::core::option::Option<bool>,
7648    #[prost(string, optional, tag = "3")]
7649    pub messagename: ::core::option::Option<::prost::alloc::string::String>,
7650    #[prost(string, optional, tag = "4")]
7651    pub param1: ::core::option::Option<::prost::alloc::string::String>,
7652    #[prost(string, optional, tag = "5")]
7653    pub param2: ::core::option::Option<::prost::alloc::string::String>,
7654    #[prost(string, optional, tag = "6")]
7655    pub param3: ::core::option::Option<::prost::alloc::string::String>,
7656    #[prost(string, optional, tag = "7")]
7657    pub param4: ::core::option::Option<::prost::alloc::string::String>,
7658}
7659#[derive(serde::Serialize, serde::Deserialize)]
7660#[allow(clippy::derive_partial_eq_without_eq)]
7661#[derive(Clone, PartialEq, ::prost::Message)]
7662pub struct CUserMessageHudMsg {
7663    #[prost(uint32, optional, tag = "1")]
7664    pub channel: ::core::option::Option<u32>,
7665    #[prost(float, optional, tag = "2")]
7666    pub x: ::core::option::Option<f32>,
7667    #[prost(float, optional, tag = "3")]
7668    pub y: ::core::option::Option<f32>,
7669    #[prost(fixed32, optional, tag = "4")]
7670    pub color1: ::core::option::Option<u32>,
7671    #[prost(fixed32, optional, tag = "5")]
7672    pub color2: ::core::option::Option<u32>,
7673    #[prost(uint32, optional, tag = "6")]
7674    pub effect: ::core::option::Option<u32>,
7675    #[prost(string, optional, tag = "11")]
7676    pub message: ::core::option::Option<::prost::alloc::string::String>,
7677}
7678#[derive(serde::Serialize, serde::Deserialize)]
7679#[allow(clippy::derive_partial_eq_without_eq)]
7680#[derive(Clone, PartialEq, ::prost::Message)]
7681pub struct CUserMessageHudText {
7682    #[prost(string, optional, tag = "1")]
7683    pub message: ::core::option::Option<::prost::alloc::string::String>,
7684}
7685#[derive(serde::Serialize, serde::Deserialize)]
7686#[allow(clippy::derive_partial_eq_without_eq)]
7687#[derive(Clone, PartialEq, ::prost::Message)]
7688pub struct CUserMessageTextMsg {
7689    #[prost(uint32, optional, tag = "1")]
7690    pub dest: ::core::option::Option<u32>,
7691    #[prost(string, repeated, tag = "2")]
7692    pub param: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7693}
7694#[derive(serde::Serialize, serde::Deserialize)]
7695#[allow(clippy::derive_partial_eq_without_eq)]
7696#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7697pub struct CUserMessageGameTitle {}
7698#[derive(serde::Serialize, serde::Deserialize)]
7699#[allow(clippy::derive_partial_eq_without_eq)]
7700#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7701pub struct CUserMessageResetHud {}
7702#[derive(serde::Serialize, serde::Deserialize)]
7703#[allow(clippy::derive_partial_eq_without_eq)]
7704#[derive(Clone, PartialEq, ::prost::Message)]
7705pub struct CUserMessageSendAudio {
7706    #[prost(string, optional, tag = "1")]
7707    pub soundname: ::core::option::Option<::prost::alloc::string::String>,
7708    #[prost(bool, optional, tag = "2")]
7709    pub stop: ::core::option::Option<bool>,
7710}
7711#[derive(serde::Serialize, serde::Deserialize)]
7712#[allow(clippy::derive_partial_eq_without_eq)]
7713#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7714pub struct CUserMessageAudioParameter {
7715    #[prost(uint32, optional, tag = "1")]
7716    pub parameter_type: ::core::option::Option<u32>,
7717    #[prost(uint32, optional, tag = "2")]
7718    pub name_hash_code: ::core::option::Option<u32>,
7719    #[prost(float, optional, tag = "3")]
7720    pub value: ::core::option::Option<f32>,
7721    #[prost(uint32, optional, tag = "4")]
7722    pub int_value: ::core::option::Option<u32>,
7723}
7724#[derive(serde::Serialize, serde::Deserialize)]
7725#[allow(clippy::derive_partial_eq_without_eq)]
7726#[derive(Clone, PartialEq, ::prost::Message)]
7727pub struct CUserMessageVoiceMask {
7728    #[prost(uint32, repeated, packed = "false", tag = "1")]
7729    pub gamerules_masks: ::prost::alloc::vec::Vec<u32>,
7730    #[prost(uint32, repeated, packed = "false", tag = "2")]
7731    pub ban_masks: ::prost::alloc::vec::Vec<u32>,
7732    #[prost(bool, optional, tag = "3")]
7733    pub mod_enable: ::core::option::Option<bool>,
7734}
7735#[derive(serde::Serialize, serde::Deserialize)]
7736#[allow(clippy::derive_partial_eq_without_eq)]
7737#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7738pub struct CUserMessageRequestState {}
7739#[derive(serde::Serialize, serde::Deserialize)]
7740#[allow(clippy::derive_partial_eq_without_eq)]
7741#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7742pub struct CUserMessageRumble {
7743    #[prost(int32, optional, tag = "1")]
7744    pub index: ::core::option::Option<i32>,
7745    #[prost(int32, optional, tag = "2")]
7746    pub data: ::core::option::Option<i32>,
7747    #[prost(int32, optional, tag = "3")]
7748    pub flags: ::core::option::Option<i32>,
7749}
7750#[derive(serde::Serialize, serde::Deserialize)]
7751#[allow(clippy::derive_partial_eq_without_eq)]
7752#[derive(Clone, PartialEq, ::prost::Message)]
7753pub struct CUserMessageSayTextChannel {
7754    #[prost(int32, optional, tag = "1")]
7755    pub player: ::core::option::Option<i32>,
7756    #[prost(int32, optional, tag = "2")]
7757    pub channel: ::core::option::Option<i32>,
7758    #[prost(string, optional, tag = "3")]
7759    pub text: ::core::option::Option<::prost::alloc::string::String>,
7760}
7761#[derive(serde::Serialize, serde::Deserialize)]
7762#[allow(clippy::derive_partial_eq_without_eq)]
7763#[derive(Clone, PartialEq, ::prost::Message)]
7764pub struct CUserMessageColoredText {
7765    #[prost(uint32, optional, tag = "1")]
7766    pub color: ::core::option::Option<u32>,
7767    #[prost(string, optional, tag = "2")]
7768    pub text: ::core::option::Option<::prost::alloc::string::String>,
7769    #[prost(bool, optional, tag = "3")]
7770    pub reset: ::core::option::Option<bool>,
7771    #[prost(int32, optional, tag = "4", default = "-1")]
7772    pub context_player_slot: ::core::option::Option<i32>,
7773    #[prost(int32, optional, tag = "5")]
7774    pub context_value: ::core::option::Option<i32>,
7775    #[prost(int32, optional, tag = "6")]
7776    pub context_team_id: ::core::option::Option<i32>,
7777}
7778#[derive(serde::Serialize, serde::Deserialize)]
7779#[allow(clippy::derive_partial_eq_without_eq)]
7780#[derive(Clone, PartialEq, ::prost::Message)]
7781pub struct CUserMessageItemPickup {
7782    #[prost(string, optional, tag = "1")]
7783    pub itemname: ::core::option::Option<::prost::alloc::string::String>,
7784}
7785#[derive(serde::Serialize, serde::Deserialize)]
7786#[allow(clippy::derive_partial_eq_without_eq)]
7787#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7788pub struct CUserMessageAmmoDenied {
7789    #[prost(uint32, optional, tag = "1")]
7790    pub ammo_id: ::core::option::Option<u32>,
7791}
7792#[derive(serde::Serialize, serde::Deserialize)]
7793#[allow(clippy::derive_partial_eq_without_eq)]
7794#[derive(Clone, PartialEq, ::prost::Message)]
7795pub struct CUserMessageShowMenu {
7796    #[prost(uint32, optional, tag = "1")]
7797    pub validslots: ::core::option::Option<u32>,
7798    #[prost(uint32, optional, tag = "2")]
7799    pub displaytime: ::core::option::Option<u32>,
7800    #[prost(bool, optional, tag = "3")]
7801    pub needmore: ::core::option::Option<bool>,
7802    #[prost(string, optional, tag = "4")]
7803    pub menustring: ::core::option::Option<::prost::alloc::string::String>,
7804}
7805#[derive(serde::Serialize, serde::Deserialize)]
7806#[allow(clippy::derive_partial_eq_without_eq)]
7807#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7808pub struct CUserMessageCreditsMsg {
7809    #[prost(enumeration = "ERollType", optional, tag = "1", default = "RollNone")]
7810    pub rolltype: ::core::option::Option<i32>,
7811    #[prost(float, optional, tag = "2")]
7812    pub logo_length: ::core::option::Option<f32>,
7813}
7814#[derive(serde::Serialize, serde::Deserialize)]
7815#[allow(clippy::derive_partial_eq_without_eq)]
7816#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7817pub struct CEntityMessagePlayJingle {
7818    #[prost(message, optional, tag = "1")]
7819    pub entity_msg: ::core::option::Option<CEntityMsg>,
7820}
7821#[derive(serde::Serialize, serde::Deserialize)]
7822#[allow(clippy::derive_partial_eq_without_eq)]
7823#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7824pub struct CEntityMessageScreenOverlay {
7825    #[prost(bool, optional, tag = "1")]
7826    pub start_effect: ::core::option::Option<bool>,
7827    #[prost(message, optional, tag = "2")]
7828    pub entity_msg: ::core::option::Option<CEntityMsg>,
7829}
7830#[derive(serde::Serialize, serde::Deserialize)]
7831#[allow(clippy::derive_partial_eq_without_eq)]
7832#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7833pub struct CEntityMessageRemoveAllDecals {
7834    #[prost(bool, optional, tag = "1")]
7835    pub remove_decals: ::core::option::Option<bool>,
7836    #[prost(message, optional, tag = "2")]
7837    pub entity_msg: ::core::option::Option<CEntityMsg>,
7838}
7839#[derive(serde::Serialize, serde::Deserialize)]
7840#[allow(clippy::derive_partial_eq_without_eq)]
7841#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7842pub struct CEntityMessagePropagateForce {
7843    #[prost(message, optional, tag = "1")]
7844    pub impulse: ::core::option::Option<CMsgVector>,
7845    #[prost(message, optional, tag = "2")]
7846    pub entity_msg: ::core::option::Option<CEntityMsg>,
7847}
7848#[derive(serde::Serialize, serde::Deserialize)]
7849#[allow(clippy::derive_partial_eq_without_eq)]
7850#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7851pub struct CEntityMessageDoSpark {
7852    #[prost(message, optional, tag = "1")]
7853    pub origin: ::core::option::Option<CMsgVector>,
7854    #[prost(int32, optional, tag = "2", default = "-1")]
7855    pub entityindex: ::core::option::Option<i32>,
7856    #[prost(float, optional, tag = "3")]
7857    pub radius: ::core::option::Option<f32>,
7858    #[prost(fixed32, optional, tag = "4")]
7859    pub color: ::core::option::Option<u32>,
7860    #[prost(uint32, optional, tag = "5")]
7861    pub beams: ::core::option::Option<u32>,
7862    #[prost(float, optional, tag = "6")]
7863    pub thick: ::core::option::Option<f32>,
7864    #[prost(float, optional, tag = "7")]
7865    pub duration: ::core::option::Option<f32>,
7866    #[prost(message, optional, tag = "8")]
7867    pub entity_msg: ::core::option::Option<CEntityMsg>,
7868}
7869#[derive(serde::Serialize, serde::Deserialize)]
7870#[allow(clippy::derive_partial_eq_without_eq)]
7871#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7872pub struct CEntityMessageFixAngle {
7873    #[prost(bool, optional, tag = "1")]
7874    pub relative: ::core::option::Option<bool>,
7875    #[prost(message, optional, tag = "2")]
7876    pub angle: ::core::option::Option<CMsgQAngle>,
7877    #[prost(message, optional, tag = "3")]
7878    pub entity_msg: ::core::option::Option<CEntityMsg>,
7879}
7880#[derive(serde::Serialize, serde::Deserialize)]
7881#[allow(clippy::derive_partial_eq_without_eq)]
7882#[derive(Clone, PartialEq, ::prost::Message)]
7883pub struct CUserMessageCameraTransition {
7884    #[prost(uint32, optional, tag = "1")]
7885    pub camera_type: ::core::option::Option<u32>,
7886    #[prost(float, optional, tag = "2")]
7887    pub duration: ::core::option::Option<f32>,
7888    #[prost(message, optional, tag = "3")]
7889    pub params_data_driven:
7890        ::core::option::Option<c_user_message_camera_transition::TransitionDataDriven>,
7891}
7892/// Nested message and enum types in `CUserMessageCameraTransition`.
7893pub mod c_user_message_camera_transition {
7894    #[derive(serde::Serialize, serde::Deserialize)]
7895    #[allow(clippy::derive_partial_eq_without_eq)]
7896    #[derive(Clone, PartialEq, ::prost::Message)]
7897    pub struct TransitionDataDriven {
7898        #[prost(string, optional, tag = "1")]
7899        pub filename: ::core::option::Option<::prost::alloc::string::String>,
7900        #[prost(int32, optional, tag = "2", default = "-1")]
7901        pub attach_ent_index: ::core::option::Option<i32>,
7902        #[prost(float, optional, tag = "3")]
7903        pub duration: ::core::option::Option<f32>,
7904    }
7905}
7906#[derive(serde::Serialize, serde::Deserialize)]
7907#[allow(clippy::derive_partial_eq_without_eq)]
7908#[derive(Clone, PartialEq, ::prost::Message)]
7909pub struct CUserMsgParticleManager {
7910    #[prost(
7911        enumeration = "ParticleMessage",
7912        required,
7913        tag = "1",
7914        default = "GameParticleManagerEventCreate"
7915    )]
7916    pub r#type: i32,
7917    #[prost(uint32, required, tag = "2")]
7918    pub index: u32,
7919    #[prost(message, optional, tag = "3")]
7920    pub release_particle_index:
7921        ::core::option::Option<c_user_msg_particle_manager::ReleaseParticleIndex>,
7922    #[prost(message, optional, tag = "4")]
7923    pub create_particle: ::core::option::Option<c_user_msg_particle_manager::CreateParticle>,
7924    #[prost(message, optional, tag = "5")]
7925    pub destroy_particle: ::core::option::Option<c_user_msg_particle_manager::DestroyParticle>,
7926    #[prost(message, optional, tag = "6")]
7927    pub destroy_particle_involving:
7928        ::core::option::Option<c_user_msg_particle_manager::DestroyParticleInvolving>,
7929    #[prost(message, optional, tag = "7")]
7930    pub update_particle:
7931        ::core::option::Option<c_user_msg_particle_manager::UpdateParticleObsolete>,
7932    #[prost(message, optional, tag = "8")]
7933    pub update_particle_fwd:
7934        ::core::option::Option<c_user_msg_particle_manager::UpdateParticleFwdObsolete>,
7935    #[prost(message, optional, tag = "9")]
7936    pub update_particle_orient:
7937        ::core::option::Option<c_user_msg_particle_manager::UpdateParticleOrientObsolete>,
7938    #[prost(message, optional, tag = "10")]
7939    pub update_particle_fallback:
7940        ::core::option::Option<c_user_msg_particle_manager::UpdateParticleFallback>,
7941    #[prost(message, optional, tag = "11")]
7942    pub update_particle_offset:
7943        ::core::option::Option<c_user_msg_particle_manager::UpdateParticleOffset>,
7944    #[prost(message, optional, tag = "12")]
7945    pub update_particle_ent: ::core::option::Option<c_user_msg_particle_manager::UpdateParticleEnt>,
7946    #[prost(message, optional, tag = "14")]
7947    pub update_particle_should_draw:
7948        ::core::option::Option<c_user_msg_particle_manager::UpdateParticleShouldDraw>,
7949    #[prost(message, optional, tag = "15")]
7950    pub update_particle_set_frozen:
7951        ::core::option::Option<c_user_msg_particle_manager::UpdateParticleSetFrozen>,
7952    #[prost(message, optional, tag = "16")]
7953    pub change_control_point_attachment:
7954        ::core::option::Option<c_user_msg_particle_manager::ChangeControlPointAttachment>,
7955    #[prost(message, optional, tag = "17")]
7956    pub update_entity_position:
7957        ::core::option::Option<c_user_msg_particle_manager::UpdateEntityPosition>,
7958    #[prost(message, optional, tag = "18")]
7959    pub set_particle_fow_properties:
7960        ::core::option::Option<c_user_msg_particle_manager::SetParticleFoWProperties>,
7961    #[prost(message, optional, tag = "19")]
7962    pub set_particle_text: ::core::option::Option<c_user_msg_particle_manager::SetParticleText>,
7963    #[prost(message, optional, tag = "20")]
7964    pub set_particle_should_check_fow:
7965        ::core::option::Option<c_user_msg_particle_manager::SetParticleShouldCheckFoW>,
7966    #[prost(message, optional, tag = "21")]
7967    pub set_control_point_model:
7968        ::core::option::Option<c_user_msg_particle_manager::SetControlPointModel>,
7969    #[prost(message, optional, tag = "22")]
7970    pub set_control_point_snapshot:
7971        ::core::option::Option<c_user_msg_particle_manager::SetControlPointSnapshot>,
7972    #[prost(message, optional, tag = "23")]
7973    pub set_texture_attribute:
7974        ::core::option::Option<c_user_msg_particle_manager::SetTextureAttribute>,
7975    #[prost(message, optional, tag = "24")]
7976    pub set_scene_object_generic_flag:
7977        ::core::option::Option<c_user_msg_particle_manager::SetSceneObjectGenericFlag>,
7978    #[prost(message, optional, tag = "25")]
7979    pub set_scene_object_tint_and_desat:
7980        ::core::option::Option<c_user_msg_particle_manager::SetSceneObjectTintAndDesat>,
7981    #[prost(message, optional, tag = "26")]
7982    pub destroy_particle_named:
7983        ::core::option::Option<c_user_msg_particle_manager::DestroyParticleNamed>,
7984    #[prost(message, optional, tag = "27")]
7985    pub particle_skip_to_time:
7986        ::core::option::Option<c_user_msg_particle_manager::ParticleSkipToTime>,
7987    #[prost(message, optional, tag = "28")]
7988    pub particle_can_freeze: ::core::option::Option<c_user_msg_particle_manager::ParticleCanFreeze>,
7989    #[prost(message, optional, tag = "29")]
7990    pub set_named_value_context:
7991        ::core::option::Option<c_user_msg_particle_manager::SetParticleNamedValueContext>,
7992    #[prost(message, optional, tag = "30")]
7993    pub update_particle_transform:
7994        ::core::option::Option<c_user_msg_particle_manager::UpdateParticleTransform>,
7995    #[prost(message, optional, tag = "31")]
7996    pub particle_freeze_transition_override:
7997        ::core::option::Option<c_user_msg_particle_manager::ParticleFreezeTransitionOverride>,
7998    #[prost(message, optional, tag = "32")]
7999    pub freeze_particle_involving:
8000        ::core::option::Option<c_user_msg_particle_manager::FreezeParticleInvolving>,
8001    #[prost(message, optional, tag = "33")]
8002    pub add_modellist_override_element:
8003        ::core::option::Option<c_user_msg_particle_manager::AddModellistOverrideElement>,
8004    #[prost(message, optional, tag = "34")]
8005    pub clear_modellist_override:
8006        ::core::option::Option<c_user_msg_particle_manager::ClearModellistOverride>,
8007    #[prost(message, optional, tag = "35")]
8008    pub create_physics_sim: ::core::option::Option<c_user_msg_particle_manager::CreatePhysicsSim>,
8009    #[prost(message, optional, tag = "36")]
8010    pub destroy_physics_sim: ::core::option::Option<c_user_msg_particle_manager::DestroyPhysicsSim>,
8011}
8012/// Nested message and enum types in `CUserMsg_ParticleManager`.
8013pub mod c_user_msg_particle_manager {
8014    #[derive(serde::Serialize, serde::Deserialize)]
8015    #[allow(clippy::derive_partial_eq_without_eq)]
8016    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8017    pub struct ReleaseParticleIndex {}
8018    #[derive(serde::Serialize, serde::Deserialize)]
8019    #[allow(clippy::derive_partial_eq_without_eq)]
8020    #[derive(Clone, PartialEq, ::prost::Message)]
8021    pub struct CreateParticle {
8022        #[prost(fixed64, optional, tag = "1")]
8023        pub particle_name_index: ::core::option::Option<u64>,
8024        #[prost(int32, optional, tag = "2")]
8025        pub attach_type: ::core::option::Option<i32>,
8026        #[prost(uint32, optional, tag = "3", default = "16777215")]
8027        pub entity_handle: ::core::option::Option<u32>,
8028        #[prost(uint32, optional, tag = "4", default = "16777215")]
8029        pub entity_handle_for_modifiers: ::core::option::Option<u32>,
8030        #[prost(bool, optional, tag = "5")]
8031        pub apply_voice_ban_rules: ::core::option::Option<bool>,
8032        #[prost(int32, optional, tag = "6")]
8033        pub team_behavior: ::core::option::Option<i32>,
8034        #[prost(string, optional, tag = "7")]
8035        pub control_point_configuration: ::core::option::Option<::prost::alloc::string::String>,
8036        #[prost(bool, optional, tag = "8")]
8037        pub cluster: ::core::option::Option<bool>,
8038        #[prost(float, optional, tag = "9")]
8039        pub endcap_time: ::core::option::Option<f32>,
8040    }
8041    #[derive(serde::Serialize, serde::Deserialize)]
8042    #[allow(clippy::derive_partial_eq_without_eq)]
8043    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8044    pub struct DestroyParticle {
8045        #[prost(bool, optional, tag = "1")]
8046        pub destroy_immediately: ::core::option::Option<bool>,
8047    }
8048    #[derive(serde::Serialize, serde::Deserialize)]
8049    #[allow(clippy::derive_partial_eq_without_eq)]
8050    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8051    pub struct DestroyParticleInvolving {
8052        #[prost(bool, optional, tag = "1")]
8053        pub destroy_immediately: ::core::option::Option<bool>,
8054        #[prost(uint32, optional, tag = "3", default = "16777215")]
8055        pub entity_handle: ::core::option::Option<u32>,
8056    }
8057    #[derive(serde::Serialize, serde::Deserialize)]
8058    #[allow(clippy::derive_partial_eq_without_eq)]
8059    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8060    pub struct DestroyParticleNamed {
8061        #[prost(fixed64, optional, tag = "1")]
8062        pub particle_name_index: ::core::option::Option<u64>,
8063        #[prost(uint32, optional, tag = "2", default = "16777215")]
8064        pub entity_handle: ::core::option::Option<u32>,
8065        #[prost(bool, optional, tag = "3")]
8066        pub destroy_immediately: ::core::option::Option<bool>,
8067        #[prost(bool, optional, tag = "4")]
8068        pub play_endcap: ::core::option::Option<bool>,
8069    }
8070    #[derive(serde::Serialize, serde::Deserialize)]
8071    #[allow(clippy::derive_partial_eq_without_eq)]
8072    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8073    pub struct UpdateParticleObsolete {
8074        #[prost(int32, optional, tag = "1")]
8075        pub control_point: ::core::option::Option<i32>,
8076        #[prost(message, optional, tag = "2")]
8077        pub position: ::core::option::Option<super::CMsgVector>,
8078    }
8079    #[derive(serde::Serialize, serde::Deserialize)]
8080    #[allow(clippy::derive_partial_eq_without_eq)]
8081    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8082    pub struct UpdateParticleFwdObsolete {
8083        #[prost(int32, optional, tag = "1")]
8084        pub control_point: ::core::option::Option<i32>,
8085        #[prost(message, optional, tag = "2")]
8086        pub forward: ::core::option::Option<super::CMsgVector>,
8087    }
8088    #[derive(serde::Serialize, serde::Deserialize)]
8089    #[allow(clippy::derive_partial_eq_without_eq)]
8090    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8091    pub struct UpdateParticleOrientObsolete {
8092        #[prost(int32, optional, tag = "1")]
8093        pub control_point: ::core::option::Option<i32>,
8094        #[prost(message, optional, tag = "2")]
8095        pub forward: ::core::option::Option<super::CMsgVector>,
8096        #[prost(message, optional, tag = "3")]
8097        pub deprecated_right: ::core::option::Option<super::CMsgVector>,
8098        #[prost(message, optional, tag = "4")]
8099        pub up: ::core::option::Option<super::CMsgVector>,
8100        #[prost(message, optional, tag = "5")]
8101        pub left: ::core::option::Option<super::CMsgVector>,
8102    }
8103    #[derive(serde::Serialize, serde::Deserialize)]
8104    #[allow(clippy::derive_partial_eq_without_eq)]
8105    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8106    pub struct UpdateParticleTransform {
8107        #[prost(int32, optional, tag = "1")]
8108        pub control_point: ::core::option::Option<i32>,
8109        #[prost(message, optional, tag = "2")]
8110        pub position: ::core::option::Option<super::CMsgVector>,
8111        #[prost(message, optional, tag = "3")]
8112        pub orientation: ::core::option::Option<super::CMsgQuaternion>,
8113        #[prost(float, optional, tag = "4")]
8114        pub interpolation_interval: ::core::option::Option<f32>,
8115    }
8116    #[derive(serde::Serialize, serde::Deserialize)]
8117    #[allow(clippy::derive_partial_eq_without_eq)]
8118    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8119    pub struct UpdateParticleFallback {
8120        #[prost(int32, optional, tag = "1")]
8121        pub control_point: ::core::option::Option<i32>,
8122        #[prost(message, optional, tag = "2")]
8123        pub position: ::core::option::Option<super::CMsgVector>,
8124    }
8125    #[derive(serde::Serialize, serde::Deserialize)]
8126    #[allow(clippy::derive_partial_eq_without_eq)]
8127    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8128    pub struct UpdateParticleOffset {
8129        #[prost(int32, optional, tag = "1")]
8130        pub control_point: ::core::option::Option<i32>,
8131        #[prost(message, optional, tag = "2")]
8132        pub origin_offset: ::core::option::Option<super::CMsgVector>,
8133        #[prost(message, optional, tag = "3")]
8134        pub angle_offset: ::core::option::Option<super::CMsgQAngle>,
8135    }
8136    #[derive(serde::Serialize, serde::Deserialize)]
8137    #[allow(clippy::derive_partial_eq_without_eq)]
8138    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8139    pub struct UpdateParticleEnt {
8140        #[prost(int32, optional, tag = "1")]
8141        pub control_point: ::core::option::Option<i32>,
8142        #[prost(uint32, optional, tag = "2", default = "16777215")]
8143        pub entity_handle: ::core::option::Option<u32>,
8144        #[prost(int32, optional, tag = "3")]
8145        pub attach_type: ::core::option::Option<i32>,
8146        #[prost(int32, optional, tag = "4")]
8147        pub attachment: ::core::option::Option<i32>,
8148        #[prost(message, optional, tag = "5")]
8149        pub fallback_position: ::core::option::Option<super::CMsgVector>,
8150        #[prost(bool, optional, tag = "6")]
8151        pub include_wearables: ::core::option::Option<bool>,
8152        #[prost(message, optional, tag = "7")]
8153        pub offset_position: ::core::option::Option<super::CMsgVector>,
8154        #[prost(message, optional, tag = "8")]
8155        pub offset_angles: ::core::option::Option<super::CMsgQAngle>,
8156    }
8157    #[derive(serde::Serialize, serde::Deserialize)]
8158    #[allow(clippy::derive_partial_eq_without_eq)]
8159    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8160    pub struct UpdateParticleSetFrozen {
8161        #[prost(bool, optional, tag = "1")]
8162        pub set_frozen: ::core::option::Option<bool>,
8163        #[prost(float, optional, tag = "2")]
8164        pub transition_duration: ::core::option::Option<f32>,
8165    }
8166    #[derive(serde::Serialize, serde::Deserialize)]
8167    #[allow(clippy::derive_partial_eq_without_eq)]
8168    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8169    pub struct UpdateParticleShouldDraw {
8170        #[prost(bool, optional, tag = "1")]
8171        pub should_draw: ::core::option::Option<bool>,
8172    }
8173    #[derive(serde::Serialize, serde::Deserialize)]
8174    #[allow(clippy::derive_partial_eq_without_eq)]
8175    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8176    pub struct ChangeControlPointAttachment {
8177        #[prost(int32, optional, tag = "1")]
8178        pub attachment_old: ::core::option::Option<i32>,
8179        #[prost(int32, optional, tag = "2")]
8180        pub attachment_new: ::core::option::Option<i32>,
8181        #[prost(uint32, optional, tag = "3", default = "16777215")]
8182        pub entity_handle: ::core::option::Option<u32>,
8183    }
8184    #[derive(serde::Serialize, serde::Deserialize)]
8185    #[allow(clippy::derive_partial_eq_without_eq)]
8186    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8187    pub struct UpdateEntityPosition {
8188        #[prost(uint32, optional, tag = "1", default = "16777215")]
8189        pub entity_handle: ::core::option::Option<u32>,
8190        #[prost(message, optional, tag = "2")]
8191        pub position: ::core::option::Option<super::CMsgVector>,
8192    }
8193    #[derive(serde::Serialize, serde::Deserialize)]
8194    #[allow(clippy::derive_partial_eq_without_eq)]
8195    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8196    pub struct SetParticleFoWProperties {
8197        #[prost(int32, optional, tag = "1")]
8198        pub fow_control_point: ::core::option::Option<i32>,
8199        #[prost(int32, optional, tag = "2")]
8200        pub fow_control_point2: ::core::option::Option<i32>,
8201        #[prost(float, optional, tag = "3")]
8202        pub fow_radius: ::core::option::Option<f32>,
8203    }
8204    #[derive(serde::Serialize, serde::Deserialize)]
8205    #[allow(clippy::derive_partial_eq_without_eq)]
8206    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8207    pub struct SetParticleShouldCheckFoW {
8208        #[prost(bool, optional, tag = "1")]
8209        pub check_fow: ::core::option::Option<bool>,
8210    }
8211    #[derive(serde::Serialize, serde::Deserialize)]
8212    #[allow(clippy::derive_partial_eq_without_eq)]
8213    #[derive(Clone, PartialEq, ::prost::Message)]
8214    pub struct SetControlPointModel {
8215        #[prost(int32, optional, tag = "1")]
8216        pub control_point: ::core::option::Option<i32>,
8217        #[prost(string, optional, tag = "2")]
8218        pub model_name: ::core::option::Option<::prost::alloc::string::String>,
8219    }
8220    #[derive(serde::Serialize, serde::Deserialize)]
8221    #[allow(clippy::derive_partial_eq_without_eq)]
8222    #[derive(Clone, PartialEq, ::prost::Message)]
8223    pub struct SetControlPointSnapshot {
8224        #[prost(int32, optional, tag = "1")]
8225        pub control_point: ::core::option::Option<i32>,
8226        #[prost(string, optional, tag = "2")]
8227        pub snapshot_name: ::core::option::Option<::prost::alloc::string::String>,
8228    }
8229    #[derive(serde::Serialize, serde::Deserialize)]
8230    #[allow(clippy::derive_partial_eq_without_eq)]
8231    #[derive(Clone, PartialEq, ::prost::Message)]
8232    pub struct SetParticleText {
8233        #[prost(string, optional, tag = "1")]
8234        pub text: ::core::option::Option<::prost::alloc::string::String>,
8235    }
8236    #[derive(serde::Serialize, serde::Deserialize)]
8237    #[allow(clippy::derive_partial_eq_without_eq)]
8238    #[derive(Clone, PartialEq, ::prost::Message)]
8239    pub struct SetTextureAttribute {
8240        #[prost(string, optional, tag = "1")]
8241        pub attribute_name: ::core::option::Option<::prost::alloc::string::String>,
8242        #[prost(string, optional, tag = "2")]
8243        pub texture_name: ::core::option::Option<::prost::alloc::string::String>,
8244    }
8245    #[derive(serde::Serialize, serde::Deserialize)]
8246    #[allow(clippy::derive_partial_eq_without_eq)]
8247    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8248    pub struct SetSceneObjectGenericFlag {
8249        #[prost(bool, optional, tag = "1")]
8250        pub flag_value: ::core::option::Option<bool>,
8251    }
8252    #[derive(serde::Serialize, serde::Deserialize)]
8253    #[allow(clippy::derive_partial_eq_without_eq)]
8254    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8255    pub struct SetSceneObjectTintAndDesat {
8256        #[prost(fixed32, optional, tag = "1")]
8257        pub tint: ::core::option::Option<u32>,
8258        #[prost(float, optional, tag = "2")]
8259        pub desat: ::core::option::Option<f32>,
8260    }
8261    #[derive(serde::Serialize, serde::Deserialize)]
8262    #[allow(clippy::derive_partial_eq_without_eq)]
8263    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8264    pub struct ParticleSkipToTime {
8265        #[prost(float, optional, tag = "1")]
8266        pub skip_to_time: ::core::option::Option<f32>,
8267    }
8268    #[derive(serde::Serialize, serde::Deserialize)]
8269    #[allow(clippy::derive_partial_eq_without_eq)]
8270    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8271    pub struct ParticleCanFreeze {
8272        #[prost(bool, optional, tag = "1")]
8273        pub can_freeze: ::core::option::Option<bool>,
8274    }
8275    #[derive(serde::Serialize, serde::Deserialize)]
8276    #[allow(clippy::derive_partial_eq_without_eq)]
8277    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8278    pub struct ParticleFreezeTransitionOverride {
8279        #[prost(float, optional, tag = "1")]
8280        pub freeze_transition_override: ::core::option::Option<f32>,
8281    }
8282    #[derive(serde::Serialize, serde::Deserialize)]
8283    #[allow(clippy::derive_partial_eq_without_eq)]
8284    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8285    pub struct FreezeParticleInvolving {
8286        #[prost(bool, optional, tag = "1")]
8287        pub set_frozen: ::core::option::Option<bool>,
8288        #[prost(float, optional, tag = "2")]
8289        pub transition_duration: ::core::option::Option<f32>,
8290        #[prost(uint32, optional, tag = "3", default = "16777215")]
8291        pub entity_handle: ::core::option::Option<u32>,
8292    }
8293    #[derive(serde::Serialize, serde::Deserialize)]
8294    #[allow(clippy::derive_partial_eq_without_eq)]
8295    #[derive(Clone, PartialEq, ::prost::Message)]
8296    pub struct AddModellistOverrideElement {
8297        #[prost(string, optional, tag = "1")]
8298        pub model_name: ::core::option::Option<::prost::alloc::string::String>,
8299        #[prost(float, optional, tag = "2")]
8300        pub spawn_probability: ::core::option::Option<f32>,
8301        #[prost(uint32, optional, tag = "3")]
8302        pub groupid: ::core::option::Option<u32>,
8303    }
8304    #[derive(serde::Serialize, serde::Deserialize)]
8305    #[allow(clippy::derive_partial_eq_without_eq)]
8306    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8307    pub struct ClearModellistOverride {
8308        #[prost(uint32, optional, tag = "1")]
8309        pub groupid: ::core::option::Option<u32>,
8310    }
8311    #[derive(serde::Serialize, serde::Deserialize)]
8312    #[allow(clippy::derive_partial_eq_without_eq)]
8313    #[derive(Clone, PartialEq, ::prost::Message)]
8314    pub struct SetParticleNamedValueContext {
8315        #[prost(message, repeated, tag = "1")]
8316        pub float_values:
8317            ::prost::alloc::vec::Vec<set_particle_named_value_context::FloatContextValue>,
8318        #[prost(message, repeated, tag = "2")]
8319        pub vector_values:
8320            ::prost::alloc::vec::Vec<set_particle_named_value_context::VectorContextValue>,
8321        #[prost(message, repeated, tag = "3")]
8322        pub transform_values:
8323            ::prost::alloc::vec::Vec<set_particle_named_value_context::TransformContextValue>,
8324        #[prost(message, repeated, tag = "4")]
8325        pub ehandle_values:
8326            ::prost::alloc::vec::Vec<set_particle_named_value_context::EHandleContext>,
8327    }
8328    /// Nested message and enum types in `SetParticleNamedValueContext`.
8329    pub mod set_particle_named_value_context {
8330        #[derive(serde::Serialize, serde::Deserialize)]
8331        #[allow(clippy::derive_partial_eq_without_eq)]
8332        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8333        pub struct FloatContextValue {
8334            #[prost(uint32, optional, tag = "1")]
8335            pub value_name_hash: ::core::option::Option<u32>,
8336            #[prost(float, optional, tag = "2")]
8337            pub value: ::core::option::Option<f32>,
8338        }
8339        #[derive(serde::Serialize, serde::Deserialize)]
8340        #[allow(clippy::derive_partial_eq_without_eq)]
8341        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8342        pub struct VectorContextValue {
8343            #[prost(uint32, optional, tag = "1")]
8344            pub value_name_hash: ::core::option::Option<u32>,
8345            #[prost(message, optional, tag = "2")]
8346            pub value: ::core::option::Option<super::super::CMsgVector>,
8347        }
8348        #[derive(serde::Serialize, serde::Deserialize)]
8349        #[allow(clippy::derive_partial_eq_without_eq)]
8350        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8351        pub struct TransformContextValue {
8352            #[prost(uint32, optional, tag = "1")]
8353            pub value_name_hash: ::core::option::Option<u32>,
8354            #[prost(message, optional, tag = "2")]
8355            pub angles: ::core::option::Option<super::super::CMsgQAngle>,
8356            #[prost(message, optional, tag = "3")]
8357            pub translation: ::core::option::Option<super::super::CMsgVector>,
8358        }
8359        #[derive(serde::Serialize, serde::Deserialize)]
8360        #[allow(clippy::derive_partial_eq_without_eq)]
8361        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8362        pub struct EHandleContext {
8363            #[prost(uint32, optional, tag = "1")]
8364            pub value_name_hash: ::core::option::Option<u32>,
8365            #[prost(uint32, optional, tag = "2", default = "16777215")]
8366            pub ent_index: ::core::option::Option<u32>,
8367        }
8368    }
8369    #[derive(serde::Serialize, serde::Deserialize)]
8370    #[allow(clippy::derive_partial_eq_without_eq)]
8371    #[derive(Clone, PartialEq, ::prost::Message)]
8372    pub struct CreatePhysicsSim {
8373        #[prost(string, optional, tag = "1")]
8374        pub prop_group_name: ::core::option::Option<::prost::alloc::string::String>,
8375    }
8376    #[derive(serde::Serialize, serde::Deserialize)]
8377    #[allow(clippy::derive_partial_eq_without_eq)]
8378    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8379    pub struct DestroyPhysicsSim {}
8380}
8381#[derive(serde::Serialize, serde::Deserialize)]
8382#[allow(clippy::derive_partial_eq_without_eq)]
8383#[derive(Clone, Copy, PartialEq, ::prost::Message)]
8384pub struct CUserMsgHudError {
8385    #[prost(int32, optional, tag = "1")]
8386    pub order_id: ::core::option::Option<i32>,
8387}
8388#[derive(serde::Serialize, serde::Deserialize)]
8389#[allow(clippy::derive_partial_eq_without_eq)]
8390#[derive(Clone, PartialEq, ::prost::Message)]
8391pub struct CUserMsgCustomGameEvent {
8392    #[prost(string, optional, tag = "1")]
8393    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
8394    #[prost(bytes = "vec", optional, tag = "2")]
8395    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8396}
8397#[derive(serde::Serialize, serde::Deserialize)]
8398#[allow(clippy::derive_partial_eq_without_eq)]
8399#[derive(Clone, Copy, PartialEq, ::prost::Message)]
8400pub struct CUserMessageHapticsManagerPulse {
8401    #[prost(int32, optional, tag = "1")]
8402    pub hand_id: ::core::option::Option<i32>,
8403    #[prost(float, optional, tag = "2")]
8404    pub effect_amplitude: ::core::option::Option<f32>,
8405    #[prost(float, optional, tag = "3")]
8406    pub effect_frequency: ::core::option::Option<f32>,
8407    #[prost(float, optional, tag = "4")]
8408    pub effect_duration: ::core::option::Option<f32>,
8409}
8410#[derive(serde::Serialize, serde::Deserialize)]
8411#[allow(clippy::derive_partial_eq_without_eq)]
8412#[derive(Clone, Copy, PartialEq, ::prost::Message)]
8413pub struct CUserMessageHapticsManagerEffect {
8414    #[prost(int32, optional, tag = "1")]
8415    pub hand_id: ::core::option::Option<i32>,
8416    #[prost(uint32, optional, tag = "2")]
8417    pub effect_name_hash_code: ::core::option::Option<u32>,
8418    #[prost(float, optional, tag = "3")]
8419    pub effect_scale: ::core::option::Option<f32>,
8420}
8421#[derive(serde::Serialize, serde::Deserialize)]
8422#[allow(clippy::derive_partial_eq_without_eq)]
8423#[derive(Clone, PartialEq, ::prost::Message)]
8424pub struct CUserMessageAnimStateGraphState {
8425    #[prost(int32, optional, tag = "1")]
8426    pub entity_index: ::core::option::Option<i32>,
8427    #[prost(bytes = "vec", optional, tag = "2")]
8428    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8429}
8430#[derive(serde::Serialize, serde::Deserialize)]
8431#[allow(clippy::derive_partial_eq_without_eq)]
8432#[derive(Clone, PartialEq, ::prost::Message)]
8433pub struct CUserMessageUpdateCssClasses {
8434    #[prost(int32, optional, tag = "1")]
8435    pub target_world_panel: ::core::option::Option<i32>,
8436    #[prost(string, optional, tag = "2")]
8437    pub css_classes: ::core::option::Option<::prost::alloc::string::String>,
8438    #[prost(bool, optional, tag = "3")]
8439    pub is_add: ::core::option::Option<bool>,
8440}
8441#[derive(serde::Serialize, serde::Deserialize)]
8442#[allow(clippy::derive_partial_eq_without_eq)]
8443#[derive(Clone, Copy, PartialEq, ::prost::Message)]
8444pub struct CUserMessageServerFrameTime {
8445    #[prost(float, optional, tag = "1")]
8446    pub frame_time: ::core::option::Option<f32>,
8447}
8448#[derive(serde::Serialize, serde::Deserialize)]
8449#[allow(clippy::derive_partial_eq_without_eq)]
8450#[derive(Clone, Copy, PartialEq, ::prost::Message)]
8451pub struct CUserMessageLagCompensationError {
8452    #[prost(float, optional, tag = "1")]
8453    pub distance: ::core::option::Option<f32>,
8454}
8455#[derive(serde::Serialize, serde::Deserialize)]
8456#[allow(clippy::derive_partial_eq_without_eq)]
8457#[derive(Clone, PartialEq, ::prost::Message)]
8458pub struct CUserMessageRequestDllStatus {
8459    #[prost(string, optional, tag = "1")]
8460    pub dll_action: ::core::option::Option<::prost::alloc::string::String>,
8461    #[prost(bool, optional, tag = "2")]
8462    pub full_report: ::core::option::Option<bool>,
8463}
8464#[derive(serde::Serialize, serde::Deserialize)]
8465#[allow(clippy::derive_partial_eq_without_eq)]
8466#[derive(Clone, Copy, PartialEq, ::prost::Message)]
8467pub struct CUserMessageRequestUtilAction {
8468    #[prost(int32, optional, tag = "2")]
8469    pub util1: ::core::option::Option<i32>,
8470    #[prost(int32, optional, tag = "3")]
8471    pub util2: ::core::option::Option<i32>,
8472    #[prost(int32, optional, tag = "4")]
8473    pub util3: ::core::option::Option<i32>,
8474    #[prost(int32, optional, tag = "5")]
8475    pub util4: ::core::option::Option<i32>,
8476    #[prost(int32, optional, tag = "6")]
8477    pub util5: ::core::option::Option<i32>,
8478}
8479#[derive(serde::Serialize, serde::Deserialize)]
8480#[allow(clippy::derive_partial_eq_without_eq)]
8481#[derive(Clone, PartialEq, ::prost::Message)]
8482pub struct CUserMessageUtilMsgResponse {
8483    #[prost(fixed32, optional, tag = "1")]
8484    pub crc: ::core::option::Option<u32>,
8485    #[prost(int32, optional, tag = "2")]
8486    pub item_count: ::core::option::Option<i32>,
8487    #[prost(fixed32, optional, tag = "3")]
8488    pub crc2: ::core::option::Option<u32>,
8489    #[prost(int32, optional, tag = "4")]
8490    pub item_count2: ::core::option::Option<i32>,
8491    #[prost(int32, repeated, packed = "false", tag = "5")]
8492    pub crc_part: ::prost::alloc::vec::Vec<i32>,
8493    #[prost(int32, repeated, packed = "false", tag = "6")]
8494    pub crc_part2: ::prost::alloc::vec::Vec<i32>,
8495    #[prost(int32, optional, tag = "7")]
8496    pub client_timestamp: ::core::option::Option<i32>,
8497    #[prost(int32, optional, tag = "8")]
8498    pub platform: ::core::option::Option<i32>,
8499    #[prost(message, repeated, tag = "9")]
8500    pub itemdetails: ::prost::alloc::vec::Vec<c_user_message_util_msg_response::ItemDetail>,
8501    #[prost(int32, optional, tag = "10")]
8502    pub itemgroup: ::core::option::Option<i32>,
8503    #[prost(int32, optional, tag = "11")]
8504    pub total_count: ::core::option::Option<i32>,
8505    #[prost(int32, optional, tag = "12")]
8506    pub total_count2: ::core::option::Option<i32>,
8507}
8508/// Nested message and enum types in `CUserMessage_UtilMsg_Response`.
8509pub mod c_user_message_util_msg_response {
8510    #[derive(serde::Serialize, serde::Deserialize)]
8511    #[allow(clippy::derive_partial_eq_without_eq)]
8512    #[derive(Clone, PartialEq, ::prost::Message)]
8513    pub struct ItemDetail {
8514        #[prost(int32, optional, tag = "1")]
8515        pub index: ::core::option::Option<i32>,
8516        #[prost(int32, optional, tag = "2")]
8517        pub hash: ::core::option::Option<i32>,
8518        #[prost(int32, optional, tag = "3")]
8519        pub crc: ::core::option::Option<i32>,
8520        #[prost(string, optional, tag = "4")]
8521        pub name: ::core::option::Option<::prost::alloc::string::String>,
8522    }
8523}
8524#[derive(serde::Serialize, serde::Deserialize)]
8525#[allow(clippy::derive_partial_eq_without_eq)]
8526#[derive(Clone, PartialEq, ::prost::Message)]
8527pub struct CUserMessageDllStatus {
8528    #[prost(string, optional, tag = "1")]
8529    pub file_report: ::core::option::Option<::prost::alloc::string::String>,
8530    #[prost(string, optional, tag = "2")]
8531    pub command_line: ::core::option::Option<::prost::alloc::string::String>,
8532    #[prost(uint32, optional, tag = "3")]
8533    pub total_files: ::core::option::Option<u32>,
8534    #[prost(uint32, optional, tag = "4")]
8535    pub process_id: ::core::option::Option<u32>,
8536    #[prost(int32, optional, tag = "5")]
8537    pub osversion: ::core::option::Option<i32>,
8538    #[prost(uint64, optional, tag = "6")]
8539    pub client_time: ::core::option::Option<u64>,
8540    #[prost(message, repeated, tag = "7")]
8541    pub diagnostics: ::prost::alloc::vec::Vec<c_user_message_dll_status::CvDiagnostic>,
8542    #[prost(message, repeated, tag = "8")]
8543    pub modules: ::prost::alloc::vec::Vec<c_user_message_dll_status::CModule>,
8544}
8545/// Nested message and enum types in `CUserMessage_DllStatus`.
8546pub mod c_user_message_dll_status {
8547    #[derive(serde::Serialize, serde::Deserialize)]
8548    #[allow(clippy::derive_partial_eq_without_eq)]
8549    #[derive(Clone, PartialEq, ::prost::Message)]
8550    pub struct CvDiagnostic {
8551        #[prost(uint32, optional, tag = "1")]
8552        pub id: ::core::option::Option<u32>,
8553        #[prost(uint32, optional, tag = "2")]
8554        pub extended: ::core::option::Option<u32>,
8555        #[prost(uint64, optional, tag = "3")]
8556        pub value: ::core::option::Option<u64>,
8557        #[prost(string, optional, tag = "4")]
8558        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
8559    }
8560    #[derive(serde::Serialize, serde::Deserialize)]
8561    #[allow(clippy::derive_partial_eq_without_eq)]
8562    #[derive(Clone, PartialEq, ::prost::Message)]
8563    pub struct CModule {
8564        #[prost(uint64, optional, tag = "1")]
8565        pub base_addr: ::core::option::Option<u64>,
8566        #[prost(string, optional, tag = "2")]
8567        pub name: ::core::option::Option<::prost::alloc::string::String>,
8568        #[prost(uint32, optional, tag = "3")]
8569        pub size: ::core::option::Option<u32>,
8570        #[prost(uint32, optional, tag = "4")]
8571        pub timestamp: ::core::option::Option<u32>,
8572    }
8573}
8574#[derive(serde::Serialize, serde::Deserialize)]
8575#[allow(clippy::derive_partial_eq_without_eq)]
8576#[derive(Clone, Copy, PartialEq, ::prost::Message)]
8577pub struct CUserMessageRequestInventory {
8578    #[prost(int32, optional, tag = "1")]
8579    pub inventory: ::core::option::Option<i32>,
8580    #[prost(int32, optional, tag = "2")]
8581    pub offset: ::core::option::Option<i32>,
8582    #[prost(int32, optional, tag = "3")]
8583    pub options: ::core::option::Option<i32>,
8584}
8585#[derive(serde::Serialize, serde::Deserialize)]
8586#[allow(clippy::derive_partial_eq_without_eq)]
8587#[derive(Clone, PartialEq, ::prost::Message)]
8588pub struct CUserMessageInventoryResponse {
8589    #[prost(fixed32, optional, tag = "1")]
8590    pub crc: ::core::option::Option<u32>,
8591    #[prost(int32, optional, tag = "2")]
8592    pub item_count: ::core::option::Option<i32>,
8593    #[prost(int32, optional, tag = "5")]
8594    pub osversion: ::core::option::Option<i32>,
8595    #[prost(int32, optional, tag = "6")]
8596    pub perf_time: ::core::option::Option<i32>,
8597    #[prost(int32, optional, tag = "7")]
8598    pub client_timestamp: ::core::option::Option<i32>,
8599    #[prost(int32, optional, tag = "8")]
8600    pub platform: ::core::option::Option<i32>,
8601    #[prost(message, repeated, tag = "9")]
8602    pub inventories: ::prost::alloc::vec::Vec<c_user_message_inventory_response::InventoryDetail>,
8603    #[prost(message, repeated, tag = "10")]
8604    pub inventories2: ::prost::alloc::vec::Vec<c_user_message_inventory_response::InventoryDetail>,
8605    #[prost(message, repeated, tag = "14")]
8606    pub inventories3: ::prost::alloc::vec::Vec<c_user_message_inventory_response::InventoryDetail>,
8607    #[prost(int32, optional, tag = "11")]
8608    pub inv_type: ::core::option::Option<i32>,
8609    #[prost(int32, optional, tag = "12")]
8610    pub build_version: ::core::option::Option<i32>,
8611    #[prost(int32, optional, tag = "13")]
8612    pub instance: ::core::option::Option<i32>,
8613    #[prost(int64, optional, tag = "15")]
8614    pub start_time: ::core::option::Option<i64>,
8615}
8616/// Nested message and enum types in `CUserMessage_Inventory_Response`.
8617pub mod c_user_message_inventory_response {
8618    #[derive(serde::Serialize, serde::Deserialize)]
8619    #[allow(clippy::derive_partial_eq_without_eq)]
8620    #[derive(Clone, PartialEq, ::prost::Message)]
8621    pub struct InventoryDetail {
8622        #[prost(int32, optional, tag = "1")]
8623        pub index: ::core::option::Option<i32>,
8624        #[prost(int64, optional, tag = "2")]
8625        pub primary: ::core::option::Option<i64>,
8626        #[prost(int64, optional, tag = "3")]
8627        pub offset: ::core::option::Option<i64>,
8628        #[prost(int64, optional, tag = "4")]
8629        pub first: ::core::option::Option<i64>,
8630        #[prost(int64, optional, tag = "5")]
8631        pub base: ::core::option::Option<i64>,
8632        #[prost(string, optional, tag = "6")]
8633        pub name: ::core::option::Option<::prost::alloc::string::String>,
8634        #[prost(string, optional, tag = "7")]
8635        pub base_name: ::core::option::Option<::prost::alloc::string::String>,
8636        #[prost(int32, optional, tag = "8")]
8637        pub base_detail: ::core::option::Option<i32>,
8638        #[prost(int32, optional, tag = "9")]
8639        pub base_time: ::core::option::Option<i32>,
8640        #[prost(int32, optional, tag = "10")]
8641        pub base_hash: ::core::option::Option<i32>,
8642    }
8643}
8644#[derive(serde::Serialize, serde::Deserialize)]
8645#[allow(clippy::derive_partial_eq_without_eq)]
8646#[derive(Clone, PartialEq, ::prost::Message)]
8647pub struct CUserMessageRequestDiagnostic {
8648    #[prost(message, repeated, tag = "1")]
8649    pub diagnostics: ::prost::alloc::vec::Vec<c_user_message_request_diagnostic::Diagnostic>,
8650}
8651/// Nested message and enum types in `CUserMessageRequestDiagnostic`.
8652pub mod c_user_message_request_diagnostic {
8653    #[derive(serde::Serialize, serde::Deserialize)]
8654    #[allow(clippy::derive_partial_eq_without_eq)]
8655    #[derive(Clone, PartialEq, ::prost::Message)]
8656    pub struct Diagnostic {
8657        #[prost(int32, optional, tag = "1")]
8658        pub index: ::core::option::Option<i32>,
8659        #[prost(int64, optional, tag = "2")]
8660        pub offset: ::core::option::Option<i64>,
8661        #[prost(int32, optional, tag = "3")]
8662        pub param: ::core::option::Option<i32>,
8663        #[prost(int32, optional, tag = "4")]
8664        pub length: ::core::option::Option<i32>,
8665        #[prost(int32, optional, tag = "5")]
8666        pub r#type: ::core::option::Option<i32>,
8667        #[prost(int64, optional, tag = "6")]
8668        pub base: ::core::option::Option<i64>,
8669        #[prost(int64, optional, tag = "7")]
8670        pub range: ::core::option::Option<i64>,
8671        #[prost(int64, optional, tag = "8")]
8672        pub extent: ::core::option::Option<i64>,
8673        #[prost(int64, optional, tag = "9")]
8674        pub detail: ::core::option::Option<i64>,
8675        #[prost(string, optional, tag = "10")]
8676        pub name: ::core::option::Option<::prost::alloc::string::String>,
8677        #[prost(string, optional, tag = "11")]
8678        pub alias: ::core::option::Option<::prost::alloc::string::String>,
8679        #[prost(bytes = "vec", optional, tag = "12")]
8680        pub vardetail: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8681        #[prost(int32, optional, tag = "13")]
8682        pub context: ::core::option::Option<i32>,
8683    }
8684}
8685#[derive(serde::Serialize, serde::Deserialize)]
8686#[allow(clippy::derive_partial_eq_without_eq)]
8687#[derive(Clone, PartialEq, ::prost::Message)]
8688pub struct CUserMessageDiagnosticResponse {
8689    #[prost(message, repeated, tag = "1")]
8690    pub diagnostics: ::prost::alloc::vec::Vec<c_user_message_diagnostic_response::Diagnostic>,
8691    #[prost(int32, optional, tag = "2")]
8692    pub build_version: ::core::option::Option<i32>,
8693    #[prost(int32, optional, tag = "3")]
8694    pub instance: ::core::option::Option<i32>,
8695    #[prost(int64, optional, tag = "4")]
8696    pub start_time: ::core::option::Option<i64>,
8697    #[prost(int32, optional, tag = "5")]
8698    pub osversion: ::core::option::Option<i32>,
8699    #[prost(int32, optional, tag = "6")]
8700    pub platform: ::core::option::Option<i32>,
8701}
8702/// Nested message and enum types in `CUserMessage_Diagnostic_Response`.
8703pub mod c_user_message_diagnostic_response {
8704    #[derive(serde::Serialize, serde::Deserialize)]
8705    #[allow(clippy::derive_partial_eq_without_eq)]
8706    #[derive(Clone, PartialEq, ::prost::Message)]
8707    pub struct Diagnostic {
8708        #[prost(int32, optional, tag = "1")]
8709        pub index: ::core::option::Option<i32>,
8710        #[prost(int64, optional, tag = "2")]
8711        pub offset: ::core::option::Option<i64>,
8712        #[prost(int32, optional, tag = "3")]
8713        pub param: ::core::option::Option<i32>,
8714        #[prost(int32, optional, tag = "4")]
8715        pub length: ::core::option::Option<i32>,
8716        #[prost(bytes = "vec", optional, tag = "5")]
8717        pub detail: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8718        #[prost(int64, optional, tag = "6")]
8719        pub base: ::core::option::Option<i64>,
8720        #[prost(int64, optional, tag = "7")]
8721        pub range: ::core::option::Option<i64>,
8722        #[prost(int32, optional, tag = "8")]
8723        pub r#type: ::core::option::Option<i32>,
8724        #[prost(string, optional, tag = "10")]
8725        pub name: ::core::option::Option<::prost::alloc::string::String>,
8726        #[prost(string, optional, tag = "11")]
8727        pub alias: ::core::option::Option<::prost::alloc::string::String>,
8728        #[prost(bytes = "vec", optional, tag = "12")]
8729        pub backup: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8730        #[prost(int32, optional, tag = "13")]
8731        pub context: ::core::option::Option<i32>,
8732        #[prost(int64, optional, tag = "14")]
8733        pub control: ::core::option::Option<i64>,
8734        #[prost(int64, optional, tag = "15")]
8735        pub augment: ::core::option::Option<i64>,
8736        #[prost(int64, optional, tag = "16")]
8737        pub placebo: ::core::option::Option<i64>,
8738    }
8739}
8740#[derive(serde::Serialize, serde::Deserialize)]
8741#[allow(clippy::derive_partial_eq_without_eq)]
8742#[derive(Clone, PartialEq, ::prost::Message)]
8743pub struct CUserMessageExtraUserData {
8744    #[prost(int32, optional, tag = "1")]
8745    pub item: ::core::option::Option<i32>,
8746    #[prost(int64, optional, tag = "2")]
8747    pub value1: ::core::option::Option<i64>,
8748    #[prost(int64, optional, tag = "3")]
8749    pub value2: ::core::option::Option<i64>,
8750    #[prost(bytes = "vec", repeated, tag = "4")]
8751    pub detail1: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
8752    #[prost(bytes = "vec", repeated, tag = "5")]
8753    pub detail2: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
8754}
8755#[derive(serde::Serialize, serde::Deserialize)]
8756#[allow(clippy::derive_partial_eq_without_eq)]
8757#[derive(Clone, PartialEq, ::prost::Message)]
8758pub struct CUserMessageNotifyResponseFound {
8759    #[prost(int32, optional, tag = "1", default = "-1")]
8760    pub ent_index: ::core::option::Option<i32>,
8761    #[prost(string, optional, tag = "2")]
8762    pub rule_name: ::core::option::Option<::prost::alloc::string::String>,
8763    #[prost(string, optional, tag = "3")]
8764    pub response_value: ::core::option::Option<::prost::alloc::string::String>,
8765    #[prost(string, optional, tag = "4")]
8766    pub response_concept: ::core::option::Option<::prost::alloc::string::String>,
8767    #[prost(message, repeated, tag = "5")]
8768    pub criteria: ::prost::alloc::vec::Vec<c_user_message_notify_response_found::Criteria>,
8769}
8770/// Nested message and enum types in `CUserMessage_NotifyResponseFound`.
8771pub mod c_user_message_notify_response_found {
8772    #[derive(serde::Serialize, serde::Deserialize)]
8773    #[allow(clippy::derive_partial_eq_without_eq)]
8774    #[derive(Clone, PartialEq, ::prost::Message)]
8775    pub struct Criteria {
8776        #[prost(uint32, optional, tag = "1")]
8777        pub name_symbol: ::core::option::Option<u32>,
8778        #[prost(string, optional, tag = "2")]
8779        pub value: ::core::option::Option<::prost::alloc::string::String>,
8780    }
8781}
8782#[derive(serde::Serialize, serde::Deserialize)]
8783#[allow(clippy::derive_partial_eq_without_eq)]
8784#[derive(Clone, PartialEq, ::prost::Message)]
8785pub struct CUserMessagePlayResponseConditional {
8786    #[prost(int32, optional, tag = "1", default = "-1")]
8787    pub ent_index: ::core::option::Option<i32>,
8788    #[prost(int32, repeated, packed = "false", tag = "2")]
8789    pub player_slots: ::prost::alloc::vec::Vec<i32>,
8790    #[prost(string, optional, tag = "3")]
8791    pub response: ::core::option::Option<::prost::alloc::string::String>,
8792    #[prost(message, optional, tag = "4")]
8793    pub ent_origin: ::core::option::Option<CMsgVector>,
8794}
8795#[derive(
8796    serde::Serialize,
8797    serde::Deserialize,
8798    Clone,
8799    Copy,
8800    Debug,
8801    PartialEq,
8802    Eq,
8803    Hash,
8804    PartialOrd,
8805    Ord,
8806    ::prost::Enumeration,
8807)]
8808#[repr(i32)]
8809pub enum EBaseUserMessages {
8810    UmAchievementEvent = 101,
8811    UmCloseCaption = 102,
8812    UmCloseCaptionDirect = 103,
8813    UmCurrentTimescale = 104,
8814    UmDesiredTimescale = 105,
8815    UmFade = 106,
8816    UmGameTitle = 107,
8817    UmHudMsg = 110,
8818    UmHudText = 111,
8819    UmColoredText = 113,
8820    UmRequestState = 114,
8821    UmResetHud = 115,
8822    UmRumble = 116,
8823    UmSayText = 117,
8824    UmSayText2 = 118,
8825    UmSayTextChannel = 119,
8826    UmShake = 120,
8827    UmShakeDir = 121,
8828    UmWaterShake = 122,
8829    UmTextMsg = 124,
8830    UmScreenTilt = 125,
8831    UmVoiceMask = 128,
8832    UmSendAudio = 130,
8833    UmItemPickup = 131,
8834    UmAmmoDenied = 132,
8835    UmShowMenu = 134,
8836    UmCreditsMsg = 135,
8837    UmCloseCaptionPlaceholder = 142,
8838    UmCameraTransition = 143,
8839    UmAudioParameter = 144,
8840    UmParticleManager = 145,
8841    UmHudError = 146,
8842    UmCustomGameEvent = 148,
8843    UmAnimGraphUpdate = 149,
8844    UmHapticsManagerPulse = 150,
8845    UmHapticsManagerEffect = 151,
8846    UmCommandQueueState = 152,
8847    UmUpdateCssClasses = 153,
8848    UmServerFrameTime = 154,
8849    UmLagCompensationError = 155,
8850    UmRequestDllStatus = 156,
8851    UmRequestUtilAction = 157,
8852    UmUtilActionResponse = 158,
8853    UmDllStatusResponse = 159,
8854    UmRequestInventory = 160,
8855    UmInventoryResponse = 161,
8856    UmRequestDiagnostic = 162,
8857    UmDiagnosticResponse = 163,
8858    UmExtraUserData = 164,
8859    UmNotifyResponseFound = 165,
8860    UmPlayResponseConditional = 166,
8861    UmMaxBase = 200,
8862}
8863#[derive(
8864    serde::Serialize,
8865    serde::Deserialize,
8866    Clone,
8867    Copy,
8868    Debug,
8869    PartialEq,
8870    Eq,
8871    Hash,
8872    PartialOrd,
8873    Ord,
8874    ::prost::Enumeration,
8875)]
8876#[repr(i32)]
8877pub enum EBaseEntityMessages {
8878    EmPlayJingle = 136,
8879    EmScreenOverlay = 137,
8880    EmRemoveAllDecals = 138,
8881    EmPropagateForce = 139,
8882    EmDoSpark = 140,
8883    EmFixAngle = 141,
8884}
8885#[derive(
8886    serde::Serialize,
8887    serde::Deserialize,
8888    Clone,
8889    Copy,
8890    Debug,
8891    PartialEq,
8892    Eq,
8893    Hash,
8894    PartialOrd,
8895    Ord,
8896    ::prost::Enumeration,
8897)]
8898#[repr(i32)]
8899pub enum ERollType {
8900    RollNone = -1,
8901    RollStats = 0,
8902    RollCredits = 1,
8903    RollLateJoinLogo = 2,
8904    RollOuttro = 3,
8905}
8906#[derive(
8907    serde::Serialize,
8908    serde::Deserialize,
8909    Clone,
8910    Copy,
8911    Debug,
8912    PartialEq,
8913    Eq,
8914    Hash,
8915    PartialOrd,
8916    Ord,
8917    ::prost::Enumeration,
8918)]
8919#[repr(i32)]
8920pub enum ParticleMessage {
8921    GameParticleManagerEventCreate = 0,
8922    GameParticleManagerEventUpdate = 1,
8923    GameParticleManagerEventUpdateForward = 2,
8924    GameParticleManagerEventUpdateOrientation = 3,
8925    GameParticleManagerEventUpdateFallback = 4,
8926    GameParticleManagerEventUpdateEnt = 5,
8927    GameParticleManagerEventUpdateOffset = 6,
8928    GameParticleManagerEventDestroy = 7,
8929    GameParticleManagerEventDestroyInvolving = 8,
8930    GameParticleManagerEventRelease = 9,
8931    GameParticleManagerEventLatency = 10,
8932    GameParticleManagerEventShouldDraw = 11,
8933    GameParticleManagerEventFrozen = 12,
8934    GameParticleManagerEventChangeControlPointAttachment = 13,
8935    GameParticleManagerEventUpdateEntityPosition = 14,
8936    GameParticleManagerEventSetFowProperties = 15,
8937    GameParticleManagerEventSetText = 16,
8938    GameParticleManagerEventSetShouldCheckFow = 17,
8939    GameParticleManagerEventSetControlPointModel = 18,
8940    GameParticleManagerEventSetControlPointSnapshot = 19,
8941    GameParticleManagerEventSetTextureAttribute = 20,
8942    GameParticleManagerEventSetSceneObjectGenericFlag = 21,
8943    GameParticleManagerEventSetSceneObjectTintAndDesat = 22,
8944    GameParticleManagerEventDestroyNamed = 23,
8945    GameParticleManagerEventSkipToTime = 24,
8946    GameParticleManagerEventCanFreeze = 25,
8947    GameParticleManagerEventSetNamedValueContext = 26,
8948    GameParticleManagerEventUpdateTransform = 27,
8949    GameParticleManagerEventFreezeTransitionOverride = 28,
8950    GameParticleManagerEventFreezeInvolving = 29,
8951    GameParticleManagerEventAddModellistOverrideElement = 30,
8952    GameParticleManagerEventClearModellistOverride = 31,
8953    GameParticleManagerEventCreatePhysicsSim = 32,
8954    GameParticleManagerEventDestroyPhysicsSim = 33,
8955}
8956#[derive(
8957    serde::Serialize,
8958    serde::Deserialize,
8959    Clone,
8960    Copy,
8961    Debug,
8962    PartialEq,
8963    Eq,
8964    Hash,
8965    PartialOrd,
8966    Ord,
8967    ::prost::Enumeration,
8968)]
8969#[repr(i32)]
8970pub enum EHapticPulseType {
8971    VrHandHapticPulseLight = 0,
8972    VrHandHapticPulseMedium = 1,
8973    VrHandHapticPulseStrong = 2,
8974}