# 09 — Enemy AI Static Analysis **Status: Draft** - **Scope:** Native enemy class (Batch 1) + Pass 3 structural Blueprint inventory. Deep Tick/overlap/AI graph walk deferred to Pass 9. - **Inspection method:** Native read; Batch 2 AssetTools tags + BlueprintTools list_graphs/events/variables/deps. - **Last updated:** 2026-07-16 - **Current phase:** Phase 1 — Static Architecture - **Last completed pass:** Pass 3 (Batch 2) — structural only - **Next pass expected to contribute:** Batch 4 Pass 9 ## Draft tracking ### Completed sections - Native enemy ASC ownership and highlight interface - Confirmation: no chase/attack/MoveTo in native C++ - Blueprint child paths + Pass 3 structural sheets - BPI_EnemyCharacter API surface ### Pending sections - Connected Tick / overlap / timer / MoveTo graphs on enemy BPs - AIControllerClass / AutoPossessAI on CDOs (reconfirm) - Consumers of GetASC on enemies ### Evidence still required - Where chase/attack was intended to live (Blueprint vs missing) - Runtime root cause of nonfunctional chase/attack — Requires Runtime Inspection --- ## Native findings **Observed Implementation:** `ARIRBaseEnemyCharacter` implements: - ASC + AttributeSet on self (Minimal replication) - InitAbilityActorInfo(this, this) in BeginPlay - ITargetInterface highlight via custom depth - Visibility collision on mesh **Observed Implementation:** No AIController subclass, no MoveTo, no perception, no attack timers in native. **Calibration (prior Observed Implementation):** Stock `/Script/AIModule.AIController`; AutoPossessAI PlacedInWorld on skeleton instance; no project BehaviorTree assets. **Issue:** Existing Baseline Defect (enemy chase/attack nonfunctional per project brief). --- ## Pass 3 Blueprint structure (not Pass 9 deep dive) ### `BP_EnemyCharacterBase` | Field | Value | |-------|--------| | Path | `/Game/_Main/Blueprints/Characters/Enemies/BP_EnemyCharacterBase` | | Parent | `RIRBaseEnemyCharacter` | | IsDataOnly | True | | Graphs | UserConstructionScript, EventGraph | | Variables | [] | | Implemented events | ReceiveBeginPlay, ReceiveTick, ReceiveActorBeginOverlap | | Deps | `/Script/REALMSINRUIN` only | ### `BP_Enemy_Skeleton` | Field | Value | |-------|--------| | Path | `/Game/_Main/Blueprints/Characters/Enemies/Skeleton/BP_Enemy_Skeleton` | | Parent | `BP_EnemyCharacterBase_C` | | Interface | `BPI_EnemyCharacter` (`GetEnemyREF`) | | Graphs | UCS, EventGraph, GetEnemyREF | | Variables | [] | | Implemented events | ReceiveBeginPlay, ReceiveTick, ReceiveActorBeginOverlap | | Deps | SKM_Skeleton_Guard_Body, BPI_EnemyCharacter, BP_EnemyCharacterBase, ABP_Skeleton, REALMSINRUIN | ### `BPI_EnemyCharacter` Graphs: `GetEnemyREF`, `AddPlayerTarget`, `EnemyMeleeAttack` — **Documented Intent** surface for targeting/melee; connected implementations on Skeleton/base **not traced in Batch 2** (Pass 9).