Vixen
caa30e12
csharp
public sealed class QuestSection

A character's journal and its objective counters, as a profile section.

Read the guide page for this →

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 Version

    The format this reads and writes.

  • public ProfileSectionId Id

    What 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