using Unity.Entities; namespace ProjectM.Simulation { /// /// Phase 1 (B3): the enemy corpse window. Stamped ONCE by HealthApplyDamageSystem on the lethal /// 0-crossing (server-only, never replicated — clients derive the death read from the replicated /// Health.Current<=0); the entity is destroyed when ServerTick reaches . /// While present the enemy is a CORPSE: every actor pass (AI move/windup/contact, boss kit), every /// LIVING count (room clear, HUD Remaining, MaxAlive fit, summon cap, siege cleared) and every target /// snapshot (projectiles, melee, turrets, auto-aim, aggro) must skip it — a corpse neither acts, counts, /// nor soaks hits (design review wf_fd177263: all counts were entity-count based, all snapshots unfiltered). /// public struct Dying : IComponentData { /// Server tick the corpse despawns (via TickUtil.NonZero; compared via NetworkTick). public uint UntilTick; /// Phase 1.7: NetworkId of the player credited with the kill (the last player-sourced DamageEvent /// drained this tick), or -1 if none. Read once by KillRewardSystem for on-kill boons (Siphon/Frenzy). public int KillerNetId; /// Phase 1.7: 0 until KillRewardSystem has granted this corpse's on-kill rewards (idempotent /// value latch — no structural change, no edge-detection). public byte Rewarded; } }