42 — BPC_BranchingConsequenceSystem
Blueprint Spec — UE 5.5–5.7
Parent Class
ActorComponent
Dependencies
Purpose
Evaluates narrative consequences when flags change. Listens for flag changes across the narrative state and fires off deferred or immediate consequences: new dialogue, objective updates, world-state changes, or scene transitions.
Responsibilities
- Watch for flag changes (via dispatcher from
BPC_NarrativeStateSystem)
- Match changed flags against
DA_ConsequenceRule entries
- Execute matched consequence actions (play dialogue, update objective, modify world, trigger cutscene)
- Handle priority and stacking for multiple consequences firing simultaneously
- Separate immediate vs. delayed consequences (allow narrative beat to breathe)
Does NOT Handle
- Setting flags (that is
BPC_NarrativeStateSystem)
- Playing dialogue lines (that is
BPC_DialoguePlaybackSystem)
- Evaluating choices (that is
BPC_DialogueChoiceSystem)
- Triggering cutscene play (that is
BPC_CutsceneBridge)
Variables
| Name |
Type |
Description |
ConsequenceRules |
Array of DA_ConsequenceRule |
Loaded rules from content registry |
PendingConsequences |
Array of FConsequencePayload |
Queue of delayed consequences |
ActiveConsequenceCount |
Integer |
Prevent stacking beyond max |
MaxConcurrentConsequences |
Integer |
Max simultaneous actions (default 3) |
Structs
| Struct |
Fields |
Description |
FConsequencePayload |
RuleRef: DA_ConsequenceRule, TriggerFlag: GameplayTag, FireTime: Float (world time for delayed), bIsImmediate: Bool |
Holds a consequence awaiting execution |
Enums
| Enum |
Values |
Description |
EConsequenceActionType |
PlayDialogue, UpdateObjective, SetWorldState, TriggerCutscene, UnlockLore, ModifyStat, SpawnActor, DestroyActor |
Types of actions a consequence can perform |
Functions / Events
| Name |
Inputs |
Outputs |
Description |
RegisterConsequenceRule |
Rule: DA_ConsequenceRule |
— |
Add a rule to active set |
OnFlagChanged |
FlagTag: GameplayTag, bIsSet: Bool |
— |
Dispatcher callback from narrative state |
EvaluateRulesForFlag |
FlagTag: GameplayTag |
Array of DA_ConsequenceRule |
Find matching rules |
ExecuteConsequence |
Rule: DA_ConsequenceRule |
— |
Fire immediate or queue delayed |
ExecuteImmediateAction |
Action: FConsequenceData |
— |
Internal: performs single action |
ProcessDelayedConsequences |
— |
— |
Called every tick or on timer for delayed queue |
ClearPendingConsequences |
— |
— |
Clear all pending (e.g., on scene transition) |
GetActiveRuleCount |
— |
Integer |
|
Data: FConsequenceData (Inline in DA_ConsequenceRule)
| Field |
Type |
Description |
| ActionType |
Enum(EConsequenceActionType) |
What to do |
| TargetTag |
GameplayTag |
Dialogue sequence, objective, or world flag to apply |
| FloatValue |
Float |
Numeric modifier (e.g., stat change) |
| DelaySeconds |
Float |
0 = immediate, >0 = delayed |
| bBlocking |
Bool |
If true, wait for this to complete before next |
| Priority |
Integer |
Higher = execute first |
Event Dispatchers
| Name |
Parameters |
Fired When |
OnConsequenceTriggered |
Rule: DA_ConsequenceRule, ActionType: EConsequenceActionType |
Consequence begins execution |
OnConsequenceCompleted |
Rule: DA_ConsequenceRule |
Consequence finished |
OnConsequenceQueueChanged |
PendingCount: Integer |
Delayed queue size changed |
Blueprint Flow
Communications With
Reuse Notes
Consequence rules are data-driven via DA_ConsequenceRule, enabling designers to author branch logic without blueprint edits. The system supports both immediate and delayed consequences, allowing dramatic pacing. Priority sorting ensures critical consequences fire first. Blocking flag prevents race conditions between sequential narrative beats.