import "dota_shared_enums.proto"; message CScenario_Position { optional float x = 1; optional float y = 2; } message CScenarioGame_RoshanSpawner { optional int32 kill_count = 1; optional int32 state = 2; optional float cooldown = 3; optional int32 killer_team = 4; } message CScenarioEnt_Courier { optional int32 team_number = 1; optional int32 owner_player_id = 2 [default = -1]; optional float cooldown = 3 [default = -1]; } message CScenarioEnt_NPC { optional .CScenario_Position position = 1; optional string unit_name = 2; optional int32 team_number = 3; optional float health_frac = 4 [default = 1]; optional string owning_camp = 10; optional .CScenario_Position owning_camp_position = 11; optional string invade_goal = 20; } message CScenarioEnt_SpiritBear { optional int32 owner_id = 1 [default = -1]; optional int32 team_id = 2; } message CScenarioEnt_DroppedItem { optional .CScenario_Position position = 1; } message CMsgDotaScenario { message EntityRef { optional int32 player_id = 1 [default = -1]; optional int32 neutral_stash_id = 2 [default = -1]; optional int32 entity_idx = 3 [default = -1]; optional bool roshan = 4 [default = false]; optional string ability_name = 10; } message Game { optional uint64 match_id = 1; optional int32 game_mode = 2; optional float clock_time = 3; optional float internal_time = 4; optional .CScenarioGame_RoshanSpawner roshan = 5; } message TeamNeutralItem { optional string name = 1; optional bool consumed = 2; optional int32 tier = 3; } message Team { optional int32 team_number = 1; repeated .CMsgDotaScenario.TeamNeutralItem neutral_items = 2; optional int32 hero_kills = 3; optional int32 tower_kills = 4; optional int32 barracks_kills = 5; optional float glyph_cooldown = 6; optional float radar_cooldown = 7; } message HeroHeroInt { optional int32 player_id = 1 [default = -1]; optional int32 value = 2; } message HeroHeroFloat { optional int32 player_id = 1 [default = -1]; optional float value = 2; } message DamageStatsByType { optional int32 damage_type = 1; optional int32 received_pre_reduction = 2; optional int32 received_post_reduction = 3; optional int32 outgoing_pre_reduction = 4; optional int32 outgoing_post_reduction = 5; } message HeroAbility { optional string name = 1; optional int32 level = 2; } message Hero { optional fixed64 steam_id = 1; optional int32 player_id = 2 [default = -1]; optional int32 team_id = 3; optional string hero = 4; optional int32 total_xp = 5; optional int32 bkb_charges_used = 6; optional int32 aeon_charges_used = 7; optional int32 reliable_gold = 8; optional int32 unreliable_gold = 9; optional int32 total_earned_gold = 10; optional int32 shared_gold = 11; optional int32 hero_kill_gold = 12; optional int32 creep_kill_gold = 13; optional int32 neutral_kill_gold = 14; optional int32 courier_gold = 15; optional int32 bounty_gold = 16; optional int32 roshan_gold = 17; optional int32 building_gold = 18; optional int32 other_gold = 19; optional int32 income_gold = 26; optional int32 ward_kill_gold = 27; optional int32 ability_gold = 28; optional int32 denies = 29; optional int32 last_hits = 30; optional int32 last_hit_streak = 31; optional int32 last_hit_multikill = 32; optional int32 nearby_creep_death_count = 33; optional int32 claimed_deny_count = 34; optional int32 claimed_miss_count = 35; optional int32 miss_count = 36; optional float buyback_cooldown_time = 40; optional float buyback_gold_limit_time = 41; optional float stun_duration = 44; optional float healing = 45; optional int32 tower_kills = 46; optional int32 roshan_kills = 47; optional int32 observer_wards_placed = 48; optional int32 sentry_wards_placed = 49; optional int32 creeps_stacked = 50; optional int32 camps_stacked = 51; optional int32 rune_pickups = 52; optional int32 gold_spent_on_support = 53; optional int32 hero_damage = 54; optional int32 wards_purchased = 55; optional int32 wards_destroyed = 56; optional int32 gold_spent_on_consumables = 58; optional int32 gold_spent_on_items = 59; optional int32 gold_spent_on_buybacks = 60; optional int32 gold_lost_to_death = 61; optional int32 kills = 62; optional int32 assists = 63; optional int32 deaths = 64; optional int32 kill_streak = 65; optional int32 respawn_seconds = 68 [default = -1]; optional int32 last_buyback_time = 69; optional bool first_blood_claimed = 71; optional bool first_blood_given = 72; optional int32 bounty_runes = 73; optional int32 outposts_captured = 74; optional .CScenario_Position position = 75; repeated .CMsgDotaScenario.HeroHeroInt enemy_kills = 150; repeated .CMsgDotaScenario.DamageStatsByType damage_stats = 151; repeated .CMsgDotaScenario.HeroAbility abilities = 152; } message Stock { optional string name = 1; optional int32 team_number = 2 [default = -1]; optional int32 player_id = 3 [default = -1]; optional int32 current_stock = 4; optional float cooldown = 5; optional int32 bonus_stock = 6; } message Building { optional string entity_name = 1; optional string entity_class = 2; optional int32 team_id = 3; optional bool is_destroyed = 4; optional float health_frac = 5 [default = 1]; } message Entity { optional .CScenarioEnt_Courier courier = 1; optional .CScenarioEnt_NPC npc = 2; optional .CScenarioEnt_SpiritBear spirit_bear = 3; optional .CScenarioEnt_DroppedItem dropped_item = 4; } message Item { optional string name = 1; optional .CMsgDotaScenario.EntityRef location = 2; optional int32 owner_id = 3 [default = -1]; optional int32 item_slot = 4; optional int32 neutral_drop_team = 5; optional int32 charges = 6; optional int32 secondary_charges = 7; optional float lifetime = 8 [default = -1]; optional int32 stored_rune_type = 9 [default = -1]; } message Modifier { optional string name = 1; optional .CMsgDotaScenario.EntityRef parent = 2; optional .CMsgDotaScenario.EntityRef caster = 3; optional .CMsgDotaScenario.EntityRef ability = 4; optional float duration = 5 [default = -1]; optional float lifetime_remaining = 6 [default = 0]; optional int32 stack_count = 7; optional bool create_even_if_existing = 8; optional bool create_without_caster = 9; optional bool create_without_ability = 10; optional int32 moonshard_consumed_bonus = 100; optional int32 moonshard_consumed_bonus_night_vision = 101; optional int32 wardtruesight_range = 110; optional int32 ultimate_scepter_consumed_alchemist_bonus_all_stats = 120; optional int32 ultimate_scepter_consumed_alchemist_bonus_health = 121; optional int32 ultimate_scepter_consumed_alchemist_bonus_mana = 122; } optional uint64 lobby_id = 1; optional .CMsgDotaScenario.Game game = 2; repeated .CMsgDotaScenario.Team teams = 3; repeated .CMsgDotaScenario.Hero heroes = 4; repeated .CMsgDotaScenario.Stock stock = 5; repeated .CMsgDotaScenario.Building buildings = 6; repeated .CMsgDotaScenario.Entity entities = 7; repeated .CMsgDotaScenario.Item items = 8; repeated .CMsgDotaScenario.Modifier modifiers = 9; }