Files
TheriapolisV3/Theriapolis.Core/Rules/Quests/QuestState.cs
T
Christopher Wiebe b451f83174 Initial commit: Theriapolis baseline at port/godot branch point
Captures the pre-Godot-port state of the codebase. This is the rollback
anchor for the Godot port (M0 of theriapolis-rpg-implementation-plan-godot-port.md).
All Phase 0 through Phase 6.5 work is included; Phase 7 is in flight.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-30 20:40:51 -07:00

31 lines
1.0 KiB
C#

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