Wire coverage
Every protobuf message a framework reader documents, field by field. Exposed fields reach plugins through the public API; skipped fields are sent by the server but not decoded yet — each one is an open contribution.generated from reader sources
AoiSyncToMeDelta
Documented in AoiSyncToMeDeltaReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | BaseDelta | optional AoiSyncDelta | Exposed | the local player's attrs, skill events, damage and buffs, same path as the near-entity delta (see AttrCollection, EventDataList, SkillEffect) |
| 2 | SyncHateIds | repeated int64 | Skipped | — |
| 3 | SyncSkillCDs | repeated SkillCDInfo | Exposed | ICombatSnapshot.LocalCooldowns |
| 4 | FightResCDs | repeated FightResCD | Skipped | — |
| 5 | Uuid | optional int64 | Exposed | ICombatSnapshot.LocalEntityId |
Attr
Documented in AttrCollectionReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | Id | int32 | Exposed | CombatEvent.EntityAttributesChanged (AttrValue.AttrId); selects which ICombatLookup / IEntityDetail value an attr feeds |
| 2 | RawData | bytes | Exposed | CombatEvent.EntityAttributesChanged (AttrValue.Value), ICombatLookup.GetEntityName / GetVitals / GetTeamId / GetFightPoint / GetSkillLevels, IEntityDetail |
AttrCollection
Documented in AttrCollectionReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | Uuid | optional int64 | Decoded | — decoded but not read by any consumer; the entity id comes from the enclosing delta / entity uuid |
| 2 | Attrs | repeated Attr | Exposed | see Attr |
DisappearEntity
Documented in SyncNearEntitiesReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | uuid | int64 | Exposed | EntityId |
| 2 | type | EDisappearType | Exposed | EntityDisappearReason |
DungeonFlowInfo
Documented in DungeonSyncReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | state | EDungeonState | Exposed | IDungeonState.CurrentFlowState / FlowStateVersion |
| 2 | active_time | int32 | Exposed | IDungeonState.RunTimerStartMs (last-resort approximate source) |
| 3 | ready_time | int32 | Decoded | — decoded; logged by the dungeon diagnostics only |
| 4 | play_time | int32 | Exposed | IDungeonState.RunTimerStartMs (fallback source) |
| 5 | end_time | int32 | Decoded | — decoded; logged by the dungeon diagnostics only |
| 6 | settlement_time | int32 | Decoded | — decoded; logged by the dungeon diagnostics only |
| 7 | dungeon_times | int32 | Decoded | — decoded; logged by the dungeon diagnostics only |
| 8 | result | int32 | Exposed | IDungeonState.LastOutcome Reaches LastOutcome only through the method-24 dirty-delta decode (DungeonDirtyDataReader); the method-23 protobuf decode of this field is logged by diagnostics only. |
DungeonSceneInfo
Documented in DungeonSyncReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | difficulty | int32 | Exposed | IDungeonState.CurrentDifficulty Semantic unconfirmed in code (see DungeonSyncResult.DungeonDifficulty). |
DungeonSettlement
Documented in DungeonSyncReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | pass_time | int32 | Exposed | IDungeonState.LastSettlement.PassTimeSeconds |
| 5 | master_mode_score | int32 | Exposed | IDungeonState.LastSettlement.MasterModeScore |
DungeonSyncData
Documented in DungeonSyncReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | scene_uuid | int64 | Decoded | — structural gate only (a non-zero value is required to accept the packet); deliberately NOT used as the run id, which comes from EnterScene |
| 2 | flow_info | DungeonFlowInfo | Exposed | see DungeonFlowInfo |
| 5 | damage | DungeonDamage | Skipped | — |
| 7 | settlement | DungeonSettlement | Exposed | see DungeonSettlement |
| 14 | dungeon_score | DungeonScore | Exposed | IDungeonState.LastSettlement.TotalScore (DungeonScore.total_score) |
| 15 | timer_info | DungeonTimerInfo | Exposed | see DungeonTimerInfo |
| 21 | dungeon_scene_info | DungeonSceneInfo | Exposed | see DungeonSceneInfo |
DungeonTimerInfo
Documented in DungeonSyncReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | type | int32 | Decoded | — decoded; logged by the dungeon diagnostics only |
| 2 | start_time | int32 | Exposed | IDungeonState.RunTimerStartMs (primary source) |
| 3 | dungeon_times | int32 | Decoded | — decoded; logged by the dungeon diagnostics only |
| 4 | direction | int32 | Decoded | — decoded; logged by the dungeon diagnostics only |
| 5 | index | int32 | Skipped | — |
| 6 | change_time | int32 | Skipped | — |
| 7 | effect_type | int32 | Skipped | — |
| 8 | pause_time | int32 | Decoded | — decoded; logged by the dungeon diagnostics only |
| 9 | pause_total_time | int32 | Decoded | — decoded; logged by the dungeon diagnostics only |
| 10 | out_look_type | int32 | Skipped | — |
| 11 | cur_pause_timestamp | int32 | Decoded | — decoded; logged by the dungeon diagnostics only |
Entity
Documented in SyncNearEntitiesReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | uuid | int64 | Exposed | EntityId on every CombatEvent |
| 2 | ent_type | EEntityType | Skipped | — |
| 3 | attrs | AttrCollection | Exposed | name, fight point, HP/shield and skill levels via ICombatLookup / IEntityDetail |
| 4 | temp_attrs | TempAttrCollection | Skipped★ good first issue | — Requested by a plugin author (Discord, 2026-09-26). |
| 5 | body_part_infos | ActorBodyPartInfos | Skipped | — |
| 6 | passive_skill_infos | SeqPassiveSkillInfo | Skipped | — |
| 7 | buff_infos | BuffInfoSync | Exposed2.11.0 | CombatEvent.EntityBuffsSeeded, ICombatLookup.BuffsFor, ICombatSpec |
| 8 | buff_effect | BuffEffectSync | Skipped | — |
| 9 | appear_type | EAppearType | Skipped | — |
| 10 | magnetic_ride_queue_change_info_dict | map<int32, MagneticQueueAppearInfo> | Skipped | — |
EventData
Documented in EventDataListReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | event_type | int32 | Exposed | CombatEvent.SkillUsed.Phase (event types 101-105 only) |
| 2 | int_params | repeated int32 | Exposed | CombatEvent.SkillUsed.SkillId (int_params[0]) |
| 3 | long_params | repeated int64 | Decoded | — decoded but no consumer reads it |
| 4 | float_params | repeated float | Skipped | — |
| 5 | str_params | repeated string | Skipped | — |
EventDataList
Documented in EventDataListReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | Uuid | optional int64 | Decoded | — decoded but not read; the caster id comes from the enclosing AoiSyncDelta uuid |
| 2 | Events | repeated EventData | Exposed | see EventData |
GetChipChatRecordsReply
Documented in WireProtocol.ChitChat.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 3 | is_end | bool | Skipped | — |
| 4 | max_read_msg_id | int64 | Skipped | — |
| 5 | multi_msg_list | repeated zproto.ChitChatMsg | Exposed | IChat.MessageReceived / IChat.RecentMessages (ChatMessage.IsHistory = true) |
| 6 | err_code | zproto.EErrorCode | Skipped | — |
notice_update_team_info
Documented in NoticeUpdateTeamInfoReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | base_info | TeamBaseInfo | Exposed | IPartySnapshot.PartyId / LeaderCharId / PartyType / IsMatching, and the raid group layout (PartyMember.GroupId / Slot) |
NotifyAllMemberReady
Documented in NotifyReadyCheckReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | v_open_or_close | bool | Exposed | IPartyEvents.ReadyCheckPhaseChanged |
NotifyCaptainReady
Documented in NotifyReadyCheckReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | v_member_name | string | Exposed | IPartyEvents.ReadyCheckResponded (ReadyCheckResponse.Name) |
| 2 | v_char_id | int64 | Exposed | IPartyEvents.ReadyCheckResponded (ReadyCheckResponse.CharId) |
| 3 | v_ready_info | DungeonReadyInfo | Exposed | IPartyEvents.ReadyCheckResponded (ReadyCheckResponse.IsReady; only DungeonReadyInfo.is_ready is read) |
NotifyTeamGroupUpdateRequest
Documented in NotifyTeamGroupUpdateReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | err_code | EErrorCode | Skipped | — |
| 2 | team_member_group_infos | map<int32, TeamMemberGroupInfo> | Exposed | see TeamMemberGroupInfo |
NotifyTeamMemMicrophoneStatusChangeRequest
Documented in NotifyTeamVoiceReaders.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | member_id | int64 | Exposed | IPartyRoster.GetMicStatus (the charId key) |
| 2 | microphone_status | EMicrophoneStatus | Exposed | IPartyRoster.GetMicStatus (MicrophoneStatus) |
NotifyTeamMemsSpeakStatusChangeRequest
Documented in NotifyTeamVoiceReaders.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | mem_speak_status | map<int64, ESpeakStatus> | Exposed | IPartyRoster.IsSpeaking |
ShieldEntry
Documented in ShieldListReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | f1 | uint64 | Skipped | — |
| 2 | f2 | uint64 | Skipped | — |
| 3 | cur | uint64 | Exposed2.9.0 | ICombatLookup.GetVitals(...).Shield (EntityVitals.Shield, summed over entries) |
| 4 | max | uint64 | Skipped | — |
| 5 | f5 | uint64 | Skipped | — |
ShieldList
Documented in ShieldListReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | entries | repeated ShieldEntry | Exposed2.9.0 | see ShieldEntry |
SkillEffect
Documented in SkillEffectReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | Uuid | optional int64 | Skipped | — |
| 2 | Damages | repeated SyncDamageInfo | Exposed | CombatEvent.DamageDealt |
SkillLevelInfo
Documented in SkillLevelListReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | skill_id | int32 | Exposed | ICombatLookup.GetSkillLevels (SkillLevel.SkillId) |
| 2 | current_level | int32 | Exposed | ICombatLookup.GetSkillLevels (SkillLevel.Level) |
| 3 | remodel_level | int32 | Exposed | ICombatLookup.GetSkillLevels (SkillLevel.Tier) |
stru_notify_join_team_request
Documented in NotifyJoinTeamReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | base_info | TeamBaseInfo | Exposed | IPartySnapshot.PartyId / LeaderCharId / PartyType / IsMatching, and the raid group layout (PartyMember.GroupId / Slot) |
| 2 | member_data | repeated TeamMemData | Exposed | see TeamMemData |
| 4 | mem_real_time_voice_infos | map<int64, TeamMemRealTimeVoiceInfo> | Skipped | — |
| 5 | team_join_type | ETeamJoinType | Skipped | — |
| 6 | member_sync_datas | map<int64, TeamMemberFastSyncData> | Exposed | see TeamMemberFastSyncData |
stru_notify_leave_team_request
Documented in NotifyLeaveTeamReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | char_id | int64 | Exposed | IPartyEvents.MemberLeft (the departing PartyMember) |
| 2 | leave_type | ETeamLeaveType | Exposed | IPartyEvents.MemberLeft (PartyLeaveKind) |
SyncDungeonData
Documented in DungeonSyncReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | v_data | DungeonSyncData | Exposed | see DungeonSyncData |
SyncNearEntities
Documented in SyncNearEntitiesReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | appear | repeated Entity | Exposed | per-entity appear handling (see Entity) |
| 2 | disappear | repeated DisappearEntity | Exposed | per-entity disappear handling (see DisappearEntity) |
SyncSceneAttrs
Documented in SyncSceneAttrsReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | attrs | AttrCollection | Exposed | IDungeonState.LastDefeatedCount (only attr 348 AttrDeathCount is read) |
SyncToMeDeltaInfo
Documented in AoiSyncToMeDeltaReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | DeltaInfo | AoiSyncToMeDelta | Exposed | see AoiSyncToMeDelta |
TeamMemberFastSyncData
Documented in TeamMemberFastSyncDataReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | char_id | int64 | Exposed | PartyMember.CharId Keys the update only for NoticeUpdateTeamMemberInfo; join / GetTeamInfo read the map key instead and discard this field. |
| 2 | scene_id | int32 | Exposed | PartyMember.SceneId |
| 3 | position | Position | Exposed | PartyMember.Position |
| 4 | hp | int64 | Exposed | PartyMember.Hp |
| 5 | max_hp | int64 | Exposed | PartyMember.MaxHp |
| 6 | state | int32 | Exposed | PartyMember.FastSyncState |
| 7 | scene_area_id | int32 | Skipped | — The varint is read to advance the cursor but its value is discarded. |
TeamMemberGroupInfo
Documented in NotifyTeamGroupUpdateReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | group_id | int32 | Exposed | PartyMember.GroupId (via IPartyEvents.MemberUpdated) |
| 2 | char_ids | repeated int64 | Exposed | PartyMember.Slot (order within the group) |
TeamMemberSocialData
Documented in TeamMemDataReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | basic_data | BasicData | Exposed | PartyMember.Name / Level (BasicData name = 3, level = 6) |
| 2 | avatar_info | AvatarInfo | Exposed | PartyMember.ProfileUrl / HalfBodyUrl |
| 3 | face_data | FaceData | Skipped | — |
| 4 | profession_data | ProfessionData | Exposed | PartyMember.Profession ProfessionDataReader reads profession_id at field 1, which its own doc calls a placeholder best guess pending in-game confirmation; not verified here. |
| 5 | equip_data | EquipData | Skipped | — |
TeamMemData
Documented in TeamMemDataReader.cs ↗
| # | Field | Type | Status | Plugins get it as |
|---|---|---|---|---|
| 1 | char_id | int64 | Exposed | PartyMember.CharId / EntityId |
| 2 | enter_time | int32 | Decoded | — stored on the Application member slot; not surfaced on PartyMember |
| 3 | call_status | int32 | Skipped | — |
| 4 | talent_id | int32 | Exposed | PartyMember.Talent |
| 5 | online_status | int32 | Exposed | PartyMember.IsOnline |
| 6 | scene_id | int32 | Exposed | PartyMember.SceneId |
| 7 | voice_is_open | bool | Exposed | IPartyRoster.GetMicStatus (coarse open/closed base state) |
| 8 | group_id | int32 | Exposed | PartyMember.GroupId |
| 9 | social_data | TeamMemberSocialData | Exposed | see TeamMemberSocialData |