import "dota_commonmessages.proto";
import "dota_shared_enums.proto";

option optimize_for = SPEED;
option cc_generic_services = false;

enum EDotaClientMessages {
	DOTA_CM_MapLine = 301;
	DOTA_CM_AspectRatio = 302;
	DOTA_CM_MapPing = 303;
	DOTA_CM_UnitsAutoAttack = 304;
	DOTA_CM_SearchString = 307;
	DOTA_CM_Pause = 308;
	DOTA_CM_ShopViewMode = 309;
	DOTA_CM_SetUnitShareFlag = 310;
	DOTA_CM_SwapRequest = 311;
	DOTA_CM_SwapAccept = 312;
	DOTA_CM_WorldLine = 313;
	DOTA_CM_RequestGraphUpdate = 314;
	DOTA_CM_ItemAlert = 315;
	DOTA_CM_ChatWheel = 316;
	DOTA_CM_SendStatPopup = 317;
	DOTA_CM_BeginLastHitChallenge = 318;
	DOTA_CM_UpdateQuickBuy = 319;
	DOTA_CM_UpdateCoachListen = 320;
	DOTA_CM_CoachHUDPing = 321;
	DOTA_CM_RecordVote = 322;
	DOTA_CM_UnitsAutoAttackAfterSpell = 323;
	DOTA_CM_WillPurchaseAlert = 324;
	DOTA_CM_PlayerShowCase = 325;
	DOTA_CM_TeleportRequiresHalt = 326;
	DOTA_CM_CameraZoomAmount = 327;
	DOTA_CM_BroadcasterUsingCamerman = 328;
	DOTA_CM_BroadcasterUsingAssistedCameraOperator = 329;
	DOTA_CM_EnemyItemAlert = 330;
	DOTA_CM_FreeInventory = 331;
	DOTA_CM_BuyBackStateAlert = 332;
	DOTA_CM_QuickBuyAlert = 333;
	DOTA_CM_HeroStatueLike = 334;
	DOTA_CM_ModifierAlert = 335;
	DOTA_CM_TeamShowcaseEditor = 336;
	DOTA_CM_HPManaAlert = 337;
	DOTA_CM_GlyphAlert = 338;
	DOTA_CM_TeamShowcaseClientData = 339;
	DOTA_CM_PlayTeamShowcase = 340;
	DOTA_CM_EventCNY2015Cmd = 341;
	DOTA_CM_FillEmptySlotsWithBots = 342;
	DOTA_CM_DemoHero = 343;
	DOTA_CM_AbilityLearnModeToggled = 344;
	DOTA_CM_AbilityStartUse = 345;
	DOTA_CM_ChallengeSelect = 346;
	DOTA_CM_ChallengeReroll = 347;
	DOTA_CM_ClickedBuff = 348;
	DOTA_CM_CoinWager = 349;
	DOTA_CM_ExecuteOrders = 350;
	DOTA_CM_XPAlert = 351;
	DOTA_CM_EventPointsTip = 353;
	DOTA_CM_MatchMetadata = 354;
	DOTA_CM_KillMyHero = 355;
	DOTA_CM_QuestStatus = 356;
	DOTA_CM_ToggleAutoattack = 357;
	DOTA_CM_SpecialAbility = 358;
	DOTA_CM_KillcamDamageTaken = 359;
	DOTA_CM_SetEnemyStartingPosition = 360;
	DOTA_CM_SetDesiredWardPlacement = 361;
	DOTA_CM_RollDice = 362;
	DOTA_CM_FlipCoin = 363;
	DOTA_CM_RequestItemSuggestions = 364;
	DOTA_CM_MakeTeamCaptain = 365;
	DOTA_CM_CoinWagerToken = 366;
	DOTA_CM_RankWager = 367;
	DOTA_CM_DismissAllStatPopups = 368;
	DOTA_CM_HelpTipSystemStateChanged = 369;
	DOTA_CM_ChannelRequiresHalt = 370;
	DOTA_CM_RequestBulkCombatLog = 371;
	DOTA_CM_AbilityDraftRequestAbility = 372;
	DOTA_CM_GuideSelectOption = 373;
	DOTA_CM_GuideSelected = 374;
	DOTA_CM_DamageReport = 375;
	DOTA_CM_SalutePlayer = 376;
	DOTA_CM_SprayWheel = 377;
	DOTA_CM_TipAlert = 378;
	DOTA_CM_EmptyTeleportAlert = 379;
	DOTA_CM_RadarAlert = 380;
	DOTA_CM_TalentTreeAlert = 381;
	DOTA_CM_SetCavernMapVariant = 382;
	DOTA_CM_PauseGameOrder = 383;
	DOTA_CM_VersusScene_PlayerBehavior = 384;
	DOTA_CM_PlayerBounty = 385;
	DOTA_CM_PlayerBountyCancel = 386;
	DOTA_CM_EmptyItemSlotAlert = 388;
	DOTA_CM_AddOverwatchReportMarker = 389;
	DOTA_CM_AghsStatusAlert = 390;
	DOTA_CM_PerfReport = 391;
	DOTA_CM_ContextualTips_Subscribe = 393;
	DOTA_CM_ChatMessage = 394;
	DOTA_CM_AddCommunicationsReportMarker = 395;
	DOTA_CM_AddCommunicationsBlockMarker = 396;
	DOTA_CM_NeutralCampAlert = 397;
	DOTA_CM_DuelAccepted = 398;
}

message CDOTAClientMsg_MapPing {
	optional .CDOTAMsg_LocationPing location_ping = 1;
}

message CDOTAClientMsg_ItemAlert {
	optional .CDOTAMsg_ItemAlert item_alert = 1;
}

message CDOTAClientMsg_EnemyItemAlert {
	optional int32 item_entindex = 1;
	optional int32 rune_type = 2 [default = -1];
	optional int32 item_level = 3 [default = -1];
	optional int32 primary_charges = 4 [default = -1];
	optional int32 secondary_charges = 5 [default = -1];
}

message CDOTAClientMsg_ModifierAlert {
	optional int32 buff_internal_index = 1;
	optional int32 target_entindex = 2;
}

message CDOTAClientMsg_ClickedBuff {
	optional int32 buff_internal_index = 1;
	optional int32 target_entindex = 2;
}

message CDOTAClientMsg_HPManaAlert {
	optional int32 target_entindex = 1;
	optional bool show_raw_values = 2;
}

message CDOTAClientMsg_NeutralCampAlert {
	optional int32 spawner_entindex = 1;
	optional int32 unit_entindex = 2;
	optional bool stack_request = 3;
}

message CDOTAClientMsg_GlyphAlert {
	optional bool negative = 1;
}

message CDOTAClientMsg_RadarAlert {
	optional bool negative = 1;
}

message CDOTAClientMsg_MapLine {
	optional .CDOTAMsg_MapLine mapline = 1;
}

message CDOTAClientMsg_AspectRatio {
	optional float ratio = 1;
}

message CDOTAClientMsg_UnitsAutoAttackMode {
	enum EMode {
		INVALID = -1;
		NEVER = 0;
		AFTER_SPELLCAST = 1;
		ALWAYS = 2;
	}

	enum EUnitType {
		NORMAL = 0;
		SUMMONED = 1;
	}

	optional .CDOTAClientMsg_UnitsAutoAttackMode.EMode mode = 1 [default = INVALID];
	optional .CDOTAClientMsg_UnitsAutoAttackMode.EUnitType unit_type = 2 [default = NORMAL];
}

message CDOTAClientMsg_UnitsAutoAttackAfterSpell {
	optional bool enabled = 1;
}

message CDOTAClientMsg_TeleportRequiresHalt {
	optional bool enabled = 1;
}

message CDOTAClientMsg_ChannelRequiresHalt {
	optional bool enabled = 1;
}

message CDOTAClientMsg_SearchString {
	optional string search = 1;
}

message CDOTAClientMsg_Pause {
}

message CDOTAClientMsg_ShopViewMode {
	optional uint32 mode = 1;
}

message CDOTAClientMsg_SetUnitShareFlag {
	optional int32 player_id = 1;
	optional uint32 flag = 2;
	optional bool state = 3;
}

message CDOTAClientMsg_SwapRequest {
	optional int32 player_id = 1;
}

message CDOTAClientMsg_SwapAccept {
	optional int32 player_id = 1;
}

message CDOTAClientMsg_WorldLine {
	optional .CDOTAMsg_WorldLine worldline = 1;
}

message CDOTAClientMsg_RequestGraphUpdate {
}

message CDOTAClientMsg_ChatWheel {
	optional uint32 chat_message_id = 1;
	optional uint32 param_hero_id = 2;
	optional uint32 emoticon_id = 3;
}

message CDOTAClientMsg_SendStatPopup {
	optional .CDOTAMsg_SendStatPopup statpopup = 1;
}

message CDOTAClientMsg_DismissAllStatPopups {
	optional .CDOTAMsg_DismissAllStatPopups dismissallmsg = 1;
}

message CDOTAClientMsg_BeginLastHitChallenge {
	optional uint32 chosen_lane = 1;
	optional bool helper_enabled = 2;
}

message CDOTAClientMsg_UpdateQuickBuyItem {
	optional int32 item_ability_id = 1 [default = -1];
	optional bool purchasable = 2 [default = false];
}

message CDOTAClientMsg_UpdateQuickBuy {
	repeated .CDOTAClientMsg_UpdateQuickBuyItem items = 1;
}

message CDOTAClientMsg_RecordVote {
	optional int32 choice_index = 1;
}

message CDOTAClientMsg_WillPurchaseAlert {
	optional int32 item_ability_id = 1;
	optional uint32 gold_remaining = 2;
	optional int32 suggestion_player_id = 3;
}

message CDOTAClientMsg_BuyBackStateAlert {
}

message CDOTAClientMsg_QuickBuyAlert {
	optional int32 item_ability_id = 1;
	optional int32 gold_cost = 2;
	optional int32 item_cooldown_seconds = 3;
	optional bool show_buyback = 4;
}

message CDOTAClientMsg_PlayerShowCase {
	optional bool showcase = 1;
}

message CDOTAClientMsg_CameraZoomAmount {
	optional float zoom_amount = 1;
}

message CDOTAClientMsg_BroadcasterUsingCameraman {
	optional bool cameraman = 1;
}

message CDOTAClientMsg_BroadcasterUsingAssistedCameraOperator {
	optional bool enabled = 1;
}

message CAdditionalEquipSlotClientMsg {
	optional uint32 class_id = 1;
	optional uint32 slot_id = 2;
	optional uint32 def_index = 3;
}

message CDOTAClientMsg_FreeInventory {
	repeated .CAdditionalEquipSlotClientMsg equips = 1;
}

message CDOTAClientMsg_FillEmptySlotsWithBots {
	optional bool fillwithbots = 1;
}

message CDOTAClientMsg_HeroStatueLike {
	optional int32 owner_player_id = 1;
}

message CDOTAClientMsg_EventCNY2015Cmd {
	optional bytes data = 1;
}

message CDOTAClientMsg_DemoHero {
	optional int32 hero_id = 1;
	optional int32 hero_id_to_spawn = 2;
	repeated uint32 item_defs = 3;
	repeated uint64 item_ids = 4;
	optional uint32 style_index = 5;
	optional bool keep_existing_demohero = 6;
}

message CDOTAClientMsg_ChallengeSelect {
	optional uint32 event_id = 1;
	optional uint32 slot_id = 2;
	optional uint32 sequence_id = 3;
}

message CDOTAClientMsg_ChallengeReroll {
	optional .EEvent event_id = 1 [default = EVENT_ID_NONE];
	optional uint32 slot_id = 2;
	optional uint32 sequence_id = 3;
	optional uint32 hero_id = 4;
}

message CDOTAClientMsg_CoinWager {
	optional uint32 wager_amount = 1;
}

message CDOTAClientMsg_CoinWagerToken {
	optional uint64 wager_token_item_id = 1;
}

message CDOTAClientMsg_RankWager {
	optional bool announce_wager = 1;
}

message CDOTAClientMsg_PlayerBounty {
	optional int32 player_id = 1;
}

message CDOTAClientMsg_EventPointsTip {
	optional int32 recipient_player_id = 1;
}

message CDOTAClientMsg_ExecuteOrders {
	repeated .CDOTAMsg_UnitOrder orders = 1;
}

message CDOTAClientMsg_XPAlert {
	optional int32 target_entindex = 1;
	optional uint32 damage_taken = 2;
}

message CDOTAClientMsg_TalentTreeAlert {
	optional int32 target_entindex = 1;
	optional int32 ability_id = 2;
	optional int32 slot = 3;
	optional bool learned = 4;
}

message CDOTAClientMsg_KillcamDamageTaken {
	optional int32 target_entindex = 1;
	optional uint32 damage_taken = 2;
	optional uint32 item_type = 3;
	optional uint32 item_ability_id = 4;
	optional string hero_name = 5;
	optional string damage_color = 6;
}

message CDOTAClientMsg_MatchMetadata {
	optional uint64 match_id = 1;
	optional bytes metadata = 2;
}

message CDOTAClientMsg_KillMyHero {
}

message CDOTAClientMsg_QuestStatus {
	optional uint32 quest_id = 1;
	optional uint32 challenge_id = 2;
	optional uint32 progress = 3;
	optional uint32 goal = 4;
	optional uint32 query = 5;
	optional float fail_gametime = 6;
	optional uint32 item_ability_id = 7;
}

message CDOTAClientMsg_ToggleAutoattack {
	optional int32 mode = 1;
	optional bool show_message = 2;
}

message CDOTAClientMsg_SpecialAbility {
	optional uint32 ability_index = 1;
	optional int32 target_entindex = 2;
}

message CDOTAClientMsg_SetEnemyStartingPosition {
	optional int32 enemy_player_id = 1;
	optional uint32 enemy_starting_position = 2;
}

message CDOTAClientMsg_SetDesiredWardPlacement {
	optional uint32 ward_index = 1;
	optional float ward_x = 2;
	optional float ward_y = 3;
}

message CDOTAClientMsg_RollDice {
	optional uint32 channel_type = 1;
	optional uint32 roll_min = 2;
	optional uint32 roll_max = 3;
}

message CDOTAClientMsg_FlipCoin {
	optional uint32 channel_type = 1;
}

message CDOTAClientMsg_RequestItemSuggestions {
}

message CDOTAClientMsg_MakeTeamCaptain {
	optional int32 player_id = 1;
}

message CDOTAClientMsg_HelpTipSystemStateChanged {
	optional bool tip_displayed = 1;
}

message CDOTAClientMsg_RequestBulkCombatLog {
	optional float game_time = 1;
	optional float duration = 2;
	optional bool recent_player_death = 3;
	optional int32 player_id = 4;
}

message CDOTAClientMsg_AbilityDraftRequestAbility {
	optional uint32 requested_ability_id = 1;
	optional bool ctrl_is_down = 2;
}

message CDOTAClientMsg_GuideSelectOption {
	optional uint32 option = 1;
	optional bool force_recalculate = 2;
}

message CDOTAClientMsg_GuideSelected {
	optional uint64 guide_workshop_id = 1;
	optional bool is_plus_guide = 2;
}

message CDOTAClientMsg_DamageReport {
	optional uint32 target_hero_id = 1;
	optional uint32 source_hero_id = 2;
	optional int32 damage_amount = 3;
	optional bool broadcast = 4;
}

message CDOTAClientMsg_SalutePlayer {
	optional int32 target_player_id = 1;
	optional int32 event_id = 2;
}

message CDOTAClientMsg_TipAlert {
	optional string tip_text = 1;
}

message CDOTAClientMsg_EmptyTeleportAlert {
	optional int32 target_entindex = 1;
}

message CDOTAClientMsg_SetCavernMapVariant {
	optional uint32 map_variant = 1;
}

message CDOTAClientMsg_PauseGameOrder {
	optional int32 order_id = 1;
	optional int32 data = 2;
}

message CDOTAClientMsg_VersusScene_PlayerBehavior {
	optional .EDOTAVersusScenePlayerBehavior behavior = 1 [default = VS_PLAYER_BEHAVIOR_PLAY_ACTIVITY];
	optional .VersusScene_PlayActivity play_activity = 2;
	optional .VersusScene_ChatWheel chat_wheel = 3;
	optional .VersusScene_PlaybackRate playback_rate = 4;
}

message CDOTAClientMsg_EmptyItemSlotAlert {
	optional int32 target_entindex = 1;
	optional int32 slot_index = 2;
}

message CDOTAClientMsg_AddOverwatchReportMarker {
	optional int32 target_player_id = 1;
	optional .EOverwatchReportReason reason = 2 [default = k_EOverwatchReportReason_Unknown];
	optional uint32 seconds_ago = 4;
}

message CDOTAClientMsg_AddCommunicationsReportMarker {
	optional int32 target_player_id = 1;
}

message CDOTAClientMsg_AddCommunicationsBlockMarker {
	optional int32 target_player_id = 1;
}

message CDOTAClientMsg_AghsStatusAlert {
	optional int32 source_player_id = 1;
	optional int32 target_player_id = 2;
	optional int32 target_entindex = 3;
	optional uint32 alert_type = 4;
}

message CDOTAClientMsg_PerfReport {
	optional float average_frame_time = 1;
	optional float max_frame_time = 2;
	optional float average_compute_time = 3;
	optional float max_compute_time = 4;
	optional float average_client_tick_time = 5;
	optional float max_client_tick_time = 6;
	optional float average_client_simulate_time = 7;
	optional float max_client_simulate_time = 8;
	optional float average_output_time = 9;
	optional float max_output_time = 10;
	optional float average_wait_for_rendering_to_complete_time = 11;
	optional float max_wait_for_rendering_to_complete_time = 12;
	optional float average_swap_time = 13;
	optional float max_swap_time = 14;
	optional float average_frame_update_time = 15;
	optional float max_frame_update_time = 16;
	optional float average_idle_time = 17;
	optional float max_idle_time = 18;
	optional float average_input_processing_time = 19;
	optional float max_input_processing_time = 20;
}

message CDOTAClientMsg_ContextualTips_Subscribe_Entry {
	optional bool unsubscribe = 1;
	optional int32 tip_id = 2;
	optional int32 prior_display_count = 3;
	repeated int32 variants_seen = 4;
}

message CDOTAClientMsg_ContextualTips_Subscribe {
	repeated .CDOTAClientMsg_ContextualTips_Subscribe_Entry tips = 1;
}

message CDOTAClientMsg_ChatMessage {
	optional uint32 channel_type = 1;
	optional string message_text = 2;
}

message CDOTAClientMsg_DuelAccepted {
	optional int32 challenger_player_id = 1;
	optional int32 accepter_player_id = 2;
}
