EntityDisappearReason enumeration
Subset of the wire’s zproto.EDisappearType (see data/StarResonanceData/proto/zproto/enum_e_disappear_type.proto and DisappearEntity.Type, field 2, on SyncNearEntities’s disappear list) surfaced to the framework-internal combat event sink’s OnEntityDisappeared(EntityId, EntityDisappearReason). Distinguishes “left AOI while still alive elsewhere” from a real death/destroy/transfer — see docs/superpowers/specs/2026-08-26-raid-bosshp-capture-design.md § decision 1 (the L1 fix: a raid boss walking out of AOI mid-fight used to evict its vitals row unconditionally, starving the HP sampler until the boss re-entered AOI).
Named-value numbers are the proto’s own wire ints, so a caller comparing against the raw wire value never needs a separate lookup table — same tolerance policy as ActorState/PartyLeaveKind: any wire value this framework doesn’t name (including a future addition, e.g. the proto’s own EDisappearTransferPassLineLeave=4) reports as Unknown rather than throwing, and is treated exactly like a real disappear (evict) — the safe default.
public enum EntityDisappearReasonValues
Section titled “Values”| name | value | description |
|---|---|---|
| Unknown | -1 |
Wire value not one of the reasons named below, OR no disappear-type context is available at all (e.g. a non-wire caller such as the idle-entity sweep). Treated as a real disappear — evicts cached state exactly like Dead/Destroy/TransferLeave. This is the default parameter value on OnEntityDisappeared so every caller that predates this fix keeps today’s evict-everything behavior unchanged. |
| Normal | 0 |
EDisappearNormal (0) — the entity left AOI while still alive elsewhere (the common case on a raid’s one big multi-stage map). Vitals + the raw attr map are KEPT rather than evicted — stale-but-known beats Unknown, which is what starved the boss-HP sampler (L1). |
| Dead | 1 |
EDisappearDead (1) — the entity died. |
| Destroy | 2 |
EDisappearDestroy (2) — the entity was destroyed/despawned. |
| TransferLeave | 3 |
EDisappearTransferLeave (3) — the entity transferred to another scene/instance. |
See Also
Section titled “See Also”- namespace Stellar.Abstractions.Domain