CrimsonQuestSystem

CrimsonQuestSystem tracks quest progress for every player on the server and replicates it to the owner. A quest (UCrimsonQuestDefinition) is a graph of stages; each stage holds events (objectives), entry and exit actions, and conditional transitions. Your gameplay reports what happened through UCrimsonQuestSubsystem::ReportEvent, and the quest system reports back through its own delegates, so it plugs into any combat, inventory or dialogue system.

What's included

SystemKey typesPurpose
Quest dataUCrimsonQuestDefinition, UCrimsonQuestStage, UCrimsonQuestChainAuthored in the quest graph editor
RuntimeUCrimsonQuestProgressionComponent, UCrimsonQuestSubsystem, ACrimsonQuestWorldDirectorPer-player state machine, definition lookup and event ingress, party aggregation
EventsKill, Collect Items, Interact, Reach Location, Talk To NPC, Fact Set, Timer Elapsed, Channel ReportedObjectives driven by reported events
Actions / conditions / rewardsUCrimsonQuestAction_*, UCrimsonQuestCondition_*, UCrimsonQuestReward_*Side effects, predicates, rewards
FactsUCrimsonFactDatabase, UCrimsonFactRegistryPer-player typed key-value store
HotfixFCrimsonQuestDefinitionOverlay, ICrimsonQuestDataSourcePatch quests without recooking
EditorQuest graph editor, Crimson Quest Dev Tools (Crimson.Quest.DevTools)Author and debug in PIE

Plugin dependencies

GroupDependencies
Crimson pluginsNone - fully standalone
Engine modules (runtime)Core, CoreUObject, Engine, GameplayTags, GameplayAbilities, NetCore, UMG, DeveloperSettings (public); IrisCore, Json, JsonUtilities (private)
Engine pluginsGameplayAbilities, SlateIM, GameplayTagsEditor
Which path do I choose?
New to the plugin? Quick Start. Wiring your combat or inventory code in? How-To: Report Gameplay Events. Building a quest log? How-To: React to Quest Changes.
Using with other Crimson plugins
This plugin works alone: gameplay reports events through UCrimsonQuestSubsystem::ReportEvent and listens to the quest delegates. When you own the other Crimson plugins, CrimsonCore contains the full-suite wiring in Source/CrimsonCore/{Public,Private}/Integration/QuestSystem/: UCrimsonCoreQuestMessageBridge forwards gameplay channels into ReportEvent and re-broadcasts quest state, reward and message delegates, and UCrimsonCoreQuestEvent_MessageReceived is a quest event driven by any broadcast message. To wire it yourself, see CrimsonCommon -> Concept: Connecting Crimson Plugins; for what CrimsonCore installs, see CrimsonCore -> Concept: The Integration Layer.