import "networkbasetypes.proto"; import "citadel_gcmessages_common.proto"; import "gameevents.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_StaminaDrained = 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; } enum CitadelEntityMessageIds { k_EEntityMsg_BreakablePropSpawnDebris = 500; } enum ChatMsgPingMarkerInfo { k_EPingMarkerInfo_ShowMarkerAndSound = 0; k_EPingMarkerInfo_HideMarkerAndSound = 1; k_EPingMarkerInfo_ShowMarkerOnSender = 2; k_EPingMarkerInfo_OnlyShowMarker = 3; k_EPingMarkerInfo_OnlyPlaySound = 4; } 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_Blinded = 2; PostProcState_ShivPossessed = 3; } message CUserMessageEmpty { optional uint32 empty = 1; } message CCitadelUserMessage_Damage { optional int32 damage = 1; optional int32 pre_damage = 2; 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 = 10; 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; } 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 { required .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 { required .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 { required .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_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; } optional int32 entindex_purchaser = 1 [default = -1]; optional int32 entindex_ability = 2 [default = -1]; optional uint32 ability_id = 3; optional .CCitadelUserMsg_AbilitiesChanged.Change change = 4 [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 { 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 int32 damage_absorbed = 7; optional bool is_killing_blow = 8; optional uint32 victim_hero_id = 9; } 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 = 1]; optional .CMsgVector maintain_vector = 2; optional float maintain_float = 3; optional bool maintain_current = 4; } 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; } required .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 .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 { 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; } message CCitadelEntityMsg_BreakablePropSpawnDebris { optional .CEntityMsg entity_msg = 1; optional .CMsgVector damage_pos = 2; optional float damage = 3; } 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]; } 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 start_time = 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_StaminaDrained { optional int32 entindex_victim = 1 [default = -1]; optional int32 stamina_drained = 2; } message CCitadelUserMessage_AbilityNotify { optional int32 entindex_victim = 1 [default = -1]; optional int32 entindex_attacker = 2 [default = -1]; optional uint32 ability_id = 3; } message CCitadelUserMessage_CurrencyChanged { optional int32 entindex_hero_pawn = 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; } 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 { required .CMsgSosStartSoundEvent event = 1; repeated int32 player_slots = 2; } message CCitadelUserMsg_ParticipantStopSoundEvent { required .CMsgSosStopSoundEvent event = 1; repeated int32 player_slots = 2; } message CCitadelUserMsg_ParticipantStopSoundEventHash { required .CMsgSosStopSoundEventHash event = 1; repeated int32 player_slots = 2; } message CCitadelUserMsg_ParticipantSetSoundEventParams { required .CMsgSosSetSoundEventParams event = 1; repeated int32 player_slots = 2; } message CCitadelUserMsg_ParticipantSetLibraryStackFields { required .CMsgSosSetLibraryStackFields event = 1; repeated int32 player_slots = 2; } message CCitadelUserMsg_BossKilled { optional int32 objective_team = 1; optional int32 objective_mask_change = 2; required uint32 entity_killed = 3 [default = 16777215]; required int32 entity_killed_class = 4; required uint32 entity_killer = 5 [default = 16777215]; required float gametime = 6; }