Document Batch 4D archaeology and add README title image outside LFS.

Exclude REALMSINRUIN_TITLE_DEV.png from Git LFS so the README hero renders on Gitea.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-16 23:17:56 -07:00
co-authored by Cursor
parent e028e16f70
commit ee65271212
11 changed files with 501 additions and 215 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 9 (Batch 4C)
- **Next pass expected to contribute:** Pass 4 / Pass 10 when authorized
- **Last completed pass:** Pass 10 (Batch 4D) — Overlay bindings + EffectActor authority static pass
- **Next pass expected to contribute:** Pass 11 when authorized
## Draft tracking
@@ -23,6 +23,15 @@
- Gameplay Cue negative inventory
- EffectActor + consumable BP wiring
- Dual HUD path + stamina delegate type debt
- **Pass 10:** WBP_Overlay Health/Mana bindings only; no stamina widget; EffectActor no authority; UpdatePlayerHUD unimplemented on PC
### Pending sections
- PIE: Overlay bars update on potion overlap; dual-resource display
### Evidence still required
- PIE: EffectActor vs enemy GetASC null early-out impact
- Sphere collision GenerateOverlapEvents exact (tool limit)
- Dual HUD path + stamina delegate type debt
- Legacy vs GAS boundary table
- Enemy ASC compatibility table
- Subsystem status matrix
@@ -56,7 +65,7 @@
| 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 |
| Attribute-driven UI | **Active but Unverified** | InitOverlay → OverlayWidgetController → WBP_Overlay Health/Mana bars bind delegates | WBP_Overlay via WBP_PlayerHUD CDO classes assigned | Legacy UpdatePlayerHUD **unimplemented**; stamina broadcasts with **no stamina widget** | RIRHUD; WBP_Overlay DSL; PC list_events |
| Legacy-resource synchronization | **Missing** | No mirror code between ASC attrs and DEPRECATED_* | Both UI paths independent | Static divergence possible | Pass 57 |
| 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 |
@@ -172,7 +181,7 @@ Defined in `Config/DefaultGameplayTags.ini` (ImportTagsFromConfig=True).
|---|---|---|---|---|---|---|
| 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? |
| HUD bars | Server_UpdateHUD → UpdatePlayerHUD (DEPRECATED %) | InitOverlay → OverlayWidgetController ASC delegates | None | Overlay Connected; UpdatePlayerHUD **Present but Unconnected** | Incomplete dual UI | Overlay only? |
| 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 | — |
@@ -211,7 +220,7 @@ Defined in `Config/DefaultGameplayTags.ini` (ImportTagsFromConfig=True).
---
## EffectActor boundary (Pass 7; Pass 10 deferred)
## EffectActor boundary (Pass 7 + Pass 10)
`ARIREffectActor::ApplyEffectToTarget`:
@@ -224,11 +233,13 @@ Defined in `Config/DefaultGameplayTags.ini` (ImportTagsFromConfig=True).
| BP | Instant | Duration | Graph |
|---|---|---|---|
| `BP_HealthPotion` | GE_PotionHeal | None | Sphere OnComponentBeginOverlap → ApplyEffecttoTarget(Instant) → DestroyActor |
| `BP_ManaPotion` | GE_PotionMana | None | Same pattern (agent + refs) |
| `BP_ManaCrystal` | None | GE_MoT_Small | Same Duration pattern |
| `BP_OrangeSlice` | None | GE_HoT_Small | Same Duration pattern |
| `BP_ManaPotion` | GE_PotionMana | None | Same Instant |
| `BP_ManaCrystal` | None | GE_MoT_Small | Sphere → Apply(Duration) → Destroy |
| `BP_OrangeSlice` | None | GE_HoT_Small | Sphere → Apply(Duration) → Destroy |
Authority on overlap application: **Requires Runtime Inspection** (not traced beyond DSL). Full pickup respawn/UI → Pass 10.
**Pass 10 static:** No `SwitchHasAuthority` on any of the four; `bReplicates=false`; no target filter; Destroy always follows Apply call (including null ASC early-out path); no UI notify; no respawn. Authority / client overlap = **Authority Risk** / Requires Runtime Inspection. Full matrices: `12-Pickups-And-Effects.md`.
**Overlay (Pass 10):** `WBP_Overlay` forwards controller to Health + Mana progress bars only; **no stamina widget**. Bars bind OnHealth/ManaChanged → SetProgressBarPercent.
---