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;
}
}