docs: Remove outdated audit request and blueprint summary documentation

This commit is contained in:
Lefteris Notas
2026-05-21 21:31:51 +03:00
parent bcbfcdf167
commit 5b7d652505
2 changed files with 0 additions and 428 deletions

View File

@@ -1,113 +0,0 @@
# Audit Request: Cross-Reference Master Document vs Existing Blueprint Spec Files
## Goal
Systematically map every system defined in `UE5_Modular_Game_Framework.md` (3703 lines, ~131 systems across 13 sections) against the 83 existing blueprint spec files in `docs/blueprints/` to identify:
1. Which systems have corresponding blueprint spec files (Present)
2. Which systems are missing (Missing)
3. Which existing files have no clear corresponding master-document system (Orphaned / Renamed)
## Input Files
### Master Document
- `UE5_Modular_Game_Framework.md` (in workspace root)
### Existing Files (83 total)
Located under `docs/blueprints/` with the following structure:
```
docs/blueprints/
TEMPLATE.md
01-core/ (files 01-07)
02-player/ (files 08-15)
03-interaction/ (files 16-21)
04-inventory/ (files 22-27)
05-saveload/ (files 28-31)
06-ui/ (files 32-37)
07-narrative/ (files 38-48)
08-weapons/ (files 49-54)
09-ai/ (files 55-61)
10-adaptive/ (files 62-70)
11-polish/ (files 71-83)
```
## Master Document Section Structure
| Section | Title | Table Count | Lines |
|---------|-------|-------------|-------|
| 1 | Core Framework Systems | 8 | 154-537 |
| 2 | Player State & Embodiment | 9 | 540-939 |
| 3 | Interaction & World Manipulation | 11 | 941-1305 |
| 4 | Inventory, Items & Collectibles | 12 | 1307-1643 |
| 5 | Weapon, Equipment & Damage | 10 | 1645-1892 |
| 6 | UI, Menus & Diegetic Presentation | 13 | 1894-2143 |
| 7 | Narrative, Dialogue, Objective & Choice | 11 | 2146-2467 |
| 8 | Save, Load, Persistence & Death Loop | 11 | 2469-2691 |
| 9 | Adaptive Environment, Atmosphere & Scare | 9 | 2693-2935 |
| 10 | AI, Perception & Encounters | 9 | 2937-3109 |
| 11 | Achievements, Progression & Meta | 10 | 3112-3286 |
| 12 | Settings, Accessibility & Platform | 9 | 3288-3389 |
| 13 | Editor / Data / Content Authoring | 9 | 3391-3498 |
## Existing Files Reference (83 files)
### 01-core/ (7 files)
01_GI_GameTagRegistry.md, 02_FL_GameUtilities.md, 03_I_InterfaceLibrary.md, 04_GI_GameFramework.md, 05_GM_CoreGameMode.md, 06_GS_CoreGameState.md, 07_DA_ItemData.md
### 02-player/ (8 files)
08_BPC_HealthSystem.md, 09_BPC_StaminaSystem.md, 10_BPC_StressSystem.md, 11_BPC_MovementStateSystem.md, 12_BPC_HidingSystem.md, 13_BPC_EmbodimentSystem.md, 14_BPC_CameraStateLayer.md, 15_BPC_PlayerMetricsTracker.md
### 03-interaction/ (6 files)
16_BPC_InteractionDetector.md, 17_BPC_PickupComponent.md, 18_I_HidingSpot.md, 19_BPC_LeverPuzzleComponent.md, 20_BPC_InteractableDoorComponent.md, 21_BPC_DiegeticDisplay.md
### 04-inventory/ (6 files)
22_BPC_InventoryComponent.md, 23_BPC_InventoryWeightSystem.md, 24_BPC_InventoryQuickSlot.md, 25_BPC_EquipmentSystem.md, 26_BPC_ContainerInventory.md, 27_BP_ItemPickup.md
### 05-saveload/ (4 files)
28_SS_SaveManager.md, 29_I_Persistable.md, 30_BPC_CheckpointSystem.md, 31_BPC_DeathHandlingSystem.md
### 06-ui/ (6 files)
32_SS_UIManager.md, 33_WBP_HUD.md, 34_WBP_InventoryUI.md, 35_WBP_InteractionUI.md, 36_WBP_MenuWidgets.md, 37_WBP_AccessibilityUI.md
### 07-narrative/ (11 files)
38_BPC_NarrativeStateSystem.md, 39_BPC_ObjectiveSystem.md, 40_BPC_DialoguePlaybackSystem.md, 41_BPC_DialogueChoiceSystem.md, 42_BPC_BranchingConsequenceSystem.md, 43_BPC_TrialScenarioSystem.md, 44_BPC_CutsceneBridge.md, 45_BPC_EndingAccumulatorSystem.md, 46_BPC_LoreUnlockSystem.md, 47_BPC_NarrativeTriggerVolume.md, 48_DA_NarrativeDataAssets.md
### 08-weapons/ (6 files)
49_BP_WeaponBase.md, 50_BP_RangedWeapon.md, 51_BP_MeleeWeapon.md, 52_BPC_AmmoComponent.md, 53_BPC_DamageHandlerComponent.md, 54_BPC_CombatFeedbackComponent.md
### 09-ai/ (7 files)
55_BPC_AIControllerBase.md, 56_BPC_PerceptionComponent.md, 57_BPC_BehaviorTreeManager.md, 58_BP_EnemyBase.md, 59_BP_PatrolPath.md, 60_BPC_AlertSystem.md, 61_BPC_AIStateMachine.md
### 10-adaptive/ (9 files)
62_BPC_DifficultyManager.md, 63_BPC_FearSystem.md, 64_BPC_AtmosphereController.md, 65_BPC_LightingManager.md, 66_BPC_AudioManager.md, 67_BPC_VFXManager.md, 68_BP_DynamicEvent.md, 69_BPC_PerformanceScaler.md, 70_BPC_ProceduralEncounter.md
### 11-polish/ (13 files)
71_SS_SettingsManager.md, 72_BPC_AccessibilitySettings.md, 73_BPC_TutorialSystem.md, 74_BPC_AchievementManager.md, 75_BPC_StatsTracker.md, 76_BPC_LoadingScreen.md, 77_WBP_CreditsScreen.md, 78_WBP_SplashScreen.md, 79_BPC_FPSCounter.md, 80_BPC_DevCheatManager.md, 81_WBP_DebugMenu.md, 82_BPC_AnalyticsTracker.md, 83_BPC_ErrorHandler.md
## Methodology
Read each section of the master document and extract:
- Every named system (by its prefix + name, e.g., `BPC_HealthSystem`, `BP_DoorActor`, `SS_SaveSystem`, `WBP_HUDController`)
- Cross-reference against the 83 existing files by matching:
- Exact name match (e.g., `BPC_HealthSystem``08_BPC_HealthSystem.md`)
- Semantic match (e.g., `SS_SaveSystem` in master doc → `28_SS_SaveManager.md` on disk)
- Bundled match (e.g., `WBP_MainMenu`, `WBP_PauseMenu`, `WBP_SettingsMenu` in master doc → `36_WBP_MenuWidgets.md` on disk)
## Output Format
Produce a Markdown table for each section of the master document with columns:
| Master Doc System | Corresponding File | Status | Notes |
|---|---|---|---|
| `BPC_HealthSystem` | `08_BPC_HealthSystem.md` | ExactMatch | Same name |
| `SS_SaveSystem` | `28_SS_SaveManager.md` | RenamedMatch | Master calls it SaveSystem, file calls it SaveManager |
| `BPC_InteractionExecutor` | (none) | Missing | No corresponding file |
Also flag files that exist on disk but have no obvious match in the master document (orphaned).
## Final Summary
At the end, provide:
1. Count of ExactMatch systems
2. Count of RenamedMatch systems
3. Count of Missing systems
4. Count of Orphaned files
5. Total systems in master doc
6. Total files on disk
7. List of all missing system names organized by their source section

View File

@@ -1,315 +0,0 @@
# 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 used** `EnterHideSpot` notifies `OnAnimationHideEnterComplete`. `HideSpotBase` calls `EnterMontage`. Death uses `E_DeathAnimationStage` timeline. Reload/Fire use montage notifies for ammo insertion timing.