# Narrative Systems — Asset Creation Sheet (11 assets) > **UE5 Path:** `Content/Framework/Narrative/` --- ## Components (attach to player pawn or GameState) ### BPC_NarrativeStateSystem | Variable | Type | Default | |----------|------|---------| | `ActiveFlags` | `Array` | Empty | | `CurrentChapter` | GameplayTag | Empty | | `CurrentPhase` | GameplayTag | Empty | **SetFlag(Tag):** Add to ActiveFlags → broadcast OnNarrativeFlagSet ### BPC_ObjectiveSystem | Variable | Type | Default | |----------|------|---------| | `ActiveObjectives` | `Array` | Empty | | `CompletedObjectives` | `Array` | Empty | **ActivateObjective(Tag):** → Add to Active → broadcast OnObjectiveActivated → GS_CoreGameState.AddObjective(Tag) ### BPC_DialoguePlaybackSystem | Variable | Type | |----------|------| | `DialogueQueue` | `Array` | | `bIsPlaying` | Boolean | | `bAutoAdvance` | Boolean | **PlayDialogue(DialogueData):** → Show subtitles → play VO → advance queue ### BPC_DialogueChoiceSystem | Variable | Type | |----------|------| | `CurrentChoices` | `Array` | | `SelectedChoiceIndex` | Integer | **PresentChoices(Choices):** → Show WBP_DialogueChoice widget → wait for selection → return ### BPC_BranchingConsequenceSystem | Variable | Type | |----------|------| | `PendingConsequences` | `Array` | **ExecuteConsequence(Choice):** → Grant items, set narrative flags, change relationships, trigger cutscenes ### BPC_TrialScenarioSystem | Variable | Type | Default | |----------|------|---------| | `TrialTimer` | Float | `0.0` | | `bTrialActive` | Boolean | `false` | | `TrialSuccessThreshold` | Float | `60.0` | ### BPC_CutsceneBridge | Variable | Type | |----------|------| | `CurrentCutscene` | `DA_CutsceneData` | | `bCutscenePlaying` | Boolean | **PlayCutscene(Data):** → Set phase to Cutscene → play Sequence → on finish → restore phase ### BPC_LoreUnlockSystem | Variable | Type | |----------|------| | `UnlockedLore` | `Array` | **UnlockLore(Tag):** → Add to unlocked → show notification → add to journal ### BPC_EndingAccumulator | Variable | Type | |----------|------| | `EndingConditions` | `TMap` | | `DominantEnding` | GameplayTag | --- ## Data Assets (create instances per content) | Asset | Purpose | |-------|---------| | `DA_DialogueData` | Dialogue lines, speaker, VO, conditions | | `DA_CutsceneData` | Level sequence, milestone flags, skip policy | | `DA_ObjectiveData` | Title, description, prerequisites, rewards | | `DA_TrialData` | Timer, success conditions, failure consequences | --- ## Actor — BP_NarrativeTriggerVolume **Parent:** `TriggerVolume` | Variable | Type | |----------|------| | `TriggerTag` | GameplayTag | | `bTriggerOnce` | Boolean | | `NarrativeActions` | `Array` | **OnOverlapBegin:** → Execute narrative actions (set flag, start dialogue, activate objective, play cutscene) --- ## Test These - [ ] Walk into trigger → dialogue starts → subtitles show - [ ] Dialogue choices appear → select option → consequence fires - [ ] Objective activates → shows in HUD objective display - [ ] Trial scenario starts → timer counts down → succeed/fail