Skip to content
Version 2.11.0
↓ Get the launcher

EntityVitals structure

Live HP snapshot for an entity, sourced from AttrCollection observations on the combat wire (AttrHp=11310, AttrMaxHp=11320). Available for every entity in AOI — players, mobs, NPCs — not just party members. Use GetVitals to query.

public struct EntityVitals : IEquatable<EntityVitals>
parameter description
Hp Last-known current HP. Zero when the entity has never been observed.
MaxHp Last-known max HP. Zero when the entity has never been observed or hasn’t reported max yet.
IsKnown True once at least one AttrHp or AttrMaxHp observation has landed.
name description
EntityVitals(…) Live HP snapshot for an entity, sourced from AttrCollection observations on the combat wire (AttrHp=11310, AttrMaxHp=11320). Available for every entity in AOI — players, mobs, NPCs — not just party members. Use GetVitals to query.
static readonly Unknown Sentinel returned when no observation has been received for this entity yet.
HasHpObservation { get; set; } True once a REAL current-HP value has been observed for this entity (an AttrHp carrying hp >= 0, including 0 = dead). A MaxHp-only observation leaves this false while IsKnown is already true — such an entity is “alive, HP unknown”, NOT dead. Death inference (e.g. a meter’s dead styling, wipe detection) must require this flag before reading Hp <= 0 as death. Init-only (not a constructor parameter) so plugins compiled against older Abstractions keep binary compatibility.
Hp { get; set; } Last-known current HP. Zero when the entity has never been observed.
IsKnown { get; set; } True once at least one AttrHp or AttrMaxHp observation has landed.
LeftAoi { get; set; } True when this row was KEPT despite an AOI-disappear (EDisappearNormal — the entity left AOI while still alive elsewhere, e.g. a raid boss on another stage of a raid’s one big multi-stage map) rather than being evicted. Before the 2026-08-26 raid-bosshp-capture-design fix, ANY disappear evicted the row, so callers used IsKnown flipping back to false as an AOI-presence proxy (e.g. “vitals unknown” == “left AOI”, the signal a raid scripted-kill detector or stage-drain logic keys eviction on). That proxy no longer holds — a Normal-disappear leaves IsKnowntrue with stale-but-real data. Callers that need “still in AOI right now” must check IsKnown && !LeftAoi instead of IsKnown alone. Cleared by the very next real vitals observation for this entity (any AttrHp/AttrMaxHp/AttrMaxHpTotal delta, including a MaxHp-only one). Defaults to false; init-only, same binary-compat rationale as HasHpObservation.
MaxHp { get; set; } Last-known max HP. Zero when the entity has never been observed or hasn’t reported max yet.
Shield { get; set; } Last-known CURRENT shield (absorb) total for this entity, summed across every entry of the AttrShieldList attribute (EAttrType=60050) on the combat wire — decoded by Stellar.Wire.ShieldListReader. Zero when the entity has never reported a shield, or when its shield is fully depleted (a shield attr carrying total 0). A full replace-on-observe value like Hp: an observation that omits the shield attr keeps the last-known value (mirrors MaxHp absence handling), so a delta that only moves HP does not wipe an active shield. A meter’s HP spine overlays this as a grey band from the bottom (shield / MaxHp, clamped by the HP fraction). Init-only (not a constructor parameter) so plugins compiled against older Abstractions keep binary compatibility, same rationale as HasHpObservation / LeftAoi. Defaults to 0.