Document Batch 4B Pass 7 partial GAS archaeology: effects, tags, and legacy boundaries.
Inventories Gameplay Effects, orphan default attributes, missing abilities/cues, and consumable EffectActor wiring without modifying Unreal assets. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
**Status: Draft**
|
**Status: Draft**
|
||||||
|
|
||||||
- **Scope:** Shared `BP_PlayerCharacterBase` ability architecture (Batch 2) plus per-character Ability 001–004 connected-path reconstruction (Batch 3 Pass 6), qualified by animation-notify wiring (Batch 4A Pass 8).
|
- **Scope:** Shared `BP_PlayerCharacterBase` ability architecture (Batch 2) plus per-character Ability 001–004 connected-path reconstruction (Batch 3 Pass 6), qualified by animation-notify wiring (Batch 4A Pass 8) and Pass 7 legacy/GAS boundary clarification.
|
||||||
- **Inspection method:** BlueprintTools connected subgraphs (Pass 6); AnimNotify `Received_Notify` DSL + montage dependency/referencer graphs (Pass 8).
|
- **Inspection method:** BlueprintTools connected subgraphs (Pass 6); AnimNotify `Received_Notify` DSL + montage dependency/referencer graphs (Pass 8); Pass 7 GAS GE/ASC inventory correlation.
|
||||||
- **Evidence classifications used:** Observed Implementation, Documented Intent, Observed Runtime Behavior, Inferred, Unknown.
|
- **Evidence classifications used:** Observed Implementation, Documented Intent, Observed Runtime Behavior, Inferred, Unknown.
|
||||||
- **Tool or visibility limitations:** CustomEvent Reliable flags not exposed; Montage Notifies array / trigger times unreadable via ObjectTools; AnimGraph DSL empty.
|
- **Tool or visibility limitations:** CustomEvent Reliable flags not exposed; Montage Notifies array / trigger times unreadable via ObjectTools; AnimGraph DSL empty.
|
||||||
- **Last updated:** 2026-07-16
|
- **Last updated:** 2026-07-16
|
||||||
- **Current phase:** Phase 1 — Static Architecture
|
- **Current phase:** Phase 1 — Static Architecture
|
||||||
- **Last completed pass:** Pass 8 (Batch 4A)
|
- **Last completed pass:** Pass 7 (Batch 4B) — boundary clarification only; ability tables unchanged
|
||||||
- **Next pass expected to contribute:** Pass 7 (GAS) when authorized
|
- **Next pass expected to contribute:** Pass 11 migration matrix / other Batch 4 passes when authorized
|
||||||
|
|
||||||
## Draft tracking
|
## Draft tracking
|
||||||
|
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
- Resource / damage / projectile inventories
|
- Resource / damage / projectile inventories
|
||||||
- Montage dependency seeds
|
- Montage dependency seeds
|
||||||
- **Pass 8:** UseAbility* callers resolved (`AN_Ability_001–004`); `AN_AttackComplete` cleanup; Pass 6 reclassification table in `10`
|
- **Pass 8:** UseAbility* callers resolved (`AN_Ability_001–004`); `AN_AttackComplete` cleanup; Pass 6 reclassification table in `10`
|
||||||
|
- **Pass 7:** Legacy vs GAS dual-resource boundary clarified (no ability-graph GE/ASC usage)
|
||||||
|
|
||||||
### Pending sections
|
### Pending sections
|
||||||
- Cross-character migration matrix (Pass 11 → doc 07)
|
- Cross-character migration matrix (Pass 11 → doc 07)
|
||||||
@@ -33,6 +34,7 @@
|
|||||||
- Notify trigger times (Manual Editor Inspection)
|
- Notify trigger times (Manual Editor Inspection)
|
||||||
- FCanUseMana implementation body (call sites only)
|
- FCanUseMana implementation body (call sites only)
|
||||||
- Client_Charge timeline numeric details
|
- Client_Charge timeline numeric details
|
||||||
|
- PIE: potion ASC Health vs DEPRECATED_CurrentHealth divergence
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -207,6 +209,17 @@ Reliability: **Unknown — MCP property visibility limitation** for all CustomEv
|
|||||||
|
|
||||||
**No ASC attribute reads/writes in ability graphs.** No GameplayAbility grant/activate.
|
**No ASC attribute reads/writes in ability graphs.** No GameplayAbility grant/activate.
|
||||||
|
|
||||||
|
### Pass 7 — Legacy vs GAS boundary (clarification)
|
||||||
|
|
||||||
|
| Concern | Legacy ability path | GAS path | Sync |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Combat damage / heal | ApplyDamage / DEPRECATED_Recover* | Consumable GEs only (potions/food) | **None observed** |
|
||||||
|
| Mana cost | DEPRECATED floats + FCanUseMana | Attribute Mana modified by potions only | **None observed** |
|
||||||
|
| Default spawn resources | Not from abilities | Orphan `GE_*_DefaultAttributes`; native AttributeSet Init* used | Defaults unreachable via GE |
|
||||||
|
| UI | Server_UpdateHUD DEPRECATED % | OverlayWidgetController ASC | Dual, unsynchronized |
|
||||||
|
|
||||||
|
Full matrices: `06-PartialGASArchitecture.md`. Ability status labels from Pass 6/8 are **unchanged** by Pass 7.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Authority / networking findings (flags, no fixes)
|
## Authority / networking findings (flags, no fixes)
|
||||||
|
|||||||
@@ -2,116 +2,256 @@
|
|||||||
|
|
||||||
**Status: Draft**
|
**Status: Draft**
|
||||||
|
|
||||||
- **Scope:** Native GAS scaffolding (Batch 1) plus Batch 2 Blueprint seeds: BP_PlayerState defaults, legacy ability confirmation, dual HUD attribute paths.
|
- **Scope:** Complete static archaeology of partial GAS: ASC ownership, AttributeSet, Gameplay Effects, tags, cues, grant/activation absence, EffectActor boundary, legacy/GAS resource conflict, enemy ASC accessor defect.
|
||||||
- **Inspection method:** Native C++ read; Batch 2 ObjectTools on `BP_PlayerState` CDO; BlueprintTools on `BP_PlayerCharacterBase` for ASC/GA absence in ability graphs.
|
- **Inspection method:** Native C++ read of all GAS-related Source/REALMSINRUIN files; AssetTools find/deps/refs; ObjectTools CDO properties / search_subclasses; BlueprintTools EventGraph DSL on consumable BPs; GameplayTagsToolset (read-only); prior Pass 5–8 ability/anim negative GAS results.
|
||||||
|
- **Evidence classifications used:** Observed Implementation, Documented Intent, Observed Runtime Behavior, Inferred, Unknown.
|
||||||
|
- **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
|
- **Last updated:** 2026-07-16
|
||||||
- **Current phase:** Phase 1 — Static Architecture
|
- **Current phase:** Phase 1 — Static Architecture
|
||||||
- **Last completed pass:** Pass 6 (Batch 3)
|
- **Last completed pass:** Pass 7 (Batch 4B)
|
||||||
- **Next pass expected to contribute:** Batch 4 Pass 7 (GE/cue inventory)
|
- **Next pass expected to contribute:** Pass 9 (enemy) / Pass 10 (pickup graphs deep) / Pass 4 when authorized — not auto-started
|
||||||
|
|
||||||
## Draft tracking
|
## Draft tracking
|
||||||
|
|
||||||
### Completed sections
|
### Completed sections
|
||||||
- ASC ownership split (player PlayerState vs enemy character)
|
- ASC ownership + replication + InitAbilityActorInfo
|
||||||
- Replication modes
|
- AttributeSet inventory, replication, constructor defaults, absence of PostGameplayEffectExecute
|
||||||
- Actor-info initialization
|
- Full project GE inventory (8 assets) with modifiers / duration / referencers
|
||||||
- Attribute inventory + constructor defaults
|
- Default-attribute GE matrix + orphan status
|
||||||
- URIRGameplayAbility empty + no subclasses
|
- Tag inventory from DefaultGameplayTags.ini + referencer status
|
||||||
- EffectActor ApplyEffectToTarget mechanism
|
- Gameplay Ability / grant / activation negative searches
|
||||||
- Project gameplay tags from config
|
- Gameplay Cue negative inventory
|
||||||
- **BP_PlayerState `DefaultAttributesGameplayEffect` = None** (Pass 3)
|
- EffectActor + consumable BP wiring
|
||||||
- Confirmation: abilities remain legacy BP `Server_Ability_*` (Pass 5–6 / doc 05)
|
- Dual HUD path + stamina delegate type debt
|
||||||
- **Pass 6:** No ASC activate/grant/GameplayEffect apply in any connected ability path on five playables
|
- Legacy vs GAS boundary table
|
||||||
|
- Enemy ASC compatibility table
|
||||||
|
- Subsystem status matrix
|
||||||
|
|
||||||
### Pending sections
|
### Pending sections
|
||||||
- Default attribute GE CDO modifiers per character (Pass 7)
|
- Runtime ASC attribute values after spawn (PIE)
|
||||||
- Gameplay Cue inventory
|
- Whether potion ApplyEffect succeeds on listen-server/client authority variants
|
||||||
- Tag referencers
|
- Full WBP_Overlay bar binding node walk (beyond native controller)
|
||||||
- Runtime ASC state (PIE-gated)
|
|
||||||
|
|
||||||
### Evidence still required
|
### Evidence still required
|
||||||
- Whether any other actor/BP applies default-attribute GEs at spawn
|
- PIE: dual HUD coexistence; spawn Health/Mana vs native Init values
|
||||||
- Whether OverlayWidgetController path and DEPRECATED HUD path both run in PIE
|
- PIE: EffectActor vs enemy GetASC null early-out impact
|
||||||
- Full GE asset inventory and referencer map (Pass 7)
|
- Manual Editor: GE GameplayEffectComponents / cue slots if any
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Distinctions
|
## 1. GAS subsystem status matrix
|
||||||
|
|
||||||
| Layer | Status | Evidence |
|
| Subsystem | Status | Exact implementation | Active reference path | Conflict or gap | Evidence |
|
||||||
|-------|--------|----------|
|
|---|---|---|---|---|---|
|
||||||
| GAS infrastructure | Present | ASC, AttributeSet, IAbilitySystemInterface, EffectActor |
|
| Player ASC ownership | **Active** | `ARIRPlayerState` creates `URIRAbilitySystemComponent`; Mixed replication | Character caches ASC from PlayerState in `InitAbilityActorInfo` | None for players | RIRPlayerState.cpp |
|
||||||
| GAS data | Partially present | Tags in INI; GE assets exist (calibration); DefaultAttributes property |
|
| Enemy ASC ownership | **Active** (component) | `ARIRBaseEnemyCharacter` creates ASC + AttributeSet; Minimal replication; `InitAbilityActorInfo(this,this)` in BeginPlay | Direct component on enemy | Conflicts with interface GetASC | RIRBaseEnemyCharacter.cpp |
|
||||||
| GAS runtime abilities | Not observed | No URIRGameplayAbility subclasses; no GA assets; base EventGraph has no ASC activate |
|
| Actor-info initialization | **Active** | Player: PossessedBy + OnRep_PlayerState; Enemy: BeginPlay | Observed Implementation | — | RIRPlayerCharacter.cpp; RIRBaseEnemyCharacter.cpp |
|
||||||
| Legacy BP abilities | **Documented (Batch 2)** | `05-LegacyAbilityArchitecture.md`: IA → Server_Ability_* → Multicast montage |
|
| AttributeSet replication | **Active** | All six attrs DOREPLIFETIME + OnRep | Overlay binds change delegates | Stamina/MaxStamina not Init'd in ctor | RIRAttributeSet.cpp |
|
||||||
|
| Default attribute initialization | **Scaffolding Only / Present but Unreferenced** | Property `DefaultAttributesGameplayEffect` on PlayerState; four character GE assets | **None** — BP_PlayerState = None; GE_*_DefaultAttributes referencers [] | Spawn uses native InitHealth/Mana only | ObjectTools; get_referencers |
|
||||||
|
| Runtime attribute modification | **Partially Integrated** | Consumable GEs via EffectActor ApplyGameplayEffectSpecToSelf | Potion/food overlap → ApplyEffectToTarget | Abilities use ApplyDamage / DEPRECATED floats, not GE | BP_HealthPotion DSL; Pass 5–6 |
|
||||||
|
| Gameplay Ability classes | **Scaffolding Only** | `URIRGameplayAbility` InstancedPerActor only | No project subclass beyond engine jump/montage | No discrete GA assets (`GA_` find = []) | search_subclasses; find_assets |
|
||||||
|
| Ability granting | **Missing** | No GiveAbility / StartupAbilities / AbilitySet | None observed | — | Source grep; find_assets; BP find_nodes |
|
||||||
|
| Ability activation | **Missing** | No TryActivateAbility in native or playable ability graphs | Legacy `Server_Ability_*` instead | — | Pass 5–6; Pass 7 searches |
|
||||||
|
| Ability costs / cooldowns | **Missing** | No GA cost/cooldown classes | Mana cost is DEPRECATED float + FCanUseMana | — | Pass 6 |
|
||||||
|
| Gameplay Effects | **Partially Integrated** | 8 GE BPs under GAS/GameplayEffects | 4 consumable GEs assigned + applied; 4 default GEs orphaned | No Max* on default GEs; no Gunslinger GE | Pass 7 inventory |
|
||||||
|
| Gameplay Tags | **Present but Unreferenced** | 12 tags in DefaultGameplayTags.ini | Zero native string refs; zero asset referencers observed | Tags unused by GEs (legacy containers empty) | Config; Source grep; tag tool |
|
||||||
|
| Gameplay Cues | **Missing** | No project cue notify assets; no GC_ assets; no GameplayCue.* project tags beyond Test orphan | None observed | SoundCue `*_Cue` assets are audio, not GAS | find_assets; search_subclasses |
|
||||||
|
| Attribute-driven UI | **Active but Unverified** | InitOverlay → OverlayWidgetController broadcasts + binds | WBP_Overlay via WBP_PlayerHUD | Dual path with DEPRECATED HUD; stamina delegates wrong type alias | RIRHUD.cpp; OverlayWidgetController.h |
|
||||||
|
| Legacy-resource synchronization | **Missing** | No mirror code between ASC attrs and DEPRECATED_* | Both UI paths independent | Static divergence possible | Pass 5–7 |
|
||||||
|
| Enemy effect compatibility | **Partially Integrated / Existing Baseline Defect** | Enemy owns ASC; EffectActor uses `GetAbilitySystemComponent` via interface | Interface GetASC → PlayerState → **nullptr on enemies** | Pickups/effects may skip enemies | RIRBaseCharacter.cpp; RIREffectActor.cpp |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Ownership and init
|
## 2. Gameplay Effect inventory
|
||||||
|
|
||||||
|
All under `/Game/_Main/Blueprints/Game/GameSystems/GAS/GameplayEffects/`. Attribute owner: `URIRAttributeSet`. Magnitude type: ScalableFloat. StackingType: None / StackLimitCount 0 where read. Cues: **Unknown — GameplayEffectComponents unreadable**; no GC_ assets exist. Granted INI tags: not observed on readable legacy tag containers (empty).
|
||||||
|
|
||||||
|
| Effect | Duration | Modifiers | Tags | Cues | Referencers | Application path | Status | Evidence |
|
||||||
|
|---|---|---|---|---|---|---|---|---|
|
||||||
|
| `GE_PotionHeal` | Instant | Health AddBase **25** | Empty (legacy containers) | Unknown — Tool Limitation | `BP_HealthPotion` | Overlap → ApplyEffectToTarget(Instant) → DestroyActor | **Active** (static path) | CDO + DSL |
|
||||||
|
| `GE_PotionMana` | Instant | Mana AddBase **30** | Empty | Unknown | `BP_ManaPotion` | Same Instant pattern | **Active** (static path) | CDO + refs |
|
||||||
|
| `GE_HoT_Small` | HasDuration **1s**, Period **0.1** | Health AddBase **0.5**/tick | Empty | Unknown | `BP_OrangeSlice` | Overlap → ApplyEffectToTarget(Duration) → Destroy | **Active** (static path) | CDO + refs |
|
||||||
|
| `GE_MoT_Small` | HasDuration **1s**, Period **0.1** | Mana AddBase **0.25**/tick | Empty | Unknown | `BP_ManaCrystal` | Same Duration pattern | **Active** (static path) | CDO + refs |
|
||||||
|
| `GE_Paladin_DefaultAttributes` | Instant | Health Override **100**; Mana Override **100** | Empty | Unknown | **[]** | None | **Present but Unreferenced** | get_referencers |
|
||||||
|
| `GE_Amazon_DefaultAttributes` | Instant | Health Override **100**; Stamina Override **100** | Empty | Unknown | **[]** | None | **Present but Unreferenced** | get_referencers |
|
||||||
|
| `GE_Cleric_DefaultAttributes` | Instant | Health Override **50**; Mana Override **200** | Empty | Unknown | **[]** | None | **Present but Unreferenced** | get_referencers |
|
||||||
|
| `GE_Wizard_DefaultAttributes` | Instant | Health Override **100**; Mana Override **150** | Empty | Unknown | **[]** | None | **Present but Unreferenced** | get_referencers |
|
||||||
|
|
||||||
|
**None observed:** GE_Gunslinger_*; SetByCaller; MMC; ExecutionCalculation project subclasses (engine base only); overflow/expiration GE chains (not read / not present in modifiers).
|
||||||
|
|
||||||
|
**Folder inventory:** `find_assets` recursive on `/Game/_Main/Blueprints/Game/GameSystems/GAS` returned exactly these 8 assets — Observed Implementation (complete folder set).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Default attribute matrix
|
||||||
|
|
||||||
|
| Character | Effect | Health | MaxHealth | Mana | MaxMana | Stamina | MaxStamina | Assigned at | Applied at | Reachability |
|
||||||
|
|---|---|---|---|---|---|---|---|---|---|---|
|
||||||
|
| Paladin | `.../Paladin/GE_Paladin_DefaultAttributes` | Override 100 | Not modified | Override 100 | Not modified | Not modified | Not modified | **None** | **None** | Unreachable |
|
||||||
|
| Amazonian | `.../Amazon/GE_Amazon_DefaultAttributes` (folder **Amazon**, not Amazonian) | Override 100 | Not modified | Not modified | Not modified | Override 100 | Not modified | **None** | **None** | Unreachable |
|
||||||
|
| Cleric | `.../Cleric/GE_Cleric_DefaultAttributes` | Override 50 | Not modified | Override 200 | Not modified | Not modified | Not modified | **None** | **None** | Unreachable |
|
||||||
|
| Wizard | `.../Wizard/GE_Wizard_DefaultAttributes` | Override 100 | Not modified | Override 150 | Not modified | Not modified | Not modified | **None** | **None** | Unreachable |
|
||||||
|
| Gunslinger | **None observed** | — | — | — | — | — | — | — | — | Missing |
|
||||||
|
| All (PlayerState) | Property only | — | — | — | — | — | — | `BP_PlayerState.defaultAttributesGameplayEffect` = **None** | Native never applies | Unreachable |
|
||||||
|
|
||||||
|
**Native spawn fallback (Observed Implementation):** `URIRAttributeSet` ctor `InitHealth(75)`, `InitMaxHealth(100)`, `InitMana(25)`, `InitMaxMana(50)`; Stamina/MaxStamina **not** Init'd.
|
||||||
|
|
||||||
|
**Naming inconsistency:** Amazon GE folder/asset uses `Amazon`; playable Blueprint is `Player_Amazonian` — Documented Intent / Technical Debt.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Attribute architecture matrix
|
||||||
|
|
||||||
|
| Attribute | Native default | Replication | GE modifiers | UI binding | Blueprint reads/writes | Legacy equivalent | Synchronization | Status |
|
||||||
|
|---|---|---|---|---|---|---|---|---|
|
||||||
|
| Health | Init 75 | Replicated + OnRep | Potion +25; HoT +0.5/0.1s; default Override orphaned | OnHealthChanged | Ability graphs: **none** (use DEPRECATED) | DEPRECATED_CurrentHealth | **None observed** | Dual sources |
|
||||||
|
| MaxHealth | Init 100 | Replicated + OnRep | **None** on any GE | OnMaxHealthChanged | None in abilities | DEPRECATED_MaxHealth | None | Partially Integrated |
|
||||||
|
| Mana | Init 25 | Replicated + OnRep | Potion +30; MoT +0.25/0.1s; default Override orphaned | OnManaChanged | Abilities use DEPRECATED mana | DEPRECATED_Mana / costs | None | Dual sources |
|
||||||
|
| MaxMana | Init 50 | Replicated + OnRep | **None** on any GE | OnMaxManaChanged | None | DEPRECATED_MaxMana | None | Partially Integrated |
|
||||||
|
| Stamina | **Not Init'd** | Replicated + OnRep | Amazon default Override 100 (orphaned) | OnStaminaChanged (**typed as FOnManaChangedSignature**) | None | **None observed** | None | Scaffolding / Technical Debt |
|
||||||
|
| MaxStamina | **Not Init'd** | Replicated + OnRep | **None** | OnMaxStaminaChanged (**typed as FOnMaxManaChangedSignature**) | None | None | None | Scaffolding / Technical Debt |
|
||||||
|
|
||||||
|
**No PostGameplayEffectExecute / PreAttributeChange** on `URIRAttributeSet` — no clamp-to-max or death-from-attribute logic in native AttributeSet — Observed Implementation (absence).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Gameplay Tag inventory
|
||||||
|
|
||||||
|
Defined in `Config/DefaultGameplayTags.ini` (ImportTagsFromConfig=True).
|
||||||
|
|
||||||
|
| Tag | Defined at | Native references | Blueprint references | GE/GA references | Status | Evidence |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| State.Dead | DefaultGameplayTags.ini L12 | None observed | None observed | None observed | Present but Unreferenced | Source string search; tag referencer search |
|
||||||
|
| State.Stunned | L13 | None | None | None | Present but Unreferenced | same |
|
||||||
|
| State.Blocking | L14 | None | None | None | Present but Unreferenced | same |
|
||||||
|
| State.Casting | L15 | None | None | None | Present but Unreferenced | same |
|
||||||
|
| Disable.Movement | L17 | None | None | None | Present but Unreferenced | same |
|
||||||
|
| Disable.Input | L18 | None | None | None | Present but Unreferenced | same |
|
||||||
|
| Disable.Attack | L19 | None | None | None | Present but Unreferenced | same |
|
||||||
|
| Disable.Ability | L20 | None | None | None | Present but Unreferenced | same |
|
||||||
|
| Effect.Damage | L22 | None | None | None | Present but Unreferenced | same |
|
||||||
|
| Effect.Heal | L23 | None | None | None | Present but Unreferenced | same |
|
||||||
|
| Effect.Buff | L24 | None | None | None | Present but Unreferenced | same |
|
||||||
|
| Effect.Debuff | L25 | None | None | None | Present but Unreferenced | same |
|
||||||
|
|
||||||
|
**Documented Intent** (DevComment strings in INI) describes intended roles; **no Observed Implementation** of add/query/grant usage.
|
||||||
|
|
||||||
|
**GameplayCue.Test:** reported as lone cue tag orphan by GameplayCueToolset — Present but Unreferenced; no project notify.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Gameplay Ability and grant inventory
|
||||||
|
|
||||||
|
| Ability or grant mechanism | Asset/symbol | Grant path | Activation path | Cost/cooldown | Reachability | Status | Evidence |
|
||||||
|
|---|---|---|---|---|---|---|---|
|
||||||
|
| URIRGameplayAbility | `Source/.../RIRGameplayAbility.*` | None | None | None | Scaffolding only | Scaffolding Only | InstancedPerActor ctor only |
|
||||||
|
| UGameplayAbility subclasses (project) | search_subclasses → only engine Jump/Montage + URIRGameplayAbility | None | None | — | No project GA BP | Missing | search_subclasses |
|
||||||
|
| GA_* assets | find_assets `/Game` name GA_ | — | — | — | **[]** | Missing | find_assets |
|
||||||
|
| AbilitySet / StartupAbilities | find_assets | — | — | — | **[]** | Missing | find_assets |
|
||||||
|
| GiveAbility / TryActivateAbility | Source + BP_PlayerCharacterBase | — | — | — | None observed | Missing | grep; find_nodes |
|
||||||
|
| DefaultAttributesGameplayEffect apply | ARIRPlayerState property | Never called in native | — | — | BP = None | Scaffolding Only | RIRPlayerState.h; CDO |
|
||||||
|
| Legacy Server_Ability_* | BP events | N/A (not GAS) | Enhanced Input | DEPRECATED mana | Active (legacy) | See doc 05 | Pass 5–6 |
|
||||||
|
|
||||||
|
**Conclusion (Observed Implementation):** No project-defined Gameplay Ability implementation or static grant path was observed within the inspected project scope. This does not prove GAS can never activate at runtime.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Gameplay Cue inventory
|
||||||
|
|
||||||
|
| Cue | Type | Trigger | Referencers | Reachability | Status | Evidence |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| None observed (project) | — | — | — | — | **Missing** | find_assets GC_/GameplayCue; search_subclasses cue notifies → engine-only |
|
||||||
|
| GameplayCue.Test | Tag only | None | None | Unreachable | Present but Unreferenced | GameplayCueToolset |
|
||||||
|
| `*_Cue` SoundCue assets (e.g. MagicSpell_01_Cue) | USoundCue audio | Multicast_PlaySFX | Ability graphs | Active as **audio**, not GAS cue | Not GAS | Pass 6–8 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Legacy / GAS boundary table
|
||||||
|
|
||||||
|
| System | Legacy path | GAS path | Synchronization | Current source of truth | Conflict | Runtime question |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| Health combat damage | ApplyDamage + DEPRECATED_CurrentHealth (Amazonian AnyDamage) | Attribute Health via GE (potions only) | None | **Legacy for combat**; GAS for potions | Dual health pools possible | Does potion heal update combat death? |
|
||||||
|
| Mana ability cost | DEPRECATED_*ManaCost + FCanUseMana | Attribute Mana via GE potions | None | **Legacy for abilities** | Potion mana may not affect ability costs | PIE both meters |
|
||||||
|
| HUD bars | Server_UpdateHUD → UpdatePlayerHUD (DEPRECATED %) | InitOverlay → OverlayWidgetController ASC delegates | None | **Both connected** | Dual UI | Which bars visible? |
|
||||||
|
| Healing | DEPRECATED_RecoverPlayerHealth (Cleric) | GE_PotionHeal / HoT | None | Both | Inconsistent heal systems | — |
|
||||||
|
| Death | PlayerDeath / IsDead bool | State.Dead tag unused; no attr death | None | Legacy | Tag unused | — |
|
||||||
|
| Blocking | IsBlocking bool + ABP | State.Blocking unused | None | Legacy | Tag unused | — |
|
||||||
|
| Default spawn attrs | Native Init* only | Orphan default GEs | N/A | Native Init 75/100/25/50 | Orphan character GEs unused | Spawn values in PIE |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ownership and init (detail)
|
||||||
|
|
||||||
**Player (Observed Implementation):**
|
**Player (Observed Implementation):**
|
||||||
|
|
||||||
- ASC + AttributeSet created on `ARIRPlayerState`
|
- ASC + AttributeSet on `ARIRPlayerState`
|
||||||
- ReplicationMode **Mixed**; NetUpdateFrequency 100
|
- ReplicationMode **Mixed**; NetUpdateFrequency 100 (Batch 1/2)
|
||||||
- `ARIRPlayerCharacter::InitAbilityActorInfo`: Owner=PlayerState, Avatar=Character; called from PossessedBy and OnRep_PlayerState
|
- `ARIRPlayerCharacter::InitAbilityActorInfo`: Owner=PlayerState, Avatar=Character; PossessedBy + OnRep_PlayerState
|
||||||
|
- Then `ARIRHUD::InitOverlay` when local HUD present
|
||||||
|
|
||||||
**Enemy (Observed Implementation):**
|
**Enemy (Observed Implementation):**
|
||||||
|
|
||||||
- ASC + AttributeSet created on `ARIRBaseEnemyCharacter`
|
- ASC + AttributeSet on `ARIRBaseEnemyCharacter`
|
||||||
- ReplicationMode **Minimal**
|
- ReplicationMode **Minimal**
|
||||||
- BeginPlay: InitAbilityActorInfo(this, this)
|
- BeginPlay: `InitAbilityActorInfo(this, this)`
|
||||||
|
|
||||||
**Interface contradiction:** `ARIRBaseCharacter::GetAbilitySystemComponent` always uses PlayerState — enemies may not expose ASC through `IAbilitySystemInterface` / `UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent`. **Issue:** Incomplete Refactor; **Requires Runtime Inspection**.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Attributes
|
## EffectActor boundary (Pass 7; Pass 10 deferred)
|
||||||
|
|
||||||
`URIRAttributeSet`: Health, MaxHealth, Mana, MaxMana, Stamina, MaxStamina — all replicated with OnRep notify.
|
`ARIREffectActor::ApplyEffectToTarget`:
|
||||||
|
|
||||||
Constructor inits Health/MaxHealth/Mana/MaxMana only; Stamina/MaxStamina not Init'd in native.
|
1. `UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent(TargetActor)`
|
||||||
|
2. null → return
|
||||||
|
3. MakeOutgoingSpec(GEClass, 1.f) + ApplyGameplayEffectSpecToSelf
|
||||||
|
|
||||||
`DefaultAttributesGameplayEffect` on PlayerState: declared, **not applied in native**.
|
**BlueprintCallable** from children. Properties: `InstantGameplayEffectClass`, `DurationGameplayEffectClass`.
|
||||||
|
|
||||||
**Batch 2 Observed Implementation:** `/Game/_Main/Blueprints/Player/BP_PlayerState` CDO property `defaultAttributesGameplayEffect` = **None**. Assignment/application path remains missing at both C++ and this BP.
|
| BP | Instant | Duration | Graph |
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Abilities
|
|
||||||
|
|
||||||
`URIRGameplayAbility`: InstancedPerActor only. **No project subclasses** (search_subclasses).
|
|
||||||
|
|
||||||
**Conclusion (Observed Implementation):** No project-defined UGameplayAbility subclasses, Gameplay Ability assets, or static ability-granting paths observed. Playable abilities are legacy Blueprint custom events (`Server_Ability_*`) with Enhanced Input on `BP_PlayerCharacterBase` — see `05-LegacyAbilityArchitecture.md`.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Dual attribute UI paths (Batch 2)
|
|
||||||
|
|
||||||
| Path | Source | Consumer |
|
|
||||||
|------|--------|----------|
|
|
||||||
| Native GAS | `InitAbilityActorInfo` → `ARIRHUD::InitOverlay` → OverlayWidgetController ASC delegates | `WBP_Overlay` via `WBP_PlayerHUD` (AHUD) deps |
|
|
||||||
| Legacy BP | `Server_UpdateHUD` / `InitializeHUD` using `DEPRECATED_Current/Max Health/Mana` | `BPI_PlayerController.UpdatePlayerHUD` |
|
|
||||||
|
|
||||||
Both are Observed Implementation. Incomplete Refactor — legacy path still active.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Effects
|
|
||||||
|
|
||||||
`ARIREffectActor::ApplyEffectToTarget` applies Instant/Duration class via ASC MakeOutgoingSpec + ApplyGameplayEffectSpecToSelf. Overlap/authority logic expected in Blueprint children (Batch 4 Pass 10 / doc 12).
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Pass 6 — GAS interactions encountered on playables
|
|
||||||
|
|
||||||
| Asset / interaction | Character | Status | Classification |
|
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| ASC ActivateAbility / GrantAbility | All five | Not found in ability graphs | Observed Implementation (absence) |
|
| `BP_HealthPotion` | GE_PotionHeal | None | Sphere OnComponentBeginOverlap → ApplyEffecttoTarget(Instant) → DestroyActor |
|
||||||
| ApplyGameplayEffect / GE Spec | All five ability paths | Not found | Observed Implementation (absence) |
|
| `BP_ManaPotion` | GE_PotionMana | None | Same pattern (agent + refs) |
|
||||||
| `GE_Cleric_DefaultAttributes` | Cleric | Asset exists; 0 referencers; not in ability graphs | Present but Unconnected |
|
| `BP_ManaCrystal` | None | GE_MoT_Small | Same Duration pattern |
|
||||||
| `GE_Wizard_DefaultAttributes` | Wizard | Asset exists; unwired | Present but Unconnected |
|
| `BP_OrangeSlice` | None | GE_HoT_Small | Same Duration pattern |
|
||||||
| `GE_Gunslinger_*` | Gunslinger | Not found | Missing |
|
|
||||||
| `NS_Wizard_Ability001` | Wizard | Niagara present; unwired | Present but Unconnected |
|
|
||||||
| Damage / heal | Paladin / Amazonian / Cleric | `ApplyDamage` / `DEPRECATED_RecoverPlayerHealth` — **not** GE | Observed Implementation |
|
|
||||||
|
|
||||||
**Conclusion (Observed Implementation):** Pass 6 reconfirms playable combat is legacy Blueprint. Character-named DefaultAttributes GE assets are orphaned relative to ability graphs and `BP_PlayerState.DefaultAttributesGameplayEffect=None`. Systemwide GE/cue archaeology remains Pass 7.
|
Authority on overlap application: **Requires Runtime Inspection** (not traced beyond DSL). Full pickup respawn/UI → Pass 10.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Distinctions (updated)
|
||||||
|
|
||||||
|
| Layer | Status | Evidence |
|
||||||
|
|-------|--------|----------|
|
||||||
|
| GAS infrastructure | Present / Active for ASC+attrs+UI binding | Native classes |
|
||||||
|
| GAS data | Partially present | 8 GEs; 12 orphan tags; no cues; no GAs |
|
||||||
|
| GAS runtime abilities | Not observed | No grant/activate |
|
||||||
|
| GAS runtime effects | Partially Integrated | Consumables only |
|
||||||
|
| Legacy BP abilities | Active | doc 05 / 10 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Negative-search evidence log
|
||||||
|
|
||||||
|
| Search | Scope | Result |
|
||||||
|
|---|---|---|
|
||||||
|
| find_assets name `GA_` folder `/Game` | Project content | [] |
|
||||||
|
| find_assets name `GC_` / `GameplayCue` | Project content | [] / no cue assets |
|
||||||
|
| find_assets under GAS folder | Complete | Exactly 8 GE assets |
|
||||||
|
| search_subclasses GameplayAbility | Engine+project | Engine Jump/Montage + URIRGameplayAbility only |
|
||||||
|
| search_subclasses RIRGameplayAbility | Project | No further subclasses |
|
||||||
|
| search_subclasses GameplayCueNotify_* | Engine+project | Engine unit-test/burst/etc only |
|
||||||
|
| search_subclasses GameplayEffectExecutionCalculation / ModMagnitudeCalculation | Engine+project | Engine base only |
|
||||||
|
| Source grep GiveAbility\|TryActivateAbility\|ApplyGameplayEffect | Source/REALMSINRUIN | Only EffectActor Apply + DefaultAttributes property |
|
||||||
|
| Source grep State.Dead / tag strings | Source/REALMSINRUIN | No matches (GameplayTags module linked in Build.cs only) |
|
||||||
|
| get_referencers each DefaultAttributes GE | Asset registry | [] |
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
- **Inspection method:** Read-only AssetTools + BlueprintTools + ObjectTools; connected subgraphs on all five playables + base correlation.
|
- **Inspection method:** Read-only AssetTools + BlueprintTools + ObjectTools; connected subgraphs on all five playables + base correlation.
|
||||||
- **Last updated:** 2026-07-16
|
- **Last updated:** 2026-07-16
|
||||||
- **Current phase:** Phase 1 — Static Architecture
|
- **Current phase:** Phase 1 — Static Architecture
|
||||||
- **Last completed pass:** Pass 8 (Batch 4A)
|
- **Last completed pass:** Pass 7 (Batch 4B)
|
||||||
- **Next pass expected to contribute:** Pass 7 / Pass 4 / Pass 9 when authorized
|
- **Next pass expected to contribute:** Pass 9 / Pass 4 when authorized
|
||||||
|
|
||||||
## Draft tracking
|
## Draft tracking
|
||||||
|
|
||||||
@@ -18,7 +18,8 @@
|
|||||||
- Interface BPI_PlayerCharacter surface
|
- Interface BPI_PlayerCharacter surface
|
||||||
- Override matrix (which Server_Ability events children implement)
|
- Override matrix (which Server_Ability events children implement)
|
||||||
- Pass 6 Ability 001–004 path reconstruction
|
- Pass 6 Ability 001–004 path reconstruction
|
||||||
- **Pass 8:** AnimBP/Montage/AnimNotify callback wiring — see `10-AnimationDependencies.md`
|
- Pass 8: AnimBP/Montage/AnimNotify callback wiring — see `10-AnimationDependencies.md`
|
||||||
|
- **Pass 7:** Character DefaultAttributes GEs orphaned; no per-character ASC grant; Gunslinger still no GE
|
||||||
|
|
||||||
### Pending sections
|
### Pending sections
|
||||||
- Weapon component deep dive if separate assets exist beyond overlaps
|
- Weapon component deep dive if separate assets exist beyond overlaps
|
||||||
@@ -27,6 +28,7 @@
|
|||||||
### Evidence still required
|
### Evidence still required
|
||||||
- Notify trigger times (Manual Editor)
|
- Notify trigger times (Manual Editor)
|
||||||
- Interrupt cleanup if AN_AttackComplete skipped
|
- Interrupt cleanup if AN_AttackComplete skipped
|
||||||
|
- PIE spawn attribute values vs orphan default GEs
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -170,7 +172,10 @@ Base Begin stubs PrintString `"Override Ability N"`. Base End stubs empty.
|
|||||||
| Server_UpdateHUD uses DEPRECATED floats, not ASC | Observed Implementation |
|
| Server_UpdateHUD uses DEPRECATED floats, not ASC | Observed Implementation |
|
||||||
| Native InitOverlay still runs from C++ possession | Observed Implementation (Batch 1) |
|
| Native InitOverlay still runs from C++ possession | Observed Implementation (Batch 1) |
|
||||||
| Dual UI attribute paths | Incomplete Refactor |
|
| Dual UI attribute paths | Incomplete Refactor |
|
||||||
| Character DefaultAttributes GE assets orphaned | Present but Unconnected (Pass 6) |
|
| Character DefaultAttributes GE assets orphaned (0 referencers); BP_PlayerState = None | Present but Unreferenced / Scaffolding Only (Pass 7) |
|
||||||
|
| Amazon GE naming folder `Amazon` vs Blueprint `Amazonian` | Technical Debt (Pass 7) |
|
||||||
|
| No GE_Gunslinger | Missing (Pass 7) |
|
||||||
|
| Consumable GEs modify ASC Health/Mana independently of ability DEPRECATED state | Partially Integrated (Pass 7) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
**Status: Draft**
|
**Status: Draft**
|
||||||
|
|
||||||
- **Scope:** Native HUD / widget-controller path (Batch 1); Pass 3 resolution of `WBP_PlayerHUD` and GM/PC framework ties. Full frontend/session graphs deferred to Batch 4.
|
- **Scope:** Native HUD / widget-controller path (Batch 1); Pass 3 resolution of `WBP_PlayerHUD`; Pass 7 GAS attribute UI binding confirmation. Full frontend/session graphs deferred to Pass 4.
|
||||||
- **Inspection method:** Native C++ read; Batch 2 AssetTools class/tags/deps/refs; ObjectTools GM_Dungeoneer CDO; BlueprintTools PC_Character.
|
- **Inspection method:** Native C++ read; AssetTools class/tags/deps/refs; ObjectTools; Pass 7 Overlay path verification.
|
||||||
- **Last updated:** 2026-07-16
|
- **Last updated:** 2026-07-16
|
||||||
- **Current phase:** Phase 1 — Static Architecture
|
- **Current phase:** Phase 1 — Static Architecture
|
||||||
- **Last completed pass:** Pass 3 (Batch 2)
|
- **Last completed pass:** Pass 7 (Batch 4B) — GAS attribute UI portion
|
||||||
- **Next pass expected to contribute:** Batch 4 Passes 4 + 10
|
- **Next pass expected to contribute:** Pass 4 (sessions/frontend)
|
||||||
|
|
||||||
## Draft tracking
|
## Draft tracking
|
||||||
|
|
||||||
@@ -16,13 +16,14 @@
|
|||||||
- OverlayWidgetController attribute broadcasts/bindings
|
- OverlayWidgetController attribute broadcasts/bindings
|
||||||
- AdvancedSessions / AdvancedSteamSessions enabled + descriptor paths
|
- AdvancedSessions / AdvancedSteamSessions enabled + descriptor paths
|
||||||
- Widget subclass path seeds
|
- Widget subclass path seeds
|
||||||
- **WBP_PlayerHUD resolved as AHUD (`RIRHUD` child)**
|
- WBP_PlayerHUD resolved as AHUD (`RIRHUD` child)
|
||||||
- GM_Dungeoneer assigns HUDClass / PC / PS
|
- GM_Dungeoneer assigns HUDClass / PC / PS
|
||||||
|
- **Pass 7:** Exact Overlay paths; stamina delegate type reuse confirmed; dual HUD vs ASC still unsynchronized
|
||||||
|
|
||||||
### Pending sections
|
### Pending sections
|
||||||
- Main menu / browser / character-select widget flow
|
- Main menu / browser / character-select widget flow
|
||||||
- Production vs Example Advanced Sessions Blueprints
|
- Production vs Example Advanced Sessions Blueprints
|
||||||
- WBP_Overlay / progress bar bindings deep dive
|
- WBP_Overlay progress-bar Blueprint binding deep dive
|
||||||
- CommonUI usage
|
- CommonUI usage
|
||||||
- BPI_PlayerController.UpdatePlayerHUD widget targets
|
- BPI_PlayerController.UpdatePlayerHUD widget targets
|
||||||
|
|
||||||
@@ -42,9 +43,11 @@
|
|||||||
| Type | **AHUD Blueprint** (not `UserWidget`) |
|
| Type | **AHUD Blueprint** (not `UserWidget`) |
|
||||||
| IsDataOnly | True |
|
| IsDataOnly | True |
|
||||||
| Referencers | `/Game/_Main/Blueprints/Game/GameMode/GM_Dungeoneer` |
|
| Referencers | `/Game/_Main/Blueprints/Game/GameMode/GM_Dungeoneer` |
|
||||||
| Dependencies | REALMSINRUIN, `/Game/_Main/UI/Widgets/WBP_Overlay`, `/Game/_Main/UI/Widgets/WidgetController/BP_OverlayWidgetController` |
|
| Dependencies | REALMSINRUIN, `/Game/_Main/UI/Widgets/Overlay/WBP_Overlay`, `/Game/_Main/UI/Widgets/WidgetController/BP_OverlayWidgetController` |
|
||||||
|
|
||||||
**Observed Implementation:** Naming `WBP_` is misleading Documented Intent; asset is the game HUD class assigned on `GM_Dungeoneer`. Relationship to `ARIRHUD`: direct Blueprint child that supplies OverlayWidgetClass / OverlayWidgetControllerClass via deps to `WBP_Overlay` + `BP_OverlayWidgetController`.
|
**Observed Implementation:** Naming `WBP_` is misleading Documented Intent; asset is the game HUD class assigned on `GM_Dungeoneer`.
|
||||||
|
|
||||||
|
**Pass 7 path correction:** Overlay widget exact path is `/Game/_Main/UI/Widgets/Overlay/WBP_Overlay` (not `/Game/_Main/UI/Widgets/WBP_Overlay`).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -54,11 +57,17 @@
|
|||||||
|
|
||||||
`ARIRPlayerCharacter::InitAbilityActorInfo` → `ARIRHUD::InitOverlay(PC, PS, ASC, AS)` → create `OverlayWidgetClass` → `UOverlayWidgetController` binds ASC attribute delegates → `BroadcastInitialInitialValues` → `AddToViewport`.
|
`ARIRPlayerCharacter::InitAbilityActorInfo` → `ARIRHUD::InitOverlay(PC, PS, ASC, AS)` → create `OverlayWidgetClass` → `UOverlayWidgetController` binds ASC attribute delegates → `BroadcastInitialInitialValues` → `AddToViewport`.
|
||||||
|
|
||||||
|
Controller asset: `/Game/_Main/UI/Widgets/WidgetController/BP_OverlayWidgetController` (Blueprintable subclass of native `UOverlayWidgetController`).
|
||||||
|
|
||||||
|
Broadcasts: Health, MaxHealth, Mana, MaxMana, Stamina, MaxStamina from `URIRAttributeSet`.
|
||||||
|
|
||||||
### Legacy BP path (still connected)
|
### Legacy BP path (still connected)
|
||||||
|
|
||||||
`BP_PlayerCharacterBase` EventPossessed → Delay 0.4 → `Server_UpdateHUD` → compute DEPRECATED health/mana percentages → `BPI_PlayerController.UpdatePlayerHUD`.
|
`BP_PlayerCharacterBase` EventPossessed → Delay 0.4 → `Server_UpdateHUD` → compute DEPRECATED health/mana percentages → `BPI_PlayerController.UpdatePlayerHUD`.
|
||||||
|
|
||||||
**Technical Debt:** Dual attribute UI; Stamina delegates reuse Mana signature types in OverlayWidgetController.h.
|
**Technical Debt / Incomplete Refactor:** Dual attribute UI — no synchronization observed (Pass 7).
|
||||||
|
|
||||||
|
**Technical Debt (Pass 7 confirmed):** In `OverlayWidgetController.h`, `OnStaminaChanged` is typed `FOnManaChangedSignature` and `OnMaxStaminaChanged` is typed `FOnMaxManaChangedSignature` (stamina delegates reuse mana signature types). Dedicated `FOnStaminaChangedSignature` / `FOnMaxStaminaChangedSignature` are declared but unused for those properties.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -79,6 +88,4 @@
|
|||||||
|
|
||||||
Project plugins AdvancedSessions + AdvancedSteamSessions enabled (VersionName 5.8). `GM_Dungeoneer` deps include AdvancedSessions.
|
Project plugins AdvancedSessions + AdvancedSteamSessions enabled (VersionName 5.8). `GM_Dungeoneer` deps include AdvancedSessions.
|
||||||
|
|
||||||
**Unknown:** Live menu usage vs Example Advanced Sessions Blueprints — Batch 4 Pass 4.
|
Full session create/find/join graph archaeology → **Pass 4**.
|
||||||
|
|
||||||
**Unknown:** OnlineSubsystem INI location — Requires Broader Filesystem/Configuration Inspection.
|
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
**Status: Draft**
|
**Status: Draft**
|
||||||
|
|
||||||
- **Scope (Batch 1 seed):** Native `ARIREffectActor` mechanism + discovered Blueprint subclass paths. No overlap/authority graph inspection yet.
|
- **Scope:** Native `ARIREffectActor` mechanism; Pass 7 consumable GE assignments and overlap→apply wiring. Full per-pickup respawn/UI/authority deep dive deferred to Pass 10.
|
||||||
- **Inspection method:** Native C++ + search_subclasses.
|
- **Inspection method:** Native C++; search_subclasses; AssetTools refs; ObjectTools GE class props; BlueprintTools EventGraph DSL on `BP_HealthPotion`.
|
||||||
- **Last updated:** 2026-07-16
|
- **Last updated:** 2026-07-16
|
||||||
- **Current phase:** Phase 1 — Static Architecture
|
- **Current phase:** Phase 1 — Static Architecture
|
||||||
- **Last completed pass:** Pass 2 (Batch 1)
|
- **Last completed pass:** Pass 7 (Batch 4B) — EffectActor + GE wiring seed
|
||||||
- **Next pass expected to contribute:** Batch 4 Pass 10
|
- **Next pass expected to contribute:** Pass 10
|
||||||
|
|
||||||
## Draft tracking
|
## Draft tracking
|
||||||
|
|
||||||
@@ -15,15 +15,17 @@
|
|||||||
- ApplyEffectToTarget GE application path
|
- ApplyEffectToTarget GE application path
|
||||||
- Instant/Duration GE class properties
|
- Instant/Duration GE class properties
|
||||||
- Blueprint child paths for potions / orange slice / mana crystal
|
- Blueprint child paths for potions / orange slice / mana crystal
|
||||||
|
- **Pass 7:** Exact Instant/Duration GE assignments; HealthPotion overlap→Apply→Destroy; GE modifier magnitudes; enemy GetASC null risk
|
||||||
|
|
||||||
### Pending sections
|
### Pending sections
|
||||||
- Per-pickup overlap, authority, destroy/respawn, UI notify
|
- Per-pickup authority, destroy/respawn, UI notify (Pass 10)
|
||||||
- Classification: GE vs direct DEPRECATED var mutation vs hybrid
|
- ManaPotion / ManaCrystal / OrangeSlice graph confirmation beyond refs (HealthPotion DSL verified)
|
||||||
- Gold / stamina pickups if present
|
- Gold / stamina pickups if present
|
||||||
|
|
||||||
### Evidence still required
|
### Evidence still required
|
||||||
- Connected Blueprint graphs on each item BP
|
- Whether ApplyEffect runs with HasAuthority on overlap
|
||||||
- Whether `GetAbilitySystemComponent` succeeds on player vs enemy targets
|
- Whether GetAbilitySystemComponent succeeds for player vs fails for enemy in PIE
|
||||||
|
- Stacking / re-pickup behavior
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -35,15 +37,21 @@
|
|||||||
2. Early-out if null
|
2. Early-out if null
|
||||||
3. MakeOutgoingSpec(GEClass, 1.f) + ApplyGameplayEffectSpecToSelf
|
3. MakeOutgoingSpec(GEClass, 1.f) + ApplyGameplayEffectSpecToSelf
|
||||||
|
|
||||||
**Inferred:** Intended pickup path is **Gameplay Effect** based for subclasses of this actor. Confirmation requires Blueprint graphs.
|
**Enemy ASC defect interaction:** Library GetASC uses `ARIRBaseCharacter::GetAbilitySystemComponent` → PlayerState. Enemies return **nullptr** → ApplyEffect early-out. **Issue:** Existing Baseline Defect / Incomplete Refactor. Classify static consequence separately from runtime chase/attack defects.
|
||||||
|
|
||||||
**Blueprint subclass seeds:**
|
---
|
||||||
|
|
||||||
| Asset |
|
## Blueprint subclasses (Observed Implementation)
|
||||||
|-------|
|
|
||||||
| `/Game/_Main/Blueprints/Items/Food/BP_OrangeSlice` |
|
|
||||||
| `/Game/_Main/Blueprints/Items/Potion/BP_HealthPotion` |
|
|
||||||
| `/Game/_Main/Blueprints/Items/Potion/BP_ManaPotion` |
|
|
||||||
| `/Game/_Main/Blueprints/Items/Potion/BP_ManaCrystal` |
|
|
||||||
|
|
||||||
Calibration also listed GE assets such as `GE_PotionHeal`, `GE_PotionMana`, `GE_HoT_Small`, `GE_MoT_Small` under `/Game/_Main/Blueprints/Game/GameSystems/GAS/GameplayEffects/`.
|
| Asset | InstantGameplayEffectClass | DurationGameplayEffectClass |
|
||||||
|
|-------|----------------------------|------------------------------|
|
||||||
|
| `/Game/_Main/Blueprints/Items/Potion/BP_HealthPotion` | `GE_PotionHeal` (+25 Health Instant) | None |
|
||||||
|
| `/Game/_Main/Blueprints/Items/Potion/BP_ManaPotion` | `GE_PotionMana` (+30 Mana Instant) | None |
|
||||||
|
| `/Game/_Main/Blueprints/Items/Potion/BP_ManaCrystal` | None | `GE_MoT_Small` (+0.25 Mana / 0.1s for 1s) |
|
||||||
|
| `/Game/_Main/Blueprints/Items/Food/BP_OrangeSlice` | None | `GE_HoT_Small` (+0.5 Health / 0.1s for 1s) |
|
||||||
|
|
||||||
|
**BP_HealthPotion EventGraph (Observed Implementation):** `OnComponentBeginOverlap(Sphere)` → `ApplyEffecttoTarget(OtherActor, InstantGameplayEffectClass)` → `DestroyActor`.
|
||||||
|
|
||||||
|
Same structural pattern reported for other three consumables (referencer graph + agent); Pass 10 should re-confirm each DSL.
|
||||||
|
|
||||||
|
**Classification:** Pickups are the **only Observed Implementation** of runtime Gameplay Effect application found in Pass 7. Combat abilities remain ApplyDamage / DEPRECATED (doc 05). Full GE inventory: doc 06.
|
||||||
|
|||||||
@@ -2,56 +2,48 @@
|
|||||||
|
|
||||||
**Status: Draft**
|
**Status: Draft**
|
||||||
|
|
||||||
- **Scope:** Unresolved questions after Batches 1–3 and Batch 4A Pass 8.
|
- **Scope:** Unresolved questions after Batches 1–3, Batch 4A Pass 8, and Batch 4B Pass 7.
|
||||||
- **Inspection method:** Consolidation of Batches 1–3 + Pass 8 animation archaeology.
|
- **Inspection method:** Consolidation of static archaeology through Pass 7.
|
||||||
- **Evidence classifications used:** Observed Implementation, Documented Intent, Observed Runtime Behavior, Inferred, Unknown.
|
- **Evidence classifications used:** Observed Implementation, Documented Intent, Observed Runtime Behavior, Inferred, Unknown.
|
||||||
- **Tool or visibility limitations:** Semantic Search unavailable; CustomEvent FunctionFlags unread; Montage Notifies array / times unreadable; AnimGraph DSL empty; no PIE.
|
- **Tool or visibility limitations:** Semantic Search unavailable; CustomEvent FunctionFlags unread; Montage Notifies/times unreadable; GE GameplayEffectComponents unreadable; no PIE.
|
||||||
- **Last updated:** 2026-07-16
|
- **Last updated:** 2026-07-16
|
||||||
- **Current phase:** Phase 1 — Static Architecture
|
- **Current phase:** Phase 1 — Static Architecture
|
||||||
- **Last completed pass:** Pass 8 (Batch 4A)
|
- **Last completed pass:** Pass 7 (Batch 4B)
|
||||||
- **Next pass expected to contribute:** Pass 7 / 4 / 9 when authorized
|
- **Next pass expected to contribute:** Pass 9 / Pass 4 / Pass 10 when authorized
|
||||||
|
|
||||||
## Draft tracking
|
## Draft tracking
|
||||||
|
|
||||||
### Completed sections
|
### Completed sections
|
||||||
- Batch 1–3 unknowns and resolutions
|
- Batch 1–3 unknowns and resolutions
|
||||||
- **Pass 8 resolutions:** UseAbility* callers; Amazonian melee anim path; Cleric dead notifies; cleanup via AN_AttackComplete; PerformingWhirlwind not animation-driven
|
- Pass 8 animation callback resolutions
|
||||||
|
- **Pass 7 resolutions:** GE inventory; orphan default attrs; tag orphan status; no GAs/cues/grants; consumable GE wiring; dual HUD/stamina debt confirmed
|
||||||
|
|
||||||
### Pending sections
|
### Pending sections
|
||||||
- Frontend/session/enemy AI (Pass 4 / 9)
|
- Frontend/session (Pass 4)
|
||||||
- GE/cue inventory (Pass 7)
|
- Enemy BP AI (Pass 9)
|
||||||
|
- Pickup deep graphs (Pass 10)
|
||||||
- Runtime test procedures
|
- Runtime test procedures
|
||||||
|
|
||||||
### Evidence still required
|
### Evidence still required
|
||||||
|
- PIE dual HUD / spawn attributes / potion vs combat health
|
||||||
- Notify trigger times (Manual Editor)
|
- Notify trigger times (Manual Editor)
|
||||||
- Interrupt vs AN_AttackComplete behavior (PIE)
|
- Interrupt vs AN_AttackComplete (PIE)
|
||||||
- Live ASC vs DEPRECATED HUD coexistence (PIE)
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Resolved in Batch 2–3 (unchanged)
|
## Resolved in Batch 4B (Pass 7)
|
||||||
|
|
||||||
See prior tables in git history / Batch 3 handoff. Key: legacy IA→Server_Ability_*; DefaultAttributes=None; WBP_PlayerHUD is AHUD.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Resolved in Batch 4A (Pass 8)
|
|
||||||
|
|
||||||
| Question | Resolution | Classification | Doc |
|
| Question | Resolution | Classification | Doc |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| Who calls UseAbility*? | `AN_Ability_001–004` AnimNotify BPs → BPI interface on montage owner | Observed Implementation | 10, 05 |
|
| Which GEs exist? | Exactly 8 under GAS/GameplayEffects | Observed Implementation | 06 |
|
||||||
| Paladin 001 damage via anim callback? | Yes — `AN_Ability_001` during Attack_* montages | Observed Implementation | 10 |
|
| Are default-attribute GEs applied? | No — 0 referencers; BP_PlayerState = None; native never applies | Present but Unreferenced / Scaffolding Only | 06 |
|
||||||
| Paladin block Montage/notify? | No Montage; ABP Block from `IsBlocking`; End clears | Observed Implementation | 10 |
|
| Default GE values? | Paladin H/M 100/100; Amazon H/S 100/100; Cleric H/M 50/200; Wizard H/M 100/150; **no Max*** | Observed Implementation | 06 |
|
||||||
| Paladin charge Montage cleanup? | No — ChargeTimeline / ability logic | Observed Implementation | 10 |
|
| GE_Gunslinger? | None observed | Missing | 06 |
|
||||||
| Amazonian working melee anim path? | Begin → Multicast → `AN_Ability_001` → UseAbility001 → Authority damage; `AN_AttackComplete` clears | Observed Implementation + Observed Runtime Behavior | 10 |
|
| Are INI tags used? | Defined; zero native/BP/GE referencers observed | Present but Unreferenced | 06 |
|
||||||
| Weapon collision notify windows? | Not observed — overlaps inside UseAbility* | Observed Implementation (absence) | 10 |
|
| Project GAs / grants / cues? | None observed (negative searches logged) | Missing / Scaffolding Only (URIRGameplayAbility) | 06 |
|
||||||
| PerformingWhirlwind set by anim? | No — not in ABP/montages; still Get-only | Observed Implementation | 10 |
|
| What applies GEs at runtime? | Consumable EffectActors only (static path) | Partially Integrated | 06, 12 |
|
||||||
| Cleric 001 hidden notify gameplay? | Notify present; `UseAbility001` unimplemented — dead | Observed Implementation | 10 |
|
| Stamina overlay delegate debt? | OnStamina* properties reuse Mana signature types | Technical Debt | 11, 06 |
|
||||||
| Cleric 002/003/004 anim dependency? | 002/004 notify-driven; 003 timer + vestigial AN_Ability_003; ABP Divine Circle | Observed Implementation | 10 |
|
| Sync DEPRECATED ↔ ASC? | None observed | Missing / Incomplete Refactor | 06, 05 |
|
||||||
| 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 |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -59,13 +51,14 @@ See prior tables in git history / Batch 3 handoff. Key: legacy IA→Server_Abili
|
|||||||
|
|
||||||
| Confirmed finding | Issue | Runtime question |
|
| Confirmed finding | Issue | Runtime question |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| Enemy ASC vs GetASC | Incomplete Refactor | PIE impact |
|
| Enemy ASC vs GetASC PlayerState | Incomplete Refactor / Existing Baseline Defect | Do potions/effects fail on enemies? |
|
||||||
| Dual HUD paths | Incomplete Refactor | Which drives bars? |
|
| Dual HUD paths | Incomplete Refactor | Which bars drive visible UI? |
|
||||||
| DefaultAttributes unused | Partially Implemented | Spawn attribute source? |
|
| DefaultAttributes unused + orphan character GEs | Partially Implemented / Present but Unreferenced | Spawn Health/Mana = native 75/25? |
|
||||||
|
| Combat uses DEPRECATED; potions use ASC | Incomplete Refactor | Potion heal invisible to combat death? |
|
||||||
|
| Stamina/MaxStamina not Init'd | Partially Implemented | Overlay stamina bars at 0? |
|
||||||
|
| Default GEs Override Health/Mana without Max* | Technical Debt (if ever applied) | Current > Max possible? |
|
||||||
| Cleric 004 empty SpawnActor + mana bypass | Existing Baseline Defect | PIE behavior |
|
| 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? |
|
| Multicast montage notify hit windows | Technical Debt | Server eval always? |
|
||||||
| 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? |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -73,12 +66,13 @@ See prior tables in git history / Batch 3 handoff. Key: legacy IA→Server_Abili
|
|||||||
|
|
||||||
| Question | Method | Priority |
|
| Question | Method | Priority |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| Notify trigger times / sections | Manual Editor | Medium |
|
| Enemy BP AI chase/attack | Pass 9 | High |
|
||||||
| Interrupt cleanup | PIE | High |
|
|
||||||
| GE/cue referencers | Pass 7 | High |
|
|
||||||
| Enemy BP AI | Pass 9 | High |
|
|
||||||
| Sessions / frontend | Pass 4 | Medium |
|
| Sessions / frontend | Pass 4 | Medium |
|
||||||
| Paladin block absorb (PlayerHitCheck) | Graph walk (non-anim) | Medium |
|
| Full pickup authority/respawn | Pass 10 | Medium |
|
||||||
|
| Notify trigger times | Manual Editor | Medium |
|
||||||
|
| Interrupt cleanup | PIE | High |
|
||||||
|
| Dual HUD + spawn attrs + potion/combat health | PIE | High |
|
||||||
|
| GE GameplayEffectComponents / cues | Manual Editor / alternate tool | Low |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -86,17 +80,16 @@ See prior tables in git history / Batch 3 handoff. Key: legacy IA→Server_Abili
|
|||||||
|
|
||||||
| Item | Impact |
|
| Item | Impact |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Montage `Notifies` property unreadable | Times Unknown; presence via deps |
|
| GE GameplayEffectComponents unreadable | Per-GE cue/component tags Unknown |
|
||||||
| AnimNotifyList registry tag empty for BP notifies | Do not trust tag alone |
|
| Montage Notifies / AnimGraph DSL | Pass 8 limits stand |
|
||||||
| AnimGraph / transition DSL empty | State drivers via EventGraph + VariableGet |
|
|
||||||
| CustomEvent Reliable flags | Unknown |
|
| CustomEvent Reliable flags | Unknown |
|
||||||
| No PIE in Batch 4A | Runtime deferred |
|
| No PIE in Batch 4B | Runtime deferred |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Priority order for later verification
|
## Priority order for later verification
|
||||||
|
|
||||||
1. Pass 7 — GE/cue/tag inventory
|
1. Pass 9 — enemy Blueprint AI
|
||||||
2. Pass 9 — enemy Blueprint AI
|
2. Pass 4 — sessions / frontend
|
||||||
3. Pass 4 — sessions / frontend
|
3. Pass 10 — pickup deep dive
|
||||||
4. Controlled PIE — dual HUD, notify interrupt, server montage eval, Cleric 001/004
|
4. Controlled PIE — dual HUD, spawn attrs, EffectActor on player/enemy, potion vs DEPRECATED health
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
- **Scope:** Compact cross-model index of material findings. Full analysis lives in linked docs.
|
- **Scope:** Compact cross-model index of material findings. Full analysis lives in linked docs.
|
||||||
- **Last updated:** 2026-07-16
|
- **Last updated:** 2026-07-16
|
||||||
- **Current phase:** Phase 1 — Static Architecture
|
- **Current phase:** Phase 1 — Static Architecture
|
||||||
- **Last completed pass:** Pass 8 (Batch 4A)
|
- **Last completed pass:** Pass 7 (Batch 4B)
|
||||||
- **Next pass expected to contribute:** Every batch
|
- **Next pass expected to contribute:** Every batch
|
||||||
|
|
||||||
## Draft tracking
|
## Draft tracking
|
||||||
@@ -13,28 +13,35 @@
|
|||||||
### Completed sections
|
### Completed sections
|
||||||
- Batch 1–3 evidence rows
|
- Batch 1–3 evidence rows
|
||||||
- Batch 4A Pass 8 AnimBP / Montage / AnimNotify rows
|
- Batch 4A Pass 8 AnimBP / Montage / AnimNotify rows
|
||||||
|
- Batch 4B Pass 7 GAS / GE / tag / cue / grant rows
|
||||||
|
|
||||||
### Pending sections
|
### Pending sections
|
||||||
- GE/cue referencer rows (Pass 7)
|
- Enemy AI graph rows (Pass 9)
|
||||||
|
- Session flow rows (Pass 4)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
| System | Subsystem | Finding | Evidence type | Classification | Exact source | Exact symbol | Blueprint path | Graph | Node/event | Asset/config | Doc | Confidence | Remaining verification |
|
| System | Subsystem | Finding | Evidence type | Classification | Exact source | Exact symbol | Blueprint path | Graph | Node/event | Asset/config | Doc | Confidence | Remaining verification |
|
||||||
|--------|-----------|---------|---------------|----------------|--------------|--------------|----------------|-------|------------|--------------|-----|------------|------------------------|
|
|--------|-----------|---------|---------------|----------------|--------------|--------------|----------------|-------|------------|--------------|-----|------------|------------------------|
|
||||||
| Anim | Caller | UseAbility001 called by AN_Ability_001 | Observed Implementation | Intended Behavior | read_graph_dsl | UseAbility001 | AN_Ability_001 | Received_Notify | Received_Notify | .../PlayerCharacterRelated/AN_Ability_001 | 10,05 | High | Notify times |
|
| GAS | Player ASC | ASC on PlayerState; Mixed replication | Observed Implementation | Active | RIRPlayerState.cpp | CreateDefaultSubobject ASC | BP_PlayerState | — | — | — | 06 | High | — |
|
||||||
| Anim | Caller | UseAbility004 called by AN_Ability_004 | Observed Implementation | Intended Behavior | deps + notify body | UseAbility004 | AN_Ability_004 | Received_Notify | — | .../AN_Ability_004 | 10 | High | Times |
|
| GAS | Enemy ASC | ASC on enemy; Minimal; Init(this,this) | Observed Implementation | Active | RIRBaseEnemyCharacter.cpp | AbilitySystemComponent | BP_EnemyCharacterBase | — | — | — | 06 | High | — |
|
||||||
| Anim | Cleanup | AN_AttackComplete → SetIsAttacking clears CurrentlyAttacking | Observed Implementation | Intended Behavior | read_graph_dsl | SetIsAttacking | AN_AttackComplete | Received_Notify | — | .../AN_AttackComplete | 10,05 | High | Interrupt PIE |
|
| GAS | GetASC defect | Base GetASC → PlayerState only | Observed Implementation | Existing Baseline Defect | RIRBaseCharacter.cpp | GetAbilitySystemComponent | — | — | — | — | 06,13 | High | PIE enemy |
|
||||||
| Anim | Paladin ABP | Locomotion Idle/WalkRun/Charge/Block/Death; reads IsBlocking/IsCharging/IsDead | Observed Implementation | Intended Behavior | list_graphs + EventGraph | IsBlocking | ABP_Paladin | EventGraph / Locomotion | BlueprintUpdateAnimation | .../Paladin/ABP_Paladin | 10,08 | High | — |
|
| GAS | Attr Init | Health75 MaxHealth100 Mana25 MaxMana50; Stamina not Init | Observed Implementation | Partially Implemented | RIRAttributeSet.cpp | InitHealth | — | — | — | — | 06 | High | PIE |
|
||||||
| Anim | Amazon ABP | Locomotion Idle/WalkRun/Death only | Observed Implementation | — | list_graphs | — | ABP_Amazon | Locomotion | — | .../Amazon/ABP_Amazon | 10 | High | — |
|
| GAS | Default GE prop | BP_PlayerState DefaultAttributes=None | Observed Implementation | Scaffolding Only | ObjectTools CDO | defaultAttributesGameplayEffect | BP_PlayerState | — | — | — | 06 | High | — |
|
||||||
| Anim | Cleric ABP | Divine Circle state; DivineCircleActive? from Cleric | Observed Implementation | Intended Behavior | list_graphs + EventGraph DSL | DivineCircleActive? | ABP_Cleric | EventGraph | BlueprintUpdateAnimation | .../Cleric/ABP_Cleric | 10 | High | — |
|
| GAS | Default GEs | 4 character GEs orphaned; 0 referencers | Observed Implementation | Present but Unreferenced | get_referencers | GE_*_DefaultAttributes | — | — | — | .../GameplayEffects/PlayerCharacters/... | 06 | High | — |
|
||||||
| Anim | Wizard ABP | Locomotion only; no class montages | Observed Implementation | Stub context | find_assets + deps | — | ABP_Wizard | Locomotion | — | .../Wizard/ABP_Wizard | 10 | High | — |
|
| GAS | Default values | Paladin H/M 100/100; Amazon H/S 100/100; Cleric 50/200; Wizard 100/150; no Max* | Observed Implementation | — | GE CDO Modifiers | Override | GE_*_DefaultAttributes | — | — | — | 06 | High | — |
|
||||||
| Anim | Gunslinger | No AnimBP dependency | Observed Implementation | Existing Baseline Defect | get_dependencies | IsDataOnly | Player_Gunslinger | — | — | — | 10,08 | High | — |
|
| GAS | Amazon naming | Folder/asset Amazon vs Player_Amazonian | Observed Implementation | Technical Debt | asset path | GE_Amazon_DefaultAttributes | — | — | — | — | 06,08 | High | — |
|
||||||
| Anim | Cleric 001 | AN_Ability_001 present; UseAbility001 unimplemented | Observed Implementation | Existing Baseline Defect | list_events + deps | UseAbility001 | Player_Cleric | — | AN_Ability_001 | Cleric_PrimaryAttack_* | 10,05 | High | — |
|
| GAS | Consumable GE | PotionHeal +25 Health Instant; wired to BP_HealthPotion | Observed Implementation | Active | CDO + DSL | ApplyEffecttoTarget | BP_HealthPotion | EventGraph | OnComponentBeginOverlap | GE_PotionHeal | 06,12 | High | Authority PIE |
|
||||||
| Anim | Cleric 003 | AN_Ability_003 vestigial; damage in ConcentrateHandle | Observed Implementation | Technical Debt | Pass 6+8 | UseAbility003 | Player_Cleric | EventGraph | ConcentrateHandle | Cleric_Ability003_Montage | 10,05 | High | — |
|
| GAS | Consumable GE | PotionMana +30; HoT 0.5/0.1s; MoT 0.25/0.1s | Observed Implementation | Active | CDO + refs | — | BP_ManaPotion / OrangeSlice / ManaCrystal | — | — | GE_* | 06,12 | High | DSL confirm Pass 10 |
|
||||||
| Anim | Unconnected | Cleric_Hu_M_Spell_Staff_Up_Impact_Montage 0 referencers | Observed Implementation | Present but Unconnected | get_referencers | — | — | — | — | .../Cleric_Hu_M_Spell_Staff_Up_Impact_Montage | 10 | High | — |
|
| GAS | Ability class | URIRGameplayAbility only; no project GA assets | Observed Implementation | Scaffolding Only / Missing | search_subclasses; find_assets GA_ | — | — | — | — | — | 06 | High | — |
|
||||||
| Anim | Tool limit | Montage Notifies array unreadable; AnimNotifyList empty for BP notifies | Unknown — Tool Limitation | — | ObjectTools | Notifies | AnimMontage | — | — | — | 10,13 | High | Manual Editor |
|
| GAS | Grant/activate | No GiveAbility/TryActivateAbility/AbilitySet | Observed Implementation | Missing | Source grep; find_assets | — | — | — | — | — | 06 | High | — |
|
||||||
| Ability | Multicast risk | Hit windows depend on server montage notify evaluation | Inferred | Technical Debt | architecture | Multicast_PlayMontage | BP_PlayerCharacterBase | EventGraph | Multicast_PlayMontage | — | 10,13 | Medium | PIE |
|
| GAS | Tags | 12 INI tags; zero native/asset referencers | Observed Implementation | Present but Unreferenced | DefaultGameplayTags.ini | State.* Disable.* Effect.* | — | — | — | Config/DefaultGameplayTags.ini | 06 | High | — |
|
||||||
| Ability | Paladin 001 | Pass 6 Implemented; Pass 8 no status change (qualified) | Observed Implementation | Implemented | — | AN_Ability_001 | Player_Paladin | — | — | Attack_*_Fast_Montage | 05,10 | High | — |
|
| GAS | Cues | No project cue notifies; no GC_ assets | Observed Implementation | Missing | find_assets; search_subclasses | — | — | — | — | — | 06 | High | — |
|
||||||
| GAS | Default GE | BP_PlayerState DefaultAttributes=None | Observed Implementation | Partially Implemented | ObjectTools CDO | defaultAttributesGameplayEffect | BP_PlayerState | — | — | — | 06 | High | Pass 7 |
|
| GAS | MMC/Exec | No project subclasses | Observed Implementation | Missing | search_subclasses | — | — | — | — | — | 06 | High | — |
|
||||||
| Continuity | Editor | PIE=false; Test01; sel Skeleton_C_1 | Observed Implementation | — | EditorApp/SceneTools | IsPIERunning | — | — | — | Test01 | 15 | High | — |
|
| GAS | AttrSet clamp | No PostGameplayEffectExecute | Observed Implementation | Scaffolding Only | RIRAttributeSet.h/cpp | — | — | — | — | — | 06 | High | — |
|
||||||
| Repo | Git | Clean at Batch 4A start; Archaeology md only after | Observed Implementation | — | git status | — | — | — | — | — | 15 | High | — |
|
| UI | Overlay path | WBP_Overlay under Overlay/ folder | Observed Implementation | Intended Behavior | get_dependencies | — | WBP_PlayerHUD | — | — | /Game/_Main/UI/Widgets/Overlay/WBP_Overlay | 11 | High | Binding walk |
|
||||||
|
| UI | Stamina debt | OnStamina* typed as Mana signatures | Observed Implementation | Technical Debt | OverlayWidgetController.h | OnStaminaChanged | — | — | — | — | 11,06 | High | — |
|
||||||
|
| UI | Dual HUD | ASC Overlay + DEPRECATED UpdatePlayerHUD | Observed Implementation | Incomplete Refactor | RIRHUD; BP base | InitOverlay; Server_UpdateHUD | — | — | — | — | 06,11 | High | PIE |
|
||||||
|
| Boundary | Combat vs potion | Abilities ApplyDamage/DEPRECATED; potions ASC GE | Observed Implementation | Incomplete Refactor | Pass 5–7 | — | — | — | — | — | 05,06 | High | PIE |
|
||||||
|
| Continuity | Editor | PIE=false; Test01; Skeleton_C_1 | Observed Implementation | — | EditorApp/SceneTools | IsPIERunning | — | — | — | Test01 | 15 | High | — |
|
||||||
|
| Repo | Git | Clean at Batch 4B start | Observed Implementation | — | git status | — | — | — | — | — | 15 | High | — |
|
||||||
|
|||||||
@@ -5,16 +5,16 @@
|
|||||||
- **Scope:** Authoritative cross-model continuation document for Phase 1.
|
- **Scope:** Authoritative cross-model continuation document for Phase 1.
|
||||||
- **Last updated:** 2026-07-16
|
- **Last updated:** 2026-07-16
|
||||||
- **Current phase:** Phase 1 — Static Architecture
|
- **Current phase:** Phase 1 — Static Architecture
|
||||||
- **Last completed pass / batch:** Batch 4A (Pass 8)
|
- **Last completed pass / batch:** Batch 4B (Pass 7)
|
||||||
- **Next authorized work:** Wait for user — recommend **Pass 7** (GAS) or remaining Batch 4 passes as separately authorized
|
- **Next authorized work:** Wait for user — recommend **Pass 9** (enemy AI) or **Pass 4** (sessions) as separately authorized
|
||||||
|
|
||||||
## Phase completed
|
## Phase completed
|
||||||
|
|
||||||
| Item | Value |
|
| Item | Value |
|
||||||
|------|--------|
|
|------|--------|
|
||||||
| Phase | Phase 1 — Static Architecture (in progress) |
|
| Phase | Phase 1 — Static Architecture (in progress) |
|
||||||
| Batch completed | Batch 4A — Animation dependencies and ability callbacks |
|
| Batch completed | Batch 4B — Partial GAS architecture |
|
||||||
| Passes completed | Pass 8 |
|
| Passes completed | Pass 7 |
|
||||||
| Date completed | 2026-07-16 |
|
| Date completed | 2026-07-16 |
|
||||||
| Model identifier | Cursor Grok 4.5 |
|
| Model identifier | Cursor Grok 4.5 |
|
||||||
|
|
||||||
@@ -22,14 +22,14 @@
|
|||||||
|
|
||||||
## Repository integrity
|
## Repository integrity
|
||||||
|
|
||||||
### Starting state (Batch 4A)
|
### Starting state (Batch 4B)
|
||||||
|
|
||||||
- **Git:** Clean (`git status --short` empty; diffs empty).
|
- **Git:** Clean (`git status --short` empty; diffs empty).
|
||||||
- **Baseline commits:** `ff5640a0` Batch 1; `0d045d14` Batch 2–3 archaeology.
|
- **Baseline commits include:** `4e926d1c` Batch 4A Pass 8 animation archaeology.
|
||||||
- **Authorization:** Batch 1–3 docs committed; `01-Phase-1-Plan.md` resolved as `00A-Phase-1-Execution-Plan.md` (committed).
|
- **Authorization:** Batch 4A committed before start.
|
||||||
- **Editor:** `IsPIERunning=false`; level `/Game/_Main/Levels/Testing/Test01`; selected actor `BP_Enemy_Skeleton_C_1`.
|
- **Editor:** `IsPIERunning=false`; level `/Game/_Main/Levels/Testing/Test01`; selected actor `BP_Enemy_Skeleton_C_1`.
|
||||||
|
|
||||||
### Ending state (Batch 4A close)
|
### Ending state (Batch 4B close)
|
||||||
|
|
||||||
- Modified files: Markdown only under `Documentation/Archaeology/` (listed below).
|
- Modified files: Markdown only under `Documentation/Archaeology/` (listed below).
|
||||||
- No source, config, plugin, map, or Unreal asset writes.
|
- No source, config, plugin, map, or Unreal asset writes.
|
||||||
@@ -38,98 +38,87 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Areas fully inspected (Batch 4A)
|
## Areas fully inspected (Batch 4B)
|
||||||
|
|
||||||
- ABP_Paladin / ABP_Amazon / ABP_Cleric / ABP_Wizard structure and EventGraph ability-related reads
|
- Native: RIRPlayerState, RIRPlayerCharacter, RIRBaseCharacter, RIRBaseEnemyCharacter, RIRAttributeSet, RIRGameplayAbility, RIRAbilitySystemComponent, RIREffectActor, RIRHUD, OverlayWidgetController
|
||||||
- Paladin / Amazonian / Cleric ability Montages via dependency → AnimNotify BP chains
|
- All 8 GE assets under `/Game/_Main/Blueprints/Game/GameSystems/GAS/GameplayEffects/`
|
||||||
- `AN_Ability_001–004`, `AN_AttackComplete` Received_Notify bodies
|
- BP_PlayerState DefaultAttributes property
|
||||||
- Wizard animation folder (ABP only; no montages)
|
- Consumable EffectActor subclasses + HealthPotion apply graph
|
||||||
- Gunslinger deps (no AnimBP)
|
- DefaultGameplayTags.ini + tag/cue/GA negative searches
|
||||||
- Pass 6 status qualification / reclassification table
|
- search_subclasses for GA, cue notifies, MMC, ExecutionCalculation
|
||||||
|
|
||||||
## Areas partially inspected
|
## Areas partially inspected
|
||||||
|
|
||||||
- Montage section names, blend, root motion, notify times (tool limits)
|
- ManaPotion / ManaCrystal / OrangeSlice EventGraphs (refs + agent; HealthPotion DSL verified)
|
||||||
- AnimGraph transition rule DSL (Paladin reconstructed via VariableGet; others partial)
|
- WBP_Overlay Blueprint bar bindings (native controller only)
|
||||||
- `Cleric_Ability003` non-montage asset referencing AN_AttackComplete (identity only)
|
- GE GameplayEffectComponents (unreadable)
|
||||||
|
|
||||||
## Areas not yet inspected
|
## Areas not yet inspected
|
||||||
|
|
||||||
- Pass 7 GE/cue/tag inventory
|
|
||||||
- Pass 4 frontend/sessions
|
- Pass 4 frontend/sessions
|
||||||
- Pass 9 enemy BP AI
|
- Pass 9 enemy BP AI
|
||||||
- Pass 10 pickups/UI trees
|
- Pass 10 full pickup deep dive
|
||||||
- Pass 11 migration matrix
|
- Pass 11 migration matrix
|
||||||
- PIE / runtime
|
- PIE / runtime
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Animation assets inspected
|
|
||||||
|
|
||||||
| Asset | Depth |
|
|
||||||
|-------|--------|
|
|
||||||
| ABP_Paladin, ABP_Amazon, ABP_Cleric, ABP_Wizard | Graphs, variables, EventGraph DSL where available |
|
|
||||||
| Attack_*_Fast_Montage (Paladin); Paladin_Ability004_Montage | Deps → notifies |
|
|
||||||
| A_Hu_F_Combat_2H_Attack* (Amazon) | Deps → notifies |
|
|
||||||
| Cleric_PrimaryAttack_*; Cleric_Ability002/003/004_Montage | Deps → notifies |
|
|
||||||
| AN_Ability_001–004, AN_AttackComplete | Received_Notify DSL / bodies |
|
|
||||||
| Cleric_Hu_M_Spell_Staff_Up_Impact_Montage | Referencers = [] |
|
|
||||||
|
|
||||||
## Files created
|
## Files created
|
||||||
|
|
||||||
None new (updated existing `10`).
|
None.
|
||||||
|
|
||||||
## Files updated
|
## Files updated
|
||||||
|
|
||||||
| File | Status |
|
| File | Status |
|
||||||
|------|--------|
|
|------|--------|
|
||||||
| Documentation/Archaeology/10-AnimationDependencies.md | Draft (Pass 8 rewrite) |
|
| Documentation/Archaeology/06-PartialGASArchitecture.md | Draft (Pass 7 rewrite) |
|
||||||
| Documentation/Archaeology/05-LegacyAbilityArchitecture.md | Draft |
|
| Documentation/Archaeology/05-LegacyAbilityArchitecture.md | Draft (boundary note) |
|
||||||
| Documentation/Archaeology/08-CharacterSystems.md | Draft |
|
| Documentation/Archaeology/08-CharacterSystems.md | Draft |
|
||||||
|
| Documentation/Archaeology/11-UI-HUD-And-Sessions.md | Draft |
|
||||||
|
| Documentation/Archaeology/12-Pickups-And-Effects.md | Draft |
|
||||||
| Documentation/Archaeology/13-Unknowns-And-RuntimeQuestions.md | Draft |
|
| Documentation/Archaeology/13-Unknowns-And-RuntimeQuestions.md | Draft |
|
||||||
| Documentation/Archaeology/14-EvidenceIndex.md | Draft |
|
| Documentation/Archaeology/14-EvidenceIndex.md | Draft |
|
||||||
| Documentation/Archaeology/15-HandoffStatus.md | Draft |
|
| Documentation/Archaeology/15-HandoffStatus.md | Draft |
|
||||||
|
|
||||||
**06 not modified** (no new connected GAS interactions).
|
**10-AnimationDependencies.md not modified** (no new animation↔GAS interaction).
|
||||||
**07 not created.**
|
**07-AbilityMigrationMatrix.md not created.**
|
||||||
|
|
||||||
## Toolsets used
|
## Toolsets used
|
||||||
|
|
||||||
EditorAppToolset; SceneTools; AssetTools; BlueprintTools; ObjectTools (limited). Subagents for Paladin/Amazonian/Cleric deep walks.
|
EditorAppToolset; SceneTools; AssetTools; ObjectTools; BlueprintTools; GameplayTagsToolset / GameplayCueToolset (read-only via subagents).
|
||||||
|
|
||||||
## Tool limitations / failed queries
|
## Tool limitations / failed queries
|
||||||
|
|
||||||
- Montage `Notifies` property unreadable
|
- `GameplayEffectComponents` unreadable on GE CDOs
|
||||||
- Asset-registry `AnimNotifyList` empty for BP notify classes
|
- Some ObjectTools property-name batches on BlueprintGeneratedClass failed until Default__/alternate load path used by subagent
|
||||||
- `read_graph_dsl` empty on AnimGraph/state/transition graphs
|
- search_subclasses requires `base_class` + `class_name` (not `parent_class`)
|
||||||
- `AssetTools.get_class` Unknown tool (used tags)
|
- No PIE
|
||||||
- Some CallMcpTool batches failed schema intermittently; retried
|
|
||||||
- Notify trigger times: Unknown — Tool Limitation
|
|
||||||
|
|
||||||
## Key Pass 8 outcomes
|
## Key Pass 7 outcomes
|
||||||
|
|
||||||
1. **UseAbility* callers resolved** — AnimNotify BPs, not AnimBP graphs.
|
1. **Only active GE application path:** consumable EffectActors (potions/food).
|
||||||
2. **Cleanup** for notify-driven attacks — `AN_AttackComplete` → `SetIsAttacking`.
|
2. **All four character DefaultAttributes GEs orphaned**; BP_PlayerState = None.
|
||||||
3. **Cleric 001/003 notifies dead** — interface unimplemented.
|
3. **No project GAs, grants, cues, MMC, ExecutionCalculations.**
|
||||||
4. **Pass 6 primary statuses unchanged**; qualifications recorded in `10` reclassification table.
|
4. **All 12 INI gameplay tags unreferenced.**
|
||||||
5. **Static networking risk** — Multicast montage notify evaluation required for hit windows.
|
5. **Dual HUD + no DEPRECATED↔ASC sync** confirmed as migration boundary.
|
||||||
|
6. **Enemy GetASC defect** remains static Incomplete Refactor affecting EffectActor on enemies.
|
||||||
|
|
||||||
## Suggested next bounded task
|
## Suggested next bounded task
|
||||||
|
|
||||||
**Authorize explicitly one of:**
|
**Authorize explicitly one of:**
|
||||||
|
|
||||||
1. Pass 7 — GAS GE/cue/tag inventory
|
1. Pass 9 — Enemy BP AI
|
||||||
2. Pass 9 — Enemy BP AI
|
2. Pass 4 — Frontend / sessions
|
||||||
3. Pass 4 — Frontend / sessions
|
3. Pass 10 — Pickup deep dive
|
||||||
|
|
||||||
**Do not begin** Pass 11 or PIE until authorized.
|
**Do not begin** Pass 11 or PIE until authorized.
|
||||||
|
|
||||||
**Starting files:** `00`, `05`, `06`, `08`, `10`, `13`, `14`, `15`.
|
**Starting files:** `00`, `06`, `08`, `09`, `12`, `13`, `14`, `15`.
|
||||||
|
|
||||||
## Confirmation
|
## Confirmation
|
||||||
|
|
||||||
- No Unreal assets modified
|
- No Unreal assets modified
|
||||||
- No source/config/map/plugin modified
|
- No source/config/map/plugin modified
|
||||||
- No editor state intentionally modified
|
- No editor state intentionally modified
|
||||||
- No work beyond Pass 8 performed
|
- No work beyond Pass 7 performed
|
||||||
- Waiting for explicit authorization before Pass 7 or other Batch 4 passes
|
- Waiting for explicit authorization before Pass 9 or other passes
|
||||||
|
|||||||
Reference in New Issue
Block a user