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