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