Files
realms-in-ruin-dev/Documentation/Archaeology/12-Pickups-And-Effects.md
T
tedwardsandCursor e50c8032ef 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>
2026-07-16 21:29:19 -07:00

3.0 KiB

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.