public sealed class QuestSectionA character's journal and its objective counters, as a profile section.
Remarks
Counters, so the profile — see CheckpointPolicy. A quest's stage written twice is still that stage. What a quest pays is assets and goes through the ledger, which is why nothing about a reward is stored here: the turn-in is a ledger write with an idempotency key, and a journal that also remembered "paid" would be a second record of the same fact that could disagree with the first.
⚠ The history is written for quests this build no longer has; the active list is not. That looks inconsistent and is the point. History is what QuestRepeat.Once reads, so losing an id lets somebody take a one-off quest again — and an id is all it needs. An active quest with no template has no stages, no objectives and no tags, so there is nothing to hold; the bytes stay in the profile and the quest comes back on a build that knows it.
⚠ Loading raises no events, and that is what ObjectiveTracker.Seat is for. Replaying the advances that made this progress would announce every objective again, settle every stage again and fire a reward chain a second time.
Fields and properties (2)
public const int VersionThe format this reads and writes.
public ProfileSectionId IdWhat names it.
Methods (3)
public QuestSection(QuestJournal journal, CheckpointPolicy? checkpoint = null)Makes one over a character's journal.
public ReadOnlyMemory<byte> Save()Writes what it holds.
public void Load(ReadOnlyMemory<byte> bytes)Reads what it held.
Used by (1)
- QuestSectionTestsVixen.Live.Gameplay.Tests