import "dota_commonmessages.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;
}

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

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

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_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_BeginLastHitChallenge {
	optional uint32 chosen_lane = 1;
	optional bool helper_enabled = 2;
}

message CDOTAClientMsg_UpdateQuickBuyItem {
	optional int32 item_type = 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 itemid = 1;
	optional uint32 gold_remaining = 2;
	optional int32 suggestion_player_id = 3;
}

message CDOTAClientMsg_BuyBackStateAlert {
}

message CDOTAClientMsg_QuickBuyAlert {
	optional int32 itemid = 1;
	optional int32 gold_required = 2;
}

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 uint32 event_id = 1;
	optional uint32 slot_id = 2;
	optional uint32 sequence_id = 3;
}

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

