Skip to content
Version 2.11.0
↓ Get the launcher

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 EntityDisappearReason
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.