Skip to content

🧩 Status Effects — Pickups Integration (Bridges)

This folder contains optional bridge code that connects the Status Effects system with the RevFramework Pickups system.

It answers one question:

“How can pickups or items apply status effects using the Status pipeline?”

This integration is built and supported for RevFramework systems only.
It is not intended as a general integration layer for third-party pickup or item-use systems.


🧠 What This Folder Is

This is a thin interop layer between two independent systems:

  • Status Effects → lifecycle, stacking, potency, authority
  • Pickups → item usage, effects, context

The bridge allows pickups to:

  • apply statuses
  • pass item context
  • reuse the Status controller safely

💡 Why This Exists

Status Effects does not depend on Pickups.
Pickups does not depend on Status Effects.

This folder keeps that separation clean by:

  • isolating cross-system behaviour
  • avoiding hard dependencies
  • keeping both systems fully deletable

📦 What Lives Here

🔹 Runtime Bridge

File Purpose
StatusApplyEffect PickupEffect that applies a status via StatusEffectController

This is the core runtime glue.

It:

  • builds a status from a definition
  • applies it via the controller
  • optionally forwards item context (ItemUseContext)
  • preserves stacking, immunity, potency, and authority rules

🔹 Authoring Definition

File Purpose
StatusPickupEffectDefinition ScriptableObject wrapper for applying a status via Pickups

This allows designers to:

  • assign a status to a pickup
  • reuse existing Status definitions
  • avoid duplicating gameplay logic

🔗 How This Fits Into The System

Pickup System
    ↓
PickupEffect (this bridge)
    ↓
StatusEffectController
    ↓
Status Runtime (stacking, potency, etc.)

Important:

The bridge does not implement behaviour.
It simply forwards into the Status system.


🧩 Mental Model

  • Pickups trigger effects
  • Status handles behaviour
  • This folder connects the two

🔌 Behaviour Details

Context-Free Apply

When no item context is provided:

  • uses StatusContext.None
  • avoids extra allocations
  • applies via ApplyOrRefresh

Context-Aware Apply

When ItemUseContext is available:

  • builds a StatusContext
  • passes source metadata (item, slot)
  • raises usage events (StatusUseEvents)

⚠️ Requirements

  • Requires REV_PICKUPS_PRESENT define
  • Automatically excluded if Pickups is not installed
  • Safe to remove entirely

⚠️ Gotchas

  • Requires StatusEffectController on target
  • Does not bypass authority rules
  • Does not handle networking or replication
  • Status definitions must be valid (BuildEffect() must not return null)

🛠 Extending

To extend this integration:

  1. Create a new PickupEffect
  2. Build a status via StatusEffectDefinitionBase
  3. Apply via StatusEffectController
  4. Pass context where appropriate

Keep the bridge:

  • thin
  • explicit
  • dependency-safe

🚫 What Does NOT Belong Here

  • Status logic (belongs in Runtime)
  • Pickup logic (belongs in Pickups)
  • UI or feedback systems
  • Networking or authority systems

This is integration only.


🌍 Third-Party / Custom System Use

This integration is built for RevFramework Status Effects and Pickups systems only.

If you are using a different pickup or status system:

  • Treat this as a reference example
  • Implement your own bridge or effect
  • Use the public APIs of your systems

👉 Custom or third-party integrations are not supported by this layer.


  • Status Effects → runtime behaviour
  • Pickups → item usage pipeline
  • Core → lifecycle and stacking rules