Document Batch 4C Pass 9 enemy AI archaeology: missing chase and attack implementation.

Records empty enemy EventGraphs, stock AIController possession, orphan attack montage, and separates GetASC defect from chase/attack failure.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-16 21:46:08 -07:00
co-authored by Cursor
parent e50c8032ef
commit 53315574a4
8 changed files with 354 additions and 216 deletions
@@ -8,8 +8,8 @@
- **Tool or visibility limitations:** `GameplayEffectComponents` array unreadable via ObjectTools (cues/component tags Unknown on GE CDOs); BlueprintGeneratedClass CDO sometimes rejects duration/modifier property names depending on load path — modifiers recovered via successful GE CDO queries on Default__ / generated class where available; no PIE.
- **Last updated:** 2026-07-16
- **Current phase:** Phase 1 — Static Architecture
- **Last completed pass:** Pass 7 (Batch 4B)
- **Next pass expected to contribute:** Pass 9 (enemy) / Pass 10 (pickup graphs deep) / Pass 4 when authorized — not auto-started
- **Last completed pass:** Pass 9 (Batch 4C)
- **Next pass expected to contribute:** Pass 4 / Pass 10 when authorized
## Draft tracking
@@ -182,12 +182,15 @@ Defined in `Config/DefaultGameplayTags.ini` (ImportTagsFromConfig=True).
## 9. Enemy GAS compatibility table
| Consumer | Lookup method | Expected ASC owner | Static result | Potential impact | Runtime verification |
|---|---|---|---|---|---|
| `IAbilitySystemInterface` / `UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent` | `ARIRBaseCharacter::GetAbilitySystemComponent``GetPlayerState<ARIRPlayerState>()` | Enemy self ASC | **nullptr** (no PlayerState ASC) | EffectActor early-out; any BP using library GetASC | Requires Runtime Inspection |
| Enemy native code using `AbilitySystemComponent` member | Direct `TObjectPtr` on enemy | Self | Valid if used | Unknown consumers | Pass 9 |
| Player EffectActor target | Library GetASC on player character | PlayerState ASC | Valid via character GetASC → PS | Potions work on players (static) | PIE authority |
| Blueprint enemy GetASC | Inherited base | — | nullptr | Incomplete Refactor / Existing Baseline Defect | PIE |
| Consumer | ASC lookup method | Expected owner | Static result | Null behavior | Potential impact | Runtime verification |
|---|---|---|---|---|---|---|
| `ARIREffectActor::ApplyEffectToTarget` | Library GetASC → base GetASC → PlayerState | Enemy self ASC | **nullptr** | Early return | Potions/effects skip enemies | PIE |
| Enemy direct ASC member | Native TObjectPtr | Self | Valid if used | — | No combat consumer in enemy BP (Pass 9) | — |
| Enemy BP combat / chase | N/A | — | **No ASC dependency** | — | GetASC defect **does not** cause chase/attack failure | — |
| Player ApplyDamage → enemy | Engine TakeDamage (not ASC) | — | No enemy ReceiveAnyDamage / health mutation | Damage event may fire with no health consumer | Combat kill path missing on enemy | PIE |
| Enemy AttributeSet Health | Direct | Self | Exists; Init defaults only | — | Scaffolding for combat | PIE |
**Pass 9 addition:** Enemy EventGraphs contain no ASC reads/writes. Chase/attack failure classification is **Implementation Missing**, independent of the GetASC Incomplete Refactor.
---