Files
UE5-Modular-Game-Framework/docs/reports/blueprint_condensed_summary.md
2026-05-19 10:18:53 +00:00

27 KiB

Blueprint Condensed Summary — 129 Files Analyzed

Generated: 2026-05-18
Agent: Ask (Knowledge Keeper)
Source: docs/blueprints/ (all 15 categories)


SUMMARY A — Animation Requirements Catalog

1. Core/System (No direct animation triggers)

System File Notes
DA_GameTagRegistry 01 Passive data asset — no animations
FL_GameUtilities 02 Pure function library — no animations
I_InterfaceLibrary 03 Interface contracts only — no animations
GI_GameFramework 04 GameInstance — no animations
GM_CoreGameMode 05 GameMode — no animations
GS_CoreGameState 06 GameState — no animations
DA_ItemData 07 Data asset — no animations

2. Player Systems

System Trigger Type Body GASP Notes
BPC_HealthSystem (08) OnDeath → HandleDeath Montage Full Death animation sequence (E_DeathAnimationStage: PreDeath, DeathAnim, PostDeath, RespawnTransition). Hit reaction implied via dispatcher
BPC_StaminaSystem (09) OnExhaustionStateChanged Montage/Blend Upper Heavy breathing animation, refers to ABP_GASP (breathing animation). Exhausted state drives breathing anim
BPC_StressSystem (10) OnStressTierChanged (≥Panicked) PoseAsset/Blend Full FOV distortion via camera, no direct skeletal anim specified. Catatonic tier applies stumble/freeze
BPC_MovementStateSystem (11) OnMovementModeChanged (all modes) BlendSpace/Montage Full GASP-centric. Sets GASP-specific variables (bStrafing, bSprinting) in AnimationBlueprint. Notifies ABP_GASP via interface/direct cast. Posture changes: capsule height changes for Crouch/Prone. Forced transitions apply impulse/knockback
BPC_MovementStateSystem (11) Transition between postures Blend Full E_StanceTransition: Instant, Smooth (TransitionBlendTime=0.2s), Forced
BPC_MovementStateSystem (11) OnJumped / OnLanded Montage Full Landing impact animation
BPC_MovementStateSystem (11) OnClimbStarted / OnClimbEnded Montage Full Climbing animation
BPC_MovementStateSystem (11) OnFootstep None (audio only) Footstep dispatcher—animation handled by GASP locomotion blend
BPC_HidingSystem (12) EnterHideSpot Montage Full EnterMontage — plays entering animation via ABP_GASP. On animation notify → Set HideState=Hidden
BPC_HidingSystem (12) ExitHideSpot Montage Full ExitMontage — plays exiting animation. bForceExit skips animation
BPC_HidingSystem (12) StartPeek Pose Upper Camera moves to peek socket — no animation, camera-only
BPC_EmbodimentSystem (13) SetVisibilityMode Arms Arms mesh toggle for ArmsOnly/FullBody/Hidden modes. Arm IK offset on wall proximity
BPC_EmbodimentSystem (13) CheckWallProximity IK Pose Arms Arm IK offset when near walls. Notifies ABP_Arms
BPC_CameraStateLayer (14) RequestCameraState (all states) None Camera FOV/offset only — no skeletal animation
BPC_PlayerMetricsTracker (15) None Pure data gathering — no animation

3. Interaction Systems

System Trigger Type Body Notes
BPC_InteractionDetector (16) Hold interaction None Hold progress uses timer, no animation
I_HidingSpot / BP_HidingSpotBase (17) EnterMontage Montage Full EnterMontage, ExitMontage, IdleMontage defined as variables. Player animation for entering/exiting hiding spots
BP_DoorActor (19) TryOpen / TryClose Timeline/Interp Door rotation/slide animation via Timeline (0→1 over 1/OpenSpeed seconds). Skeletal mesh relative rotation interpolation
BP_DoorActor (19) PlayOpenAnimation / PlayCloseAnimation Timeline Interpolates DoorMeshComponent RelativeRotation.Yaw. Not a character animation
BPC_ContextualTraversalSystem (21) AttemptTraversal Montage (root motion) Full Root motion traversal montages with Motion Warping. Vault, Mantle, Slide, Squeeze, LedgeGrab. MotionWarpingTarget set for accurate placement
BPC_PhysicsDragSystem (22) GrabObject Pose/IK Arms Hand IK for holding physics object. Grabbed object attached to hand socket
BPC_UsableWorldObjectSystem (23) None Generic use — no animations

4. Inventory Systems

System Trigger Type Body Notes
BPC_ContainerInventory (24) None UI only
BP_ItemPickup (25) BeingPickedUp Montage Arms Pickup animation before destruction. OnPickupAnimationComplete callback. Also: Idle bobbing/rotating timeline
BPC_ActiveItemSystem (26) SelectSlot Quick slot switching — animation implied via weapon equip
BPC_ConsumableSystem (28) UseConsumable Montage Upper Use animation for consuming items (health pack, etc.)
BPC_EquipmentSlotSystem (30) EquipItem Montage Upper E_EquipAnimationType: Instant, Holster, Equip, Unequip. Weapon draw/holster animations, armor equip anim
Remaining inventory (27,29,31-34) None Data/UI systems, no animations

5. Save/Load Systems

System Trigger Type Body Notes
All SS/BP save systems (35-43) None No animation triggers. Death sequence animations handled by BPC_DeathHandlingSystem which references E_DeathAnimationStage

6. Weapon Systems (08-weapons)

System Trigger Type Body Notes
BP_WeaponBase (69) Fire Montage Upper Fire animation. Recoil animation. Equip/Holster animations
BP_WeaponBase (69) Reload Montage Upper Reload montage with notifies for ammo insertion/action cycles
BPC_FirearmSystem (74) StartSwing (melee) Montage Upper Melee swing animation. Chamber check animation
BPC_MeleeSystem (76) StartSwing Montage Upper Melee attack montage with hit-window notifies
BPC_MeleeSystem (76) Parry / Block Montage Upper Block and parry animations
BPC_ReloadSystem (78) StartReload Montage Upper Full reload montage. Interruptible at specific notifies
BPC_RecoilSystem (77) OnFire Procedural Camera recoil/hand animation — procedural via spring arm offset
BPC_HitReactionSystem (75) OnDamageTaken Montage Full Hit reaction montage. Directional hit reacts (front/back/left/right). Stagger animation
BPC_ShieldDefenseSystem (79) OnBlock Montage Arms Shield raise/block animation. Block stun animation
BPC_CombatFeedbackComponent (71) OnHitConfirmed VFX/Montage No direct skeletal anim. Camera shake + VFX
BPC_DamageReceptionSystem (72) OnDamageTaken Montage Full Damage reception animations. Stagger, knockdown
BPC_DeathCauseTracker (73) None Data tracking — no animation
BPC_AmmoComponent (70) None Data tracking — no animation

7. AI Systems (09-ai)

System Trigger Type Body Notes
BP_EnemyBase (80) State transitions BlendSpace/Montage Full Locomotion blendspace. Attack montages. Hit reactions. Death montage
BPC_AIStateMachine (83) State transitions (Patrol→Combat→Search) BlendSpace Full BlendSpace-based locomotion per state. Alert→Combat transition animation
BPC_AIPerceptionSystem (87) OnTargetDetected No direct animation trigger
BPC_AlertSystem (82) AlertState transitions Montage Full Alerted animation (head snap, body turn). Suspicious look animation
BPC_BehaviourVariantSelector (88) Variant selection Montage Full Chooses between variant attack/patrol animations
AI Memory, Patrol, BB (81,84-86) None Data/state only

8. Adaptive/Atmosphere Systems (10-adaptive)

System Trigger Type Body Notes
BPC_FearSystem (90) Fear level changes Procedural Character fear pose/breathing animations
BPC_ScareEventSystem (101) OnScareTriggered Montage Full Player jump-scare animation (body jerk, camera whip)
BPC_MemoryDriftSystem (97) Memory distortion active PostProcess Visual distortion — no skeletal animation
Remaining adaptive systems Atmosphere/light changes Environment animation only (light flicker, audio fade)

9. UI Systems (06-ui)

No skeletal animation triggers. All UI widget animations (fade in/out, slide, pulse) are WidgetAnimations on UUserWidget.


SUMMARY B — Sound/Audio Requirements Catalog

1. Player Systems

System Sound Trigger Type Surface/Variation 3D
BPC_HealthSystem (08) OnDamageTaken SFX Varies by damage type (Physical, Fire, Fear, etc.) Yes
BPC_HealthSystem (08) OnDeath SFX Death sound Yes
BPC_HealthSystem (08) OnHealthCritical SFX Low-health heartbeat/breathing No (2D)
BPC_HealthSystem (08) OnHealingReceived SFX Healing sound Yes
BPC_StaminaSystem (09) OnExhausted SFX/VO Heavy breathing, heartbeat, fatigue voice lines No (2D)
BPC_StaminaSystem (09) OnStaminaChanged SFX Low stamina warning No
BPC_StaminaSystem (09) OnStaminaFullyRestored SFX Restored chime No
BPC_StressSystem (10) OnStressTierChanged SFX/Music/Ambience Heartbeat audio (Panicked), breathing (Distressed), audio hallucinations (Terrified) Mixed (hallucinations 3D/2D)
BPC_StressSystem (10) OnHallucinationTriggered SFX/VO Random hallucination audio Yes/No
BPC_StressSystem (10) OnCatatonicStateEntered SFX Freeze/stumble sound Yes
BPC_MovementStateSystem (11) OnFootstep SFX Surface-based. S_FootstepProfile: SoundSoft/SoundHard based on velocity threshold. EPhysicalSurface lookup Yes
BPC_MovementStateSystem (11) OnJumped SFX Jump sound Yes
BPC_MovementStateSystem (11) OnLanded SFX Landing sound, velocity-based Yes
BPC_MovementStateSystem (11) OnSprintStateChanged SFX Sprint wind/breath No
BPC_HidingSystem (12) OnHideStateChanged SFX Enter/exit hide sounds. Breath-hold sounds Yes
BPC_HidingSystem (12) OnHideSpotCompromised Music Tension/heartbeat music No
BPC_HidingSystem (12) OnForcedExitWarning SFX/Music Heartbeat audio No
BPC_EmbodimentSystem (13) OnOverlayChanged (blood/water) SFX Blood spatter, water drip Yes

2. Interaction Systems

System Sound Trigger Type Notes 3D
BP_DoorActor (19) PlayOpenAnimation SFX S_DoorAudioConfig.OpenSound Yes
BP_DoorActor (19) PlayCloseAnimation SFX S_DoorAudioConfig.CloseSound Yes
BP_DoorActor (19) TryUnlock (locked) SFX LockedSound Yes
BP_DoorActor (19) UnlockDoor SFX UnlockSound Yes
BP_DoorActor (19) DamageBarricade (break) SFX BarricadeBreakSound Yes
BP_DoorActor (19) Moving squeak SFX SqueakInterval timer Yes
BP_DoorActor (19) OnInteractionFailed SFX Blocked feedback Yes
BP_ItemPickup (25) PlayPickupFeedback SFX Pickup sound Yes
BPC_PhysicsDragSystem (22) OnObjectGrabbed / Released SFX Grab/release sound Yes
BPC_UsableWorldObjectSystem (23) OnObjectUsed SFX Generic use sound Yes

3. Narrative Systems

System Sound Trigger Type Notes 3D
BPC_DialoguePlaybackSystem (60) OnLineStarted VO/Dialogue Voice audio per speaker (optional). Lip-sync audio Yes
BPC_DialoguePlaybackSystem (60) OnDialogueStarted/Ended Music Dialogue music stinger No
BPC_DialogueChoiceSystem (61) OnChoicesPresented UI Choice UI open/select sounds No
BPC_CutsceneBridge (64) OnCutscenePlayRequested Music Cutscene music No
BPC_CutsceneBridge (64) OnCutsceneMilestoneReached SFX/Music Milestone stingers No

4. Weapon Systems

System Sound Trigger Type Notes 3D
BP_WeaponBase (69) Fire SFX Weapon fire sound (variation: suppressed/normal) Yes
BP_WeaponBase (69) Reload SFX Reload sounds (mag out, mag in, bolt) Yes
BPC_AmmoComponent (70) OnOutOfAmmo SFX Click Yes
BPC_ReloadSystem (78) StartReload / CompleteReload SFX Tactical/empty reload sounds Yes
BPC_MeleeSystem (76) StartSwing SFX Swing whoosh Yes
BPC_MeleeSystem (76) OnHitConfirmed SFX Impact sound (varies by material) Yes
BPC_HitReactionSystem (75) OnDamageTaken SFX Pain/death sounds Yes
BPC_CombatFeedbackComponent (71) OnHitConfirmed SFX Impact sound, ricochet Yes
BPC_ShieldDefenseSystem (79) OnBlock SFX Block impact Yes

5. AI Systems

System Sound Trigger Type Notes 3D
BP_EnemyBase (80) Alert state transitions VO/SFX Alert callout, combat bark, pain, death Yes
BPC_AlertSystem (82) OnAlertStateChanged VO Suspicious line, combat shout Yes
BPC_AIPerceptionSystem (87) OnTargetDetected / Lost VO Detection lines Yes
BPC_FearSystem (90) OnFearStateChanged VO/SFX Fearful whimper, heavy breathing Yes

6. Adaptive/Atmosphere Systems

System Sound Trigger Type Notes 3D
BPC_AudioAtmosphereController (95) OnAtmosphereChanged Ambience/Music Ambient layer swap. Music intensity change. Dynamic mixing Yes
BPC_ScareEventSystem (101) OnScareTriggered SFX/Music Stinger sound, music hit Yes
BPC_PacingDirector (98) Intensity level changes Music Music intensity ramping No
BPC_DifficultyManager (89) Difficulty changed No direct audio trigger

7. Interactive World Objects

System Sound Trigger Type Notes 3D
BPC_ContainerInventory (24) OnContainerOpened SFX Open chest/drawer Yes
BP_PuzzleDeviceActor (20) OnPuzzleStateChanged SFX Puzzle click/solve/fail Yes
BPC_ContextualTraversalSystem (21) OnTraversalStarted SFX Vault/climb/slide sound Yes

SUMMARY C — Chooser Table Candidates

Condition-Based Selection Nodes

File System Selects Between Input Columns (Conditions) Output Row Logic
08 BPC_HealthSystem Damage resistance multiplier E_DamageType, stackable flag EffectiveDamage multiplier Lookup DamageType → multiplier. If bIsStackable, accumulate
09 BPC_StaminaSystem Exhaustion state (Normal/Low/Exhausted) CurrentStamina/MaxStamina ratio vs thresholds Regen rate, regen delay, sprint block if ratio ≤ ExhaustedThreshold → Exhausted; if ≤ LowThreshold → Low; else Normal
10 BPC_StressSystem Stress tier (Calm→Catatonic) CurrentStress vs threshold values Visual/audio penalty tier Descending threshold check: highest exceeded → assign tier
11 BPC_MovementStateSystem Movement mode settings (speed/accel) Current movement mode MaxWalkSpeed, Acceleration, Deceleration Map lookup: MovementSettings[CurrentMovementMode]
11 BPC_MovementStateSystem Footstep sound (Soft vs Hard) SurfaceType, MovementMode, velocity vs threshold SoundBase (SoundSoft/SoundHard) Trace surface → lookup profile → if velocity > threshold use Hard
11 BPC_MovementStateSystem Stance transition type E_StanceTransition (Instant/Smooth/Forced) Blend time, impulse Switch on transition type
12 BPC_HidingSystem IsPlayerDetectable HideType, enemy distance, LOS trace Boolean detectable If Hidden false→true. LOS trace: hits cover first→false; hits player→true
17 I_HidingSpot / BP Detectability modifier E_HideSpotQuality DetectionRangeModifier (0-1), DetectionSpeedModifier (0-1) Better quality = lower detection
19 BP_DoorActor Door interaction outcome CurrentState, LockState, HasKey Play open/play locked/start unlock If Locked→check key; if Closed→open; if Open→close
19 BP_DoorActor Auto-close timer AutoCloseDelay > 0 Countdown or none If delay > 0 → start timer after open
21 BPC_ContextualTraversalSystem Traversal type Obstacle height vs thresholds (Low/Medium/High) Vault/Mantle/Slide/Squeeze if height ≤ Low→step; ≤ Medium→vault; ≤ High→mantle
24 BPC_ContainerInventory Loot generation E_ContainerFillMethod Fixed/loot-table/empty Switch on FillMethod
24 BPC_ContainerInventory Weighted loot selection Per-entry Weight, bGuaranteed Item + quantity Roll random against weight sum. If guaranteed→always spawn
25 BP_ItemPickup Pickup visual state Distance/overlap Idle/Highlighted/BeingPickedUp/Respawning Player overlap→Highlighted; Interact→BeingPickedUp; Respawn→Respawning
30 BPC_EquipmentSlotSystem Equip result Slot occupied, category, state Success/SlotOccupied/NotEquippable/BlockedByState Cascading validation checks
30 BPC_EquipmentSlotSystem Equip animation type E_EquipAnimationType Montage to play Switch: Instant→none; Holster→holster anim; Equip→equip anim
31 BPC_InventorySystem Sort mode E_SortMode Reordered slot array Switch: ByName, ByCategory, ByRarity, ByWeight, ByQuantity, ByRecent
31 BPC_InventorySystem Add item outcome Has space, has existing stack, weight capacity Add to stack/new slot/return error FindExistingStack→if found increment; else FindFreeSlot→new entry
38 BPC_AltDeathSpaceSystem Alt death space level GameplayTag vs AltDeathSpaceMap Level soft reference Map lookup by context tag
39 BPC_DeathHandlingSystem Death outcome S_DeathOutcomeRules + context StandardRespawn/GameOver/AltDeathSpace Evaluate configurable rules: max deaths reached? → GameOver; has alt space? → AltDeathSpace
50 WBP_JournalDocumentViewer Font style E_DocumentFontStyle Handwritten/Typewritten/Digital/BloodScrawled Per-document font style selection
58 BPC_NarrativeStateSystem HasAllFlags vs HasAnyFlag Array of GameplayTag values True/false AND query vs OR query
61 BPC_DialogueChoiceSystem GetValidChoices RequiredFlagTag exists + matches narrative state Filtered choice array Filter: if RequiredFlagTag is set, show choice; else hide
62 BPC_BranchingConsequenceSystem Consequence action type EConsequenceActionType Different system calls Switch: PlayDialogue, UpdateObjective, SetWorldState, TriggerCutscene, etc.
63 BPC_TrialScenarioSystem Scenario end outcome CheckAllObjectives, CheckFailureConditions Success or Failure All objectives complete→Success; failure condition→Failure
74 BPC_FirearmSystem Fire mode E_FireMode (Single/Burst/Auto) Fire rate, ammo consumption Switch on fire mode
78 BPC_ReloadSystem Reload type Ammo count = 0 vs > 0 Empty reload vs tactical reload If current ammo = 0 → empty reload montage; else → tactical
83 BPC_AIStateMachine AI state Perception, alert level, health Patrol/Search/Combat/Flee State transition conditions
88 BPC_BehaviourVariantSelector Behaviour variant DA_BehaviourVariant data Different attack patterns, movement speeds Weighted random selection from variant set
89 BPC_DifficultyManager Difficulty level Player metrics vs thresholds Damage multipliers, spawn rates, resource amounts Metric-to-difficulty mapping
97 BPC_MemoryDriftSystem Memory distortion type Random roll vs tier Visual/audio/dialogue distortion effects Random selection weighted by stress tier
98 BPC_PacingDirector Pacing intensity Stress, combat, exploration time Music intensity, encounter frequency Composite score → intensity band
99 BPC_PlaystyleClassifier Player archetype Metrics (hiding vs combat vs exploration) Aggressive/Stealthy/Explorer/Balanced Metric ratio analysis
100 BPC_RareEventSystem Rare event selection Weight table per event Event to execute Weighted random from DA_RareEvent entries
103 SS_AchievementSystem Achievement unlock Metrics thresholds Achievement granted if metric ≥ threshold → unlock
118 DA_DataAssetArchitecture Data asset type Inherited class type Struct definition Per-asset-type variable set

SUMMARY D — State-Gating Actions

Actions that MUST be BLOCKED in certain states

Action System Owner Blocking States/Conditions Existing Gating
ApplyDamage BPC_HealthSystem (08) DeathState == Dead, bIsInvincible Early-out at top of function
ApplyHealing BPC_HealthSystem (08) DeathState == Dead Early-out at top of function
KillInstant BPC_HealthSystem (08) Already dead No gating (bypasses all)
DrainStamina BPC_StaminaSystem (09) Action cooldown active, CurrentStamina < MinStamina Check ActionCooldownTimers + CanAffordAction
StartContinuousDrain BPC_StaminaSystem (09) CurrentStamina <= 0 Stops drain on exhaustion
EnterHideSpot BPC_HidingSystem (12) CurrentHideState != Exposed, !bCanHide Early-out state check
ExitHideSpot BPC_HidingSystem (12) CurrentHideState != Hidden && != Peeking State check at top
StartPeek BPC_HidingSystem (12) CurrentHideState != Hidden, !bCanPeek, !bHasPeekAbility Multiple early-outs
StopPeek BPC_HidingSystem (12) CurrentHideState != Peeking State check
SetVisibilityMode BPC_EmbodimentSystem (13) NewMode == Current No-op guard
PerformInteraction BPC_InteractionDetector (16) bIsPerformingInteraction, DetectionState < TargetConfirmed, InputMode mismatch Triple guard
CancelInteraction BPC_InteractionDetector (16) !bIsPerformingInteraction Early-out
TryOpen BP_DoorActor (19) DoorState is Opening/Closing/Barricaded, !IsDoorUsable IsDoorUsable() check, state machine prevents during transitions
TryClose BP_DoorActor (19) DoorState is Opening/Closing, State != Open State check
EquipItem BPC_EquipmentSlotSystem (30) E_EquipResult.BlockedByState, BlockedByCondition CanEquipItem pre-check
UseItem BPC_InventorySystem (31) Item on cooldown, ItemNotUsable, bIsEquipped (weapons) Cooldown map + usability check
OnPlayerDeath BPC_DeathHandlingSystem (39) bIsDying (prevents re-entrant death) Guard flag
RespawnPlayer BPC_PlayerRespawnSystem (42) Invalid respawn transform Null-check before respawn
ForcePanic BPC_StressSystem (10) Already at Catatonic → immune Early-out at AddStress if Catatonic and !bIsInstant
FireWeapon BP_WeaponBase (69) / BPC_FirearmSystem (74) Out of ammo, reloading, in hide spot, cutscene, dead Ammo check, state checks from character
Reload BPC_ReloadSystem (78) Full ammo, not holding weapon, dead Ammo check, weapon validity
MeleeAttack BPC_MeleeSystem (76) In hide spot, dead, mid-combo Combo state machine
Block/Parry BPC_ShieldDefenseSystem (79) Not equipped, no stamina, dead Equipment + stamina check
Jump (Character/PC) In hide spot, dead, stamina exhausted Movement state check
Sprint (BPC_MovementStateSystem 11) Not grounded, dead, exhausted, in hide MovementState + stamina check
Crouch/Prone Transition BPC_MovementStateSystem (11) Ceiling clearance fail, no CrouchWalk mode CanTransitionToPosture(), clearance trace
Open Inventory SS_UIManager (44) Cutscene playing, dead, in dialogue GamePhase check by UIManager
Pause Game SS_UIManager (44) !bPauseAllowed (set by GM_CoreGameMode), cutscene GM_CoreGameMode.bPauseAllowed runtime flag
Initiate Dialogue BPC_DialoguePlaybackSystem (60) bIsPlaying (already in dialogue) Early-out if already playing
Skip Dialogue BPC_DialoguePlaybackSystem (60) !bCanSkipLine Per-sequence option check
Skip Cutscene BPC_CutsceneBridge (64) !bCanSkip, TimeBeforeSkip not elapsed CanSkipCutscene() with timer
SetGamePhase GI_GameFramework (04) Same phase as current (optional guard) Would normally fire dispatcher even for same value
EnterAltDeathSpace BPC_AltDeathSpaceSystem (38) bIsInAltDeathSpace Guard flag
ExitAltDeathSpace BPC_AltDeathSpaceSystem (38) !bIsInAltDeathSpace Guard flag
BeginScenario BPC_TrialScenarioSystem (63) ScenarioState != Inactive Active scenario guard
EndScenario BPC_TrialScenarioSystem (63) ScenarioState == Inactive Must be active
PlayCutscene BPC_CutsceneBridge (64) bIsPlaying Guard flag
SelectChoice BPC_DialogueChoiceSystem (61) !bChoiceActive Guard flag
AddStress BPC_StressSystem (10) CurrentTier == Catatonic (if !bIsInstant) Immunity at max tier
QuickSlot Switch BPC_ActiveItemSystem (26) !bCanSwitchItems (during animation), SwitchCooldown Cooldown timer + switch block
Interact Hold BPC_InteractionDetector (16) bBlockDuringDeath, bBlockDuringHiding, bBlockDuringCombat Config-based blocking per state
ApplyMovementPenalty BPC_MovementStateSystem (11) !bApplyMovementPenalties Config toggle
LockDoor BP_DoorActor (19) Already locked Redundant state guard

Key Architectural Patterns Observed

  1. Event Dispatcher-driven communication — Systems never call each other directly except through I_InterfaceLibrary interfaces or direct reference on same actor. All cross-component communication uses dispatchers.

  2. State machine everywhere — Every significant system uses state machines: E_HideState, E_DoorState, E_DeathOutcome, E_StressTier, E_CameraState, E_DiegeticDisplayMode, E_PuzzleState, EScenarioState, E_DetectionState.

  3. GASP integration pattern — Systems that need animation notify ABP_GASP via dispatcher (OnMovementModeChanged, OnPostureChanged, OnSprintStateChanged, OnExhaustionStateChanged, OnHideStateChanged). GASP reads movement mode/posture variables directly.

  4. GameplayTag-driven state — All enums map to GameplayTag namespaces. Conditions are checked via tag queries, not enums. Enums exist for performance in tight loops (stamina drain, movement mode switching).

  5. Montage notify patterns usedEnterHideSpot notifies OnAnimationHideEnterComplete. HideSpotBase calls EnterMontage. Death uses E_DeathAnimationStage timeline. Reload/Fire use montage notifies for ammo insertion timing.