Document Batch 4A Pass 8 animation archaeology: AnimNotify callbacks and ability cleanup wiring.

Resolves UseAbility* callers via shared AN_Ability notifies, qualifies Pass 6 ability statuses, and records AnimBP/Montage dependencies without modifying Unreal assets.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-16 21:00:59 -07:00
co-authored by Cursor
parent 0d045d142f
commit 4e926d1ccc
6 changed files with 327 additions and 334 deletions
@@ -2,152 +2,101 @@
**Status: Draft**
- **Scope:** Unresolved questions after Batches 13. Separates confirmed static findings from questions needing further Blueprint, runtime, or config inspection.
- **Inspection method:** Consolidation of Batches 13; Batch 3 resolved per-character ability path unknowns.
- **Scope:** Unresolved questions after Batches 13 and Batch 4A Pass 8.
- **Inspection method:** Consolidation of Batches 13 + Pass 8 animation archaeology.
- **Evidence classifications used:** Observed Implementation, Documented Intent, Observed Runtime Behavior, Inferred, Unknown.
- **Tool or visibility limitations:** Semantic Search unavailable; CustomEvent FunctionFlags not readable; comment-box membership limited; no PIE this batch.
- **Tool or visibility limitations:** Semantic Search unavailable; CustomEvent FunctionFlags unread; Montage Notifies array / times unreadable; AnimGraph DSL empty; no PIE.
- **Last updated:** 2026-07-16
- **Current phase:** Phase 1 — Static Architecture
- **Last completed pass:** Pass 6 (Batch 3)
- **Next pass expected to contribute:** Batch 4 (Pass 4 / 7 / 8 / 9 — only when authorized)
- **Last completed pass:** Pass 8 (Batch 4A)
- **Next pass expected to contribute:** Pass 7 / 4 / 9 when authorized
## Draft tracking
### Completed sections
- Batch 1 unknowns grouped by verification method
- Batch 2 resolutions: WBP_PlayerHUD class; BP_PlayerState DefaultAttributes=None; legacy ability routing documented
- Batch 3 resolutions: per-character Ability 001004 connected paths; Wizard/Gunslinger stub confirmation; UseAbility* presence matrix
- Enemy ASC accessor defect still confirmed static
- Batch 13 unknowns and resolutions
- **Pass 8 resolutions:** UseAbility* callers; Amazonian melee anim path; Cleric dead notifies; cleanup via AN_AttackComplete; PerformingWhirlwind not animation-driven
### Pending sections
- Frontend/session/enemy AI/animation unknowns (Batch 4)
- Runtime test procedures after static ability archaeology
- Frontend/session/enemy AI (Pass 4 / 9)
- GE/cue inventory (Pass 7)
- Runtime test procedures
### Evidence still required
- AnimNotify → UseAbility* wiring (Pass 8)
- Live ASC vs DEPRECATED HUD coexistence in PIE
- Enemy BP AI connected graphs (Pass 9)
- GE/cue referencer map (Pass 7)
- Notify trigger times (Manual Editor)
- Interrupt vs AN_AttackComplete behavior (PIE)
- Live ASC vs DEPRECATED HUD coexistence (PIE)
---
## Resolved in Batch 2 (no longer Unknown)
## Resolved in Batch 23 (unchanged)
| Question | Resolution | Classification | Doc |
|---|---|---|---|
| Is `WBP_PlayerHUD` a Widget or AHUD? | Parent is `RIRHUD`; AHUD Blueprint; `WBP_` name misleading | Observed Implementation | 03, 11 |
| Does `BP_PlayerState` assign DefaultAttributes GE? | CDO `defaultAttributesGameplayEffect` = **None** | Observed Implementation | 03, 06 |
| How are abilities routed/networked on base? | IA_Ability_* → Server_Ability_* stubs/overrides; Multicast FX helpers | Observed Implementation | 05, 08 |
See prior tables in git history / Batch 3 handoff. Key: legacy IA→Server_Ability_*; DefaultAttributes=None; WBP_PlayerHUD is AHUD.
---
## Resolved in Batch 3 (Pass 6)
## Resolved in Batch 4A (Pass 8)
| Question | Resolution | Classification | Doc |
|---|---|---|---|
| Full Ability 001004 paths per playable | Documented per character in tables | Observed Implementation | 05, 08 |
| Does Wizard implement Server_Ability_*? | No local implementations; inherit PrintString stubs | Observed Implementation | 05, 08 |
| Is Gunslinger data-only? | IsDataOnly=True; deps only base; inherited stubs | Observed Implementation | 05, 08 |
| Amazonian working melee path | Ability 001 Begin → Multicast montage → UseAbility001 Authority BoxOverlap ApplyDamage | Observed Implementation + Observed Runtime Behavior | 05 |
| Are UseAbility* still invoked? | Present and connected on Paladin 001/004, Amazonian 001, Cleric 002/004; caller of UseAbility* itself Unknown (likely AnimNotify) | Observed Implementation / Unknown caller | 05, 10 |
| Who calls PlayerDeath from Amazonian? | ReceiveAnyDamage → DEPRECATED_CurrentHealth ≤0 → PlayerDeath | Observed Implementation | 05, 08 |
| Parent calls on ability overrides? | Paladin/Amazonian/Cleric: **No** | Observed Implementation | 05 |
| Who calls UseAbility*? | `AN_Ability_001004` AnimNotify BPs → BPI interface on montage owner | Observed Implementation | 10, 05 |
| Paladin 001 damage via anim callback? | Yes — `AN_Ability_001` during Attack_* montages | Observed Implementation | 10 |
| Paladin block Montage/notify? | No Montage; ABP Block from `IsBlocking`; End clears | Observed Implementation | 10 |
| Paladin charge Montage cleanup? | No — ChargeTimeline / ability logic | Observed Implementation | 10 |
| Amazonian working melee anim path? | Begin → Multicast → `AN_Ability_001` → UseAbility001 → Authority damage; `AN_AttackComplete` clears | Observed Implementation + Observed Runtime Behavior | 10 |
| Weapon collision notify windows? | Not observed — overlaps inside UseAbility* | Observed Implementation (absence) | 10 |
| PerformingWhirlwind set by anim? | No — not in ABP/montages; still Get-only | Observed Implementation | 10 |
| Cleric 001 hidden notify gameplay? | Notify present; `UseAbility001` unimplemented — dead | Observed Implementation | 10 |
| Cleric 002/003/004 anim dependency? | 002/004 notify-driven; 003 timer + vestigial AN_Ability_003; ABP Divine Circle | Observed Implementation | 10 |
| Wizard spell via anim callbacks? | No Wizard montages; ABP locomotion only | Observed Implementation | 10 |
| Gunslinger shared AnimBP/Montage? | No AnimBP dependency | Observed Implementation | 10 |
| CurrentlyAttacking clear on montage complete? | Via `AN_AttackComplete` → SetIsAttacking; interrupt Unknown | Observed Implementation / Unknown interrupt | 10 |
| Death anim invoke destroy/respawn? | No — ABP Death presentation; PlayerDeath on character | Observed Implementation | 10 |
---
## Confirmed static defects with runtime questions
| Confirmed finding | Evidence classification | Issue classification | Exact evidence | Runtime question |
|---|---|---|---|---|
| Enemy ASC on self vs GetASC from PlayerState | Observed Implementation | Incomplete Refactor | RIRBaseEnemyCharacter.cpp; RIRBaseCharacter.cpp | Which systems fail when interface ASC lookup is null for enemies? |
| Dual HUD attribute paths (ASC Overlay vs DEPRECATED floats) | Observed Implementation | Incomplete Refactor | RIRHUD InitOverlay; BP Server_UpdateHUD | Do both run? Which drives visible bars in PIE? |
| DefaultAttributesGameplayEffect unused (C++ and BP_PlayerState=None) | Observed Implementation | Partially Implemented | RIRPlayerState.h; BP_PlayerState CDO | What sets initial Health/Mana at spawn? |
| Cleric Ability 004 SpawnActor Class empty + mana CanUse unwired | Observed Implementation | Existing Baseline Defect | Player_Cleric UseAbility004 / Begin | Does 004 appear to fire but do nothing in PIE? |
| Multi_SpawnParticle empty EmitterTemplate (Paladin 004, Cleric 002) | Observed Implementation | Partially Implemented | UseAbility graphs | Visible missing VFX only? |
---
## Requires Blueprint / animation inspection (remaining)
| Question | Why insufficient | Paths | Method | Priority | Dependency |
|---|---|---|---|---|---|
| Who calls UseAbility*? | Events connected; callers not in EventGraph | Character AnimMontages / AnimBP | Pass 8 notify walk | High | Pass 6 bodies done |
| Enemy chase/attack Blueprint logic | Structural only in Pass 3 | BP_EnemyCharacterBase, BP_Enemy_Skeleton, BPI_EnemyCharacter | Pass 9 connected graphs | High | Pass 3 structure |
| Do EffectActor children call ApplyEffectToTarget? | Native mechanism only | BP_HealthPotion etc. | Pass 10 | Medium | Batch 1 |
| Is CommonUI used by live content? | Plugin enabled; no native refs | /Game/_Main/UI | Widget parent inspection | Low | Batch 1 |
| Paladin Ability 002 block absorb | IsBlocking set; no damage absorb path traced | ABP_Paladin / PlayerHitCheck | Pass 8 + hit graphs | Medium | Pass 6 |
| Amazonian PerformingWhirlwind | Get without Set | Player_Amazonian | Search all graphs / macros | Low | Pass 6 |
---
## Requires runtime inspection / PIE
| Question | Why | Method | Priority |
|---|---|---|---|
| Enemy ASC accessor impact | Static mismatch; need consumers | PIE + AbilitySystemInspector | High |
| Default attribute values after spawn | No apply path found | PIE attribute values after possess | High |
| Dual HUD coexistence | Two static paths | Observe both overlay and UpdatePlayerHUD | Medium |
| Session create/find/join | Latent online ops | Network test after Pass 4 | Medium |
| Ability Server RPC reliability / prediction feel | Flags unread | Multi-client ability press | Medium |
| Wizard BeginPlay skipping Parent | May leave InitialSpawnLocation unset | Spawn Wizard → death/respawn location | Medium |
---
## Requires broader filesystem/configuration inspection
| Question | Search | Priority |
| Confirmed finding | Issue | Runtime question |
|---|---|---|
| OnlineSubsystem / Steam settings location | Config/**, Plugins/**/Config, Saved/Config | Medium |
| GameInstance class assignment outside DefaultEngine sample | INI + referencers of GI_Dungeoneer | Medium |
| Enemy ASC vs GetASC | Incomplete Refactor | PIE impact |
| Dual HUD paths | Incomplete Refactor | Which drives bars? |
| DefaultAttributes unused | Partially Implemented | Spawn attribute source? |
| Cleric 004 empty SpawnActor + mana bypass | Existing Baseline Defect | PIE behavior |
| Gameplay hit windows depend on Multicast montage notify eval on server | Technical Debt / static risk | Does server always evaluate notifies? |
| Interrupt may skip AN_AttackComplete | Incomplete Refactor | Stuck CurrentlyAttacking? |
| Cleric AN_Ability_001 / 003 dead receivers | Existing Baseline Defect / Technical Debt | Cosmetic-only primary attack? |
---
## Requires manual editor inspection
## Requires further inspection
| Question | Why | Paths |
| Question | Method | Priority |
|---|---|---|
| Montage notify timings | Registry tags limited | Character montages |
| DEPRECATED comment-box visual regions | find_nodes Comment returned [] | BP_PlayerCharacterBase / children EventGraphs |
| CustomEvent Reliable vs Unreliable | ObjectTools on node failed | Server_/Multicast_ events |
| Notify trigger times / sections | Manual Editor | Medium |
| Interrupt cleanup | PIE | High |
| GE/cue referencers | Pass 7 | High |
| Enemy BP AI | Pass 9 | High |
| Sessions / frontend | Pass 4 | Medium |
| Paladin block absorb (PlayerHitCheck) | Graph walk (non-anim) | Medium |
---
## Tool and environment limitations
| Item | Detail | Impact |
|---|---|---|
| Semantic Search | HTTP 401 / no API key | No semantic discovery |
| CustomEvent FunctionFlags | list_properties failed on event nodes | RPC reliability Unknown |
| Comment boxes | find_nodes(title=Comment) empty | Visual DEPRECATED regions Unknown |
| Git | Available (baseline commit exists) | Dirty-tree gate works |
| No PIE in Batch 3 | Constraint honored | Runtime questions deferred |
---
## Naming ambiguities
| Item | Status |
| Item | Impact |
|---|---|
| Amazon vs Amazonian | Still open for GE folder naming (Pass 7) |
| WBP_PlayerHUD | **Resolved** — AHUD named like a widget |
---
## Conflicting evidence
| Conflict | Current resolution | Remaining |
|---|---|---|
| Enemy ASC ownership vs accessor | Confirmed static defect | PIE impact |
| Default attributes present vs unused | BP_PlayerState=None; C++ unused; character GEs orphaned | Who applies GEs if anyone |
| URIRGameplayAbility "all abilities" vs legacy BP | Legacy active; GA scaffolding only | Pass 7 reconfirm |
| Dual HUD systems | Both connected | PIE which is authoritative for bars |
| Montage `Notifies` property unreadable | Times Unknown; presence via deps |
| AnimNotifyList registry tag empty for BP notifies | Do not trust tag alone |
| AnimGraph / transition DSL empty | State drivers via EventGraph + VariableGet |
| CustomEvent Reliable flags | Unknown |
| No PIE in Batch 4A | Runtime deferred |
---
## Priority order for later verification
1. Batch 4 Pass 7 — GE/cue/tag inventory
2. Pass 8AnimNotify → UseAbility wiring
3. Pass 9enemy Blueprint AI
4. Pass 4 — sessions / frontend
5. Controlled PIE for ASC, attributes, dual HUD, enemy GetASC, Cleric 004 / Wizard spawn
1. Pass 7 — GE/cue/tag inventory
2. Pass 9enemy Blueprint AI
3. Pass 4sessions / frontend
4. Controlled PIE — dual HUD, notify interrupt, server montage eval, Cleric 001/004