namespace Theriapolis.Core.Rules.Quests; /// /// Phase 6 M4 — runtime per-quest state. One instance per active or /// completed quest. The looks up the parent /// by id when ticking, so this struct stays /// small and serialises cleanly into the save layer. /// public sealed class QuestState { public string QuestId { get; init; } = ""; public string CurrentStep { get; set; } = ""; public QuestStatus Status { get; set; } = QuestStatus.Active; /// WorldClock seconds when the quest started. public long StartedAt { get; set; } /// WorldClock seconds when the current step entered. public long StepStartedAt { get; set; } /// Free-form journal entries the player can browse from QuestLog. public List Journal { get; } = new(); } public enum QuestStatus : byte { Active = 0, Completed = 1, Failed = 2, }