import "networkbasetypes.proto";
import "citadel_gcmessages_common.proto";
import "gameevents.proto";
import "valveextensions.proto";

enum CitadelUserMessageIds {
	k_EUserMsg_Damage = 300;
	k_EUserMsg_MapPing = 303;
	k_EUserMsg_TeamRewards = 304;
	k_EUserMsg_AbilityFailed = 306;
	k_EUserMsg_TriggerDamageFlash = 308;
	k_EUserMsg_AbilitiesChanged = 309;
	k_EUserMsg_RecentDamageSummary = 310;
	k_EUserMsg_SpectatorTeamChanged = 311;
	k_EUserMsg_ChatWheel = 312;
	k_EUserMsg_GoldHistory = 313;
	k_EUserMsg_ChatMsg = 314;
	k_EUserMsg_QuickResponse = 315;
	k_EUserMsg_PostMatchDetails = 316;
	k_EUserMsg_ChatEvent = 317;
	k_EUserMsg_AbilityInterrupted = 318;
	k_EUserMsg_HeroKilled = 319;
	k_EUserMsg_ReturnIdol = 320;
	k_EUserMsg_SetClientCameraAngles = 321;
	k_EUserMsg_MapLine = 322;
	k_EUserMsg_BulletHit = 323;
	k_EUserMsg_ObjectiveMask = 324;
	k_EUserMsg_ModifierApplied = 325;
	k_EUserMsg_CameraController = 326;
	k_EUserMsg_AuraModifierApplied = 327;
	k_EUserMsg_ObstructedShotFired = 329;
	k_EUserMsg_AbilityLateFailure = 330;
	k_EUserMsg_AbilityPing = 331;
	k_EUserMsg_PostProcessingAnim = 332;
	k_EUserMsg_DeathReplayData = 333;
	k_EUserMsg_PlayerLifetimeStatInfo = 334;
	k_EUserMsg_ForceShopClosed = 336;
	k_EUserMsg_StaminaConsumed = 337;
	k_EUserMsg_AbilityNotify = 338;
	k_EUserMsg_GetDamageStatsResponse = 339;
	k_EUserMsg_ParticipantStartSoundEvent = 340;
	k_EUserMsg_ParticipantStopSoundEvent = 341;
	k_EUserMsg_ParticipantStopSoundEventHash = 342;
	k_EUserMsg_ParticipantSetSoundEventParams = 343;
	k_EUserMsg_ParticipantSetLibraryStackFields = 344;
	k_EUserMsg_CurrencyChanged = 345;
	k_EUserMsg_GameOver = 346;
	k_EUserMsg_BossKilled = 347;
	k_EUserMsg_BossDamaged = 348;
	k_EUserMsg_MidBossSpawned = 349;
	k_EUserMsg_RejuvStatus = 350;
	k_EUserMsg_KillStreak = 351;
	k_EUserMsg_TeamMsg = 352;
	k_EUserMsg_PlayerRespawned = 353;
	k_EUserMsg_CallCheaterVote = 354;
	k_EUserMsg_MeleeHit = 355;
	k_EUserMsg_FlexSlotUnlocked = 356;
	k_EUserMsg_SeasonalKill = 357;
	k_EUserMsg_MusicQueue = 358;
	k_EUserMsg_AG2ParamTrigger = 359;
	k_EUserMsg_ItemPurchaseNotification = 360;
	k_EUserMsg_EntityPortalled = 361;
	k_EUserMsg_StreetBrawlScoring = 362;
	k_EUserMsg_HudGameAnnouncement = 363;
	k_EUserMsg_ItemDraftReaction = 364;
	k_EUserMsg_ImportantAbilityUsed = 365;
	k_EUserMsg_BannedHeroes = 366;
}

enum CitadelEntityMessageIds {
	k_EEntityMsg_BreakablePropSpawnDebris = 500;
}

enum ChatMsgPingMarkerInfo {
	k_EPingMarkerInfo_ShowMarkerAndSound = 0 [(schema_friendly_name) = "Show Ping Indicator at Ping Location, Play Ping Sound, and Play VO"];
	k_EPingMarkerInfo_ShowMarkerOnSender = 1 [(schema_friendly_name) = "Show Ping Indicator on Pinging Player, Play Ping Sound, and Play VO"];
	k_EPingMarkerInfo_HideMarkerAndSound = 2 [(schema_friendly_name) = "No Marker or Sound (just VO)"];
	k_EPingMarkerInfo_OnlyShowMarker = 3 [(schema_friendly_name) = "Only Show Ping Indicator at Ping Location (no ping sound)"];
	k_EPingMarkerInfo_OnlyPlaySound = 4 [(schema_friendly_name) = "Only Play Ping Sound (and VO)"];
	k_EPingMarkerInfo_OnlyMiniMap = 5 [(schema_friendly_name) = "Only show on Minimap, no world, no sound"];
}

enum CameraOperation {
	k_ECameraOp_Maintain = 2;
	k_ECameraOp_Approach = 3;
	k_ECameraOp_Spring = 4;
	k_ECameraOp_Lerp = 5;
	k_ECameraOp_Lag = 6;
}

enum CameraParam {
	k_EParam_ClearAllOps = 0;
	k_EParam_ClearAllOpsForContext = 1;
	k_EParam_Distance = 2;
	k_EParam_FOV = 3;
	k_EParam_TargetPosition = 4;
	k_EParam_VertOffset = 5;
	k_EParam_HorizOffset = 6;
}

enum CameraParamMode {
	k_EParamMode_AllowInOneContext = 0;
	k_EParamMode_AllowInMultipleContexts = 1;
}

enum CameraAction {
	k_EAction_AddOp = 0;
	k_EAction_ClearAllOps = 1;
	k_EAction_ClearOpsForContext = 2;
}

enum ECitadelChatMessage {
	CITADEL_CHAT_MESSAGE_UNPAUSE_COUNTDOWN = 1;
	CITADEL_CHAT_MESSAGE_UNPAUSED = 2;
	CITADEL_CHAT_MESSAGE_AUTO_UNPAUSED = 3;
	CITADEL_CHAT_MESSAGE_PAUSE_COUNTDOWN = 4;
	CITADEL_CHAT_MESSAGE_PAUSED = 5;
	CITADEL_CHAT_MESSAGE_YOUPAUSED = 6;
	CITADEL_CHAT_MESSAGE_CANTPAUSE = 7;
	CITADEL_CHAT_MESSAGE_CANTUNPAUSETEAM = 8;
	CITADEL_CHAT_MESSAGE_NOPAUSESLEFT = 9;
	CITADEL_CHAT_MESSAGE_CANTPAUSEYET = 10;
	CITADEL_CHAT_MESSAGE_PREGAME_COUNTDOWN = 11;
	CITADEL_CHAT_MESSAGE_NOTEAMPAUSESLEFT = 12;
	CITADEL_CHAT_MESSAGE_COMMS_RESTRICTED = 13;
}

enum PostProcessingGameStates {
	PostProcState_Killed = 0;
	PostProcState_Black = 1;
	PostProcState_DoormanHotelVictim = 2;
	PostProcState_Blinded = 3;
	PostProcState_DrifterDarknessCaster = 4;
	PostProcState_MatchIntro = 5;
}

message CUserMessageEmpty {
	optional uint32 empty = 1;
}

message CCitadelUserMessage_Damage {
	optional int32 damage = 1;
	optional int32 pre_damage_deprecated = 2;
	optional float pre_damage = 27;
	optional int32 type = 3;
	optional int32 citadel_type = 4;
	optional .CMsgVector origin = 5;
	optional int32 entindex_victim = 6 [default = -1];
	optional int32 entindex_inflictor = 7 [default = -1];
	optional int32 entindex_attacker = 8 [default = -1];
	optional int32 entindex_ability = 9 [default = -1];
	optional int32 damage_absorbed_deprecated = 10;
	optional float damage_absorbed = 28;
	optional int32 victim_health_max = 11;
	optional int32 victim_health_new = 12;
	optional uint64 flags = 13;
	optional uint32 ability_id = 14;
	optional uint32 attacker_class = 15;
	optional uint32 victim_class = 16;
	optional int32 victim_shield_max = 17;
	optional int32 victim_shield_new = 18;
	optional int32 hits = 19;
	optional int32 health_lost = 20;
	optional int32 hitgroup_id = 21;
	optional int32 entindex_attacking_object = 22 [default = -1];
	optional .CMsgVector damage_direction = 23;
	optional bool is_secondary_stat = 24;
	optional float effectiveness = 25;
	optional float crit_damage = 26;
	optional int32 server_tick = 29;
}

message PingCommonData {
	optional uint32 ping_message_id = 1;
	optional .CMsgVector ping_location = 2;
	optional uint32 entity_index = 3 [default = 16777215];
	optional int32 sender_player_slot = 4 [default = -1];
	optional int32 speech_concept = 5;
	optional string response_chosen = 6;
	optional float cooldown_time = 7;
}

message CCitadelUserMsg_MapPing {
	optional .PingCommonData ping_data = 1;
	optional uint32 event_type = 2;
	optional .ChatMsgPingMarkerInfo ping_marker_and_sound_info = 3 [default = k_EPingMarkerInfo_ShowMarkerAndSound];
	optional bool pinged_enemy_entity = 4;
	optional uint32 pinged_entity_class = 5;
	optional bool is_minimap_ping = 6;
	optional string pinged_hero_name = 7;
	optional bool is_blind_ping = 8;
}

message CCitadelUserMsg_PingWheel {
	optional .PingCommonData ping_data = 1;
	optional uint32 ping_wheel_option_id = 2;
}

message CCitadelUserMsg_AbilityPing {
	optional .PingCommonData ping_data = 1;
	optional uint32 ability_id = 2;
	optional float ability_cooldown = 3;
	optional .ChatMsgPingMarkerInfo ping_marker_and_sound_info = 4 [default = k_EPingMarkerInfo_ShowMarkerAndSound];
}

message CCitadelUserMsg_QuickResponse {
	optional .PingCommonData ping_data = 1;
	optional uint32 responding_to_ping_message_id = 2;
	optional int32 responding_to_player_slot = 3 [default = -1];
	optional .CMsgLaneColor lane_color = 4 [default = k_ELaneColor_Invalid];
}

message CCitadelUserMsg_ItemDraftReaction {
	optional .PingCommonData ping_data = 1;
	optional bool rare = 2;
	optional bool legendary = 3;
}

message CCitadelUserMsg_MapLine {
	optional int32 sender_player_slot = 1 [default = -1];
	optional .CMsgMapLine mapline = 2;
}

message CCitadelUserMsg_TeamRewards {
	optional uint32 xp = 1;
	optional uint32 gold = 2;
	optional bool winner = 3;
}

message CCitadelUserMsg_TriggerDamageFlash {
	optional int32 entindex_flash_victim = 1 [default = -1];
	optional int32 entindex_flash_attacker = 2 [default = -1];
	optional int32 entindex_flash_hitgroup = 3;
	optional uint32 flash_value = 4;
	optional uint32 flash_type = 5;
	optional uint32 flash_flags = 6;
	optional .CMsgVector flash_position = 7;
}

message CCitadelUserMsg_AbilitiesChanged {
	enum Change {
		EInvalid = -1;
		EPurchased = 0;
		EUpgraded = 1;
		ESold = 2;
		ESwappedActivatedAbility = 3;
		EFailure = 4;
	}

	optional int32 purchaser_player_slot = 1 [default = -1];
	optional uint32 ability_id = 2;
	optional .CCitadelUserMsg_AbilitiesChanged.Change change = 3 [default = EInvalid];
}

message CCitadelUserMsg_AbilityInterrupted {
	optional int32 entindex_victim = 1 [default = -1];
	optional int32 entindex_interrupter = 2 [default = -1];
	optional uint32 ability_id_interrupted = 3;
	optional uint32 ability_id_interrupter = 4;
	optional uint32 hero_id_interrupter = 5;
}

message CCitadelUserMsg_AbilityLateFailure {
	optional int32 entindex_caster = 1 [default = -1];
	optional int32 entindex_ability = 2 [default = -1];
	optional uint32 failure_type = 3;
}

message CCitadelUserMsg_RecentDamageSummary {
	option (maximum_size_bytes) = 8192;

	message DamageRecord {
		optional int32 damage = 1;
		optional int32 hits = 2;
		optional uint32 damage_type = 3;
		optional uint32 hero_id = 4;
		optional uint32 ability_id = 5;
		optional uint32 attacker_class = 6;
		optional float damage_absorbed = 7;
		optional bool is_killing_blow = 8;
		optional uint32 victim_hero_id = 9;
		optional bool is_secondary_stat = 10;
		optional float pre_damage = 11;
		optional float crit_damage = 12;
	}

	message ModifierRecord {
		optional uint32 ability_id = 1;
		optional uint32 modifier_type_id = 2;
		optional int32 entindex_caster = 3 [default = -1];
		optional float start_time = 4;
		optional float end_time = 5;
		optional bool debuff = 6;
	}

	optional int32 player_slot = 1 [default = -1];
	repeated .CCitadelUserMsg_RecentDamageSummary.DamageRecord damage_records = 2;
	optional float start_time = 3;
	optional float end_time = 4;
	optional int32 total_damage = 5;
	optional int32 lost_gold = 6;
	repeated .CCitadelUserMsg_RecentDamageSummary.ModifierRecord modifier_records = 7;
}

message CCitadelUserMsg_SpectatorTeamChanged {
	optional int32 teamnumber = 1;
}

message CCitadelUserMsg_ChatWheel {
	optional uint32 chat_message_id = 1;
	optional int32 player_slot = 2 [default = -1];
	optional int32 pawn_entindex = 3 [default = -1];
	optional uint32 account_id = 4;
	optional uint32 hero_id = 5;
	optional string param_1 = 6;
	optional .CMsgLaneColor lane_color = 7 [default = k_ELaneColor_Invalid];
}

message CCitadelUserMsg_ChatMsg {
	optional int32 player_slot = 1 [default = -1];
	optional string text = 2;
	optional bool all_chat = 3;
	optional .CMsgLaneColor lane_color = 4 [default = k_ELaneColor_Invalid];
}

message CCitadelUserMsg_GoldHistory {
	message GoldRecord {
		optional int32 currency_source = 1;
		optional int32 gold = 2;
		optional int32 events = 3;
	}

	message MinuteRecord {
		optional int32 match_minute = 1;
		repeated .CCitadelUserMsg_GoldHistory.GoldRecord gold_records = 2;
	}

	optional int32 entindex_player = 1 [default = -1];
	repeated .CCitadelUserMsg_GoldHistory.MinuteRecord minute_records = 2;
}

message CCitadelUserMsg_CameraController {
	message Maintain {
		optional float duration = 1 [default = 0];
	}

	message Approach {
		optional float speed = 1 [default = 600];
		optional float default_speed = 2 [default = 600];
		optional float acceleration = 3 [default = 1000];
		optional float min_duration = 4 [default = 0];
		optional float approach_float = 5;
		optional .CMsgVector approach_vector = 6;
		optional bool chase_default = 7;
	}

	message Spring {
		optional float spring_strength = 1 [default = 10];
		optional float min_speed = 4 [default = 0];
		optional float max_duration = 5 [default = 0];
		optional float target_float = 6;
		optional .CMsgVector target_vector = 7;
	}

	message Lerp {
		optional float start_float = 1;
		optional .CMsgVector start_vector = 2;
		optional float end_float = 3;
		optional .CMsgVector end_vector = 4;
		optional float bias = 5;
		optional float gain = 6;
		optional float duration = 7 [default = 1];
	}

	message Lag {
		optional float min_duration = 1;
		optional float lag_time = 2;
		optional float max_speed = 3;
		optional float spring_strength = 4;
		optional bool increase_spring_strength_to_keep_target_on_screen = 5 [default = true];
	}

	optional .CameraAction action = 1 [default = k_EAction_AddOp];
	optional .CameraOperation operation = 2 [default = k_ECameraOp_Maintain];
	optional .CameraParam param = 3 [default = k_EParam_ClearAllOps];
	optional .CameraParamMode param_mode = 12 [default = k_EParamMode_AllowInOneContext];
	optional float delay = 4;
	optional bool relative_values = 11;
	optional uint32 context_symbol_id = 5;
	optional uint32 priority = 13 [default = 1];
	optional .CCitadelUserMsg_CameraController.Maintain maintain = 6;
	optional .CCitadelUserMsg_CameraController.Approach approach = 7;
	optional .CCitadelUserMsg_CameraController.Spring spring = 8;
	optional .CCitadelUserMsg_CameraController.Lerp lerp = 9;
	optional .CCitadelUserMsg_CameraController.Lag lag = 10;
}

message CCitadelUserMsg_PostMatchDetails {
	option (maximum_size_bytes) = 1000000;

	optional bytes match_details = 1;
}

message CCitadelUserMsg_ChatEvent {
	optional .ECitadelChatMessage type = 1 [default = CITADEL_CHAT_MESSAGE_UNPAUSE_COUNTDOWN];
	repeated uint32 values = 2;
	repeated int32 player_slots = 3;
}

message CCitadelUserMsg_HeroKilled {
	optional int32 entindex_victim = 1 [default = -1];
	optional int32 entindex_inflictor = 2 [default = -1];
	optional int32 entindex_attacker = 3 [default = -1];
	repeated int32 entindex_assisters = 4;
	optional int32 entindex_scorer = 5 [default = -1];
	optional int32 respawn_reason = 6;
	optional int32 victim_team_number = 7;
}

message CCitadelEntityMsg_BreakablePropSpawnDebris {
	optional .CEntityMsg entity_msg = 1;
	optional .CMsgVector damage_pos = 2;
	optional float damage = 3;
	optional .CMsgVector damage_force = 4;
}

message CCitadelUserMsg_ReturnIdol {
	optional int32 location_index = 1;
	optional .CMsgVector return_location = 2;
	optional bool location_enabled = 3;
}

message CCitadelUserMsg_SetClientCameraAngles {
	optional int32 player_slot = 1 [default = -1];
	optional .CMsgQAngle camera_angles = 2;
}

message CCitadelUserMessage_BulletHit {
	optional int32 shotid = 1;
	optional int32 pellet = 2;
	optional int32 hit_entindex = 3 [default = -1];
	optional int32 weapon_entindex = 4 [default = -1];
	optional bool is_predicted = 5;
}

message CCitadelUserMessage_ObjectiveMask {
	optional uint64 objective_mask_team0 = 2;
	optional uint64 objective_mask_team1 = 3;
}

message CCitadelUserMessage_ModifierApplied {
	optional int32 entindex_caster = 1 [default = -1];
	optional int32 entindex_parent = 2 [default = -1];
	optional int32 serial_number = 3;
}

message CCitadelUserMessage_AuraModifierApplied {
	optional int32 entindex_caster = 1 [default = -1];
	optional int32 entindex_target = 2 [default = -1];
	optional uint32 modifier_type_id = 3;
	optional int32 modifier_serial_number = 4;
	optional float aura_start_time = 5;
	optional float aura_end_time = 6;
}

message CCitadelUserMsg_ObstructedShotFired {
}

message CCitadelUserMsg_PostProcessingAnim {
	optional int32 entindex_owner = 1 [default = -1];
	optional bool clear_all_states = 2;
	optional .PostProcessingGameStates state = 3 [default = PostProcState_Killed];
	optional float delay = 4;
	optional float fade_in_time = 5;
	optional float hold_time = 6;
	optional float fade_out_time = 7;
	optional float scale = 8;
}

message CCitadelUserMsg_DeathReplayData {
	optional int32 killer_scorer = 1 [default = -1];
	optional int32 killer_inflictor = 2 [default = -1];
	optional .CCitadelUserMsg_RecentDamageSummary damage_summary = 3;
}

message CCitadelUserMsg_ForceShopClosed {
}

message CCitadelUserMsg_PlayerLifetimeStatInfo {
	message Stat {
		optional string stat_name = 1;
		optional uint32 match_total = 2;
		optional uint32 lifetime_value = 3;
		optional uint32 priority = 4;
		optional uint32 prev_lifetime_max = 5;
		optional uint32 stat_type = 6;
		optional uint32 stat_type_id = 7;
	}

	repeated .CCitadelUserMsg_PlayerLifetimeStatInfo.Stat stats = 1;
	optional uint64 match_id = 2;
	optional bool end_of_match = 3;
	optional bool is_official_match = 4;
}

message CCitadelUserMsg_StaminaConsumed {
	optional int32 entindex_target = 1 [default = -1];
	optional float stamina_before = 3;
	optional float stamina_after = 4;
	optional bool drained = 5;
	optional float stamina_max = 6;
	optional float gametime = 7;
}

message CCitadelUserMessage_AbilityNotify {
	optional int32 entindex_victim = 1 [default = -1];
	optional int32 entindex_attacker = 2 [default = -1];
	optional uint32 ability_id = 3;
	optional uint32 status_impact = 4;
}

message CCitadelUserMessage_CurrencyChanged {
	optional int32 userid = 1 [default = -1];
	optional int32 currency_type = 2;
	optional int32 currency_source = 3;
	optional int32 delta = 4;
	optional bool notification = 5;
	optional int32 entindex_victim = 6 [default = -1];
	optional .CMsgVector victim_pos = 7;
	optional int32 playsound = 8;
	optional uint32 ability_id = 9;
	optional uint32 new_value = 10;
}

message CCitadelUserMessage_GameOver {
	optional int32 winning_team = 1;
	optional bool just_a_test = 2;
}

message CCitadelUserMsg_GetDamageStatsResponse {
	message StatType {
		repeated uint32 target_player_slot = 1 [packed = true];
		repeated uint32 value = 2 [packed = true];
	}

	optional uint32 player_slot = 1;
	optional string ability_name = 2;
	optional .CCitadelUserMsg_GetDamageStatsResponse.StatType damage = 3;
	optional .CCitadelUserMsg_GetDamageStatsResponse.StatType healing = 4;
}

message CCitadelUserMsg_ParticipantStartSoundEvent {
	optional .CMsgSosStartSoundEvent event = 1;
	repeated int32 player_slots = 2;
}

message CCitadelUserMsg_ParticipantStopSoundEvent {
	optional .CMsgSosStopSoundEvent event = 1;
	repeated int32 player_slots = 2;
}

message CCitadelUserMsg_ParticipantStopSoundEventHash {
	optional .CMsgSosStopSoundEventHash event = 1;
	repeated int32 player_slots = 2;
}

message CCitadelUserMsg_ParticipantSetSoundEventParams {
	optional .CMsgSosSetSoundEventParams event = 1;
	repeated int32 player_slots = 2;
}

message CCitadelUserMsg_ParticipantSetLibraryStackFields {
	optional .CMsgSosSetLibraryStackFields event = 1;
	repeated int32 player_slots = 2;
}

message CCitadelUserMsg_BossKilled {
	optional int32 objective_team = 1;
	optional int32 objective_mask_change = 2;
	optional uint32 entity_killed = 3 [default = 16777215];
	optional int32 entity_killed_class = 4;
	optional uint32 entity_killer = 5 [default = 16777215];
	optional float gametime = 6;
	optional int32 bosses_remaining = 7;
	optional .CMsgVector entity_position = 8;
}

message CCitadelUserMsg_BossDamaged {
	optional int32 objective_team = 1;
	optional int32 objective_id = 2;
	optional uint32 entity_damaged = 3 [default = 16777215];
}

message CCitadelUserMsg_MidBossSpawned {
}

message CCitadelUserMsg_RejuvStatus {
	optional int32 killing_team = 1;
	optional uint32 player_pawn = 2 [default = 16777215];
	optional int32 user_team = 3;
	optional int32 event_type = 4;
}

message CCitadelUserMsg_KillStreak {
	optional uint32 player_pawn = 1 [default = 16777215];
	optional int32 num_kills = 2;
	optional bool is_first_blood = 3;
	optional bool streak_ended = 4;
	optional float duration = 5 [default = 5];
}

message CCitadelUserMsg_TeamMsg {
	optional int32 event_type = 1;
	optional int32 team_number = 2;
	optional int32 lane_color = 3;
	optional uint32 player_controller = 4 [default = 16777215];
}

message CCitadelUserMsg_PlayerRespawned {
	optional uint32 player_pawn = 1 [default = 16777215];
	optional float facing_yaw = 2;
}

message CCitadelUserMsg_CallCheaterVote {
	optional int32 player_slot = 1 [default = -1];
}

message CCitadelUserMessage_MeleeHit {
	optional int32 hit_entindex = 1 [default = -1];
	optional bool heavy = 2;
}

message CCitadelUserMsg_FlexSlotUnlocked {
	optional int32 team_number = 1;
	optional int32 flexslot_unlocked = 2;
}

message CCitadelUserMessage_ItemPurchaseNotification {
	optional int32 userid = 1 [default = -1];
	optional uint32 ability_id = 2;
	optional bool sell = 3;
	optional bool quickbuy = 4;
}

message CCitadelUserMsg_SeasonalKill {
	optional uint32 killer = 1 [default = 16777215];
	optional uint32 victim = 2 [default = 16777215];
}

message CCitadelUserMsg_MusicQueue {
	optional int32 music_state = 1;
	optional bool override = 2;
}

message CCitadelUserMsg_AG2ParamTrigger {
	optional string param_id = 1;
	optional string param_value = 2;
}

message CCitadelUserMsg_EntityPortalled {
	optional uint32 entity_portalled = 1 [default = 16777215];
	optional .CMsgTransform portal_transform = 2;
}

message CCitadelUserMsg_StreetBrawlScoring {
	optional int32 scoring_team = 1;
	optional bool just_a_test = 2;
	optional int32 sapphire_score = 3;
	optional int32 amber_score = 4;
}

message CCitadelUserMsg_HudGameAnnouncement {
	optional string title_locstring = 1;
	optional string description_locstring = 2;
	repeated string classname = 3;
	repeated string dialog_variable_name = 4;
	repeated string dialog_variable_locstring = 5;
}

message CCitadelUserMessage_ImportantAbilityUsed {
	optional uint32 player = 1 [default = 16777215];
	optional uint32 caster = 2 [default = 16777215];
	optional string ability_name = 3;
}

message CCitadelUserMsg_BannedHeroes {
	repeated uint32 banned_hero_ids = 1;
}
