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;
}

message CDOTAClientMsg_MapPing {
	optional .CDOTAMsg_LocationPing location_ping = 1;
}

message CDOTAClientMsg_ItemAlert {
	optional .CDOTAMsg_ItemAlert item_alert = 1;
}

message CDOTAClientMsg_EnemyItemAlert {
	optional uint32 item_entindex = 1;
	optional uint32 rune_type = 2;
	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 uint32 target_entindex = 2;
}

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

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

message CDOTAClientMsg_GlyphAlert {
	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 uint32 playerID = 1;
	optional uint32 flag = 2;
	optional bool state = 3;
}

message CDOTAClientMsg_SwapRequest {
	optional uint32 player_id = 1;
}

message CDOTAClientMsg_SwapAccept {
	optional uint32 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;
}

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;
	optional bool purchasable = 2;
}

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 uint32 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_EventPointsTip {
	optional uint32 recipient_player_id = 1;
}

message CDOTAClientMsg_ExecuteOrders {
	repeated .CDOTAMsg_UnitOrder orders = 1;
}

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

message CDOTAClientMsg_KillcamDamageTaken {
	optional uint32 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 uint32 target_entindex = 2;
}

message CDOTAClientMsg_SetEnemyStartingPosition {
	optional uint32 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 uint32 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;
}

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;
}

