namespace IdleSpectator; /// Parallel multi-minute chapter over war / disaster / outbreak (not a short StoryArc). public enum CrisisKind { None = 0, War = 1, Disaster = 2, Outbreak = 3 } public enum CrisisPhase { Active = 0, Epilogue = 1, Done = 2 } /// /// Long bias overlay: ownership boost, ambient suppress, forced closer. /// Lives beside short so unrelated tips do not thrash chapter state. /// public sealed class CrisisChapter { public CrisisKind Kind = CrisisKind.None; public CrisisPhase Phase = CrisisPhase.Done; public string AnchorKey = ""; public string Id = ""; public float StartedAt; public float LastSignalAt; public float PhaseStartedAt; public long FollowId; public bool EpilogueInjected; /// Unordered kingdom theater pair for war chapters (matches local Mass scraps). public string TheaterKeyA = ""; public string TheaterKeyB = ""; public bool IsLive => Phase == CrisisPhase.Active || Phase == CrisisPhase.Epilogue; public void Advance(CrisisPhase next, float now) { if (Phase == next) { return; } Phase = next; PhaseStartedAt = now; } }