using Unity.Entities;
using Unity.NetCode;
namespace ProjectM.Simulation
{
///
/// A PERMANENT periodic BLIGHT hazard fixture (Phase 1.5b bundle 3; see Geyser_Build_Spec). An ownerless
/// INTERPOLATED ghost placed only in Blight-biome expedition rooms. is the ABSOLUTE
/// server tick of the next eruption — the ONLY replicated field; the client derives its telegraph countdown and
/// erupt-fire from it against its own predicted ServerTick (absolute-tick, NEVER an edge on the field — so it
/// survives snapshot loss + relevancy re-entry; the design-review-hardened contract, see Geyser_Build_Spec §7).
/// Server-only GeyserEruptSystem radius-damages LIVING players AND enemies (friendly
/// fire, like exploding barrels — also a tactical lure) when it elapses, then reschedules one period ahead of NOW
/// (never destroyed; RoomTag teardown removes it). Born-correct: RoomFieldSystem stamps NextEruptTick from the
/// live ServerTick at spawn, so the first snapshot never carries the 0 "ready/unstamped" sentinel (a baked 0 must
/// be treated as not-ready and NEVER erupted — the inverted invalid-tick guard).
///
public struct Geyser : IComponentData
{
/// Absolute server tick of the next eruption (via TickUtil.NonZero; 0 = unstamped = never erupt).
[GhostField] public uint NextEruptTick;
}
}