Inventories Gameplay Effects, orphan default attributes, missing abilities/cues, and consumable EffectActor wiring without modifying Unreal assets. Co-authored-by: Cursor <cursoragent@cursor.com>
58 lines
3.0 KiB
Markdown
58 lines
3.0 KiB
Markdown
# 12 — Pickups and Effects
|
|
|
|
**Status: Draft**
|
|
|
|
- **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; AssetTools refs; ObjectTools GE class props; BlueprintTools EventGraph DSL on `BP_HealthPotion`.
|
|
- **Last updated:** 2026-07-16
|
|
- **Current phase:** Phase 1 — Static Architecture
|
|
- **Last completed pass:** Pass 7 (Batch 4B) — EffectActor + GE wiring seed
|
|
- **Next pass expected to contribute:** Pass 10
|
|
|
|
## Draft tracking
|
|
|
|
### Completed sections
|
|
- ApplyEffectToTarget GE application path
|
|
- Instant/Duration GE class properties
|
|
- 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
|
|
- Per-pickup authority, destroy/respawn, UI notify (Pass 10)
|
|
- ManaPotion / ManaCrystal / OrangeSlice graph confirmation beyond refs (HealthPotion DSL verified)
|
|
- Gold / stamina pickups if present
|
|
|
|
### Evidence still required
|
|
- Whether ApplyEffect runs with HasAuthority on overlap
|
|
- Whether GetAbilitySystemComponent succeeds for player vs fails for enemy in PIE
|
|
- Stacking / re-pickup behavior
|
|
|
|
---
|
|
|
|
## Native mechanism (Observed Implementation)
|
|
|
|
`ARIREffectActor::ApplyEffectToTarget`:
|
|
|
|
1. `UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent(TargetActor)`
|
|
2. Early-out if null
|
|
3. MakeOutgoingSpec(GEClass, 1.f) + ApplyGameplayEffectSpecToSelf
|
|
|
|
**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 subclasses (Observed Implementation)
|
|
|
|
| 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.
|