Struct PartyMemberVitalsEntry
One party member's live state, as observed on a scene server.
public struct PartyMemberVitalsEntry
- Inherited Members
Remarks
Only sent for members the sending scene server hosts in the same Unity scene as the recipient. A member the recipient cannot be standing next to — different zone, different dungeon instance, different scene server, or offline — is absent from the payload entirely, and the client greys their row out rather than drawing values it has no reason to believe. Absence is therefore meaningful: see PartyMemberVitalsUpdateBroadcast.
Quantised. Fractions travel as one byte (0..255) and rates as an unsigned short, because a party bar is a few dozen pixels wide and a meter readout is rounded to the unit anyway; the previous four-byte floats carried precision nothing rendered. Use PartyVitalsQuantiser to convert in both directions.
Fields
Buffs
The buffs and debuffs the member is showing, exactly as the SERVER chose them.
public ObservedBuffEntry[] Buffs
Field Value
Remarks
The same server-filtered list the target frame draws from — already stripped of
nothing beyond what any observer already sees, carrying no tick-domain state and no template
hooks. Buffs and debuffs travel together and are split by the client on the template's
own IsDebuff flag, because that flag is a property of the template rather than
of the wire format and duplicating it into two arrays would let the two disagree.
RemainingSeconds is re-based to the moment this payload was built rather than to the last observed-buff push, so the client's local countdown starts from a current figure however long ago the buff was applied.
Only meaningful when BuffsChanged is true. Null means "none".
BuffsChanged
True when Buffs is authoritative for this entry. False means the buff set has not changed since the last payload that carried it, and Buffs is null and must not be applied.
public bool BuffsChanged
Field Value
Remarks
The buff list is by far the largest part of the payload and by far the least often changed. Sending it only on change is what takes this message from "every second" to "when something happened". A client that receives its first payload for a member always gets the set, because the server tracks what it last sent per scene group and a member new to a group has nothing sent yet.
CharacterID
Character ID of the member.
public long CharacterID
Field Value
DamagePerSecond
Damage the member has dealt in the current encounter, divided by its elapsed length, rounded and clamped to 0..65535.
public ushort DamagePerSecond
Field Value
Remarks
Zero once the encounter has timed out — the meter is per-encounter, not per-session, so it must not carry a number from the last fight into the lull after it.
HealPerSecond
Healing the member has done in the current encounter, per second, clamped to 0..65535.
public ushort HealPerSecond
Field Value
HealthPCT
The member's health fraction, quantised to 0..255.
public byte HealthPCT
Field Value
ManaPCT
The member's mana fraction, quantised to 0..255.
public byte ManaPCT
Field Value
StaminaPCT
The member's stamina fraction, quantised to 0..255.
public byte StaminaPCT