namespace NeonSprawl.Server.Game.Quests;
/// Immutable per-player quest progress snapshot (NEO-116; module contract QuestStepState).
public sealed class QuestStepState(
string playerId,
string questId,
QuestProgressStatus status,
int currentStepIndex,
IReadOnlyDictionary objectiveCounters,
DateTimeOffset? completedAt)
{
public string PlayerId { get; } = playerId;
public string QuestId { get; } = questId;
public QuestProgressStatus Status { get; } = status;
public int CurrentStepIndex { get; } = currentStepIndex;
/// Objective id → accumulated count for the step only.
public IReadOnlyDictionary ObjectiveCounters { get; } = objectiveCounters;
public DateTimeOffset? CompletedAt { get; } = completedAt;
}