Inventories Gameplay Effects, orphan default attributes, missing abilities/cues, and consumable EffectActor wiring without modifying Unreal assets. Co-authored-by: Cursor <cursoragent@cursor.com>
3.0 KiB
12 — Pickups and Effects
Status: Draft
- Scope: Native
ARIREffectActormechanism; 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:
UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent(TargetActor)- Early-out if null
- 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.