Skip to content

RevFramework — Status Effects • Auras

Runtime components that apply temporary status potency and duration modifiers to actors standing inside a trigger volume.

Auras are optional gameplay conveniences, not part of the core Status Effects pipeline.


Overview

StatusAuraZone is a lightweight, runtime-only component for creating area-based status modifiers.

When an actor with a StatusEffectController enters the zone, the aura:

  • Temporarily adds receiver-side providers:
  • Potency via IStatusPotency
  • Duration scaling via IStatusResistance
  • Optionally auto-applies sample status effects (Poison, Burn, Regen, etc.)
  • Optionally recomputes or refreshes active effects while actors remain inside
  • Cleans itself up deterministically when actors exit or the aura is disabled

Auras work entirely through public provider interfaces, which means they:

  • Stack cleanly with other auras and systems
  • Never mutate effect state directly
  • Can be removed without breaking the Status system

Important: Auras do not own status lifecycle, stacking rules, authority, or time. They only influence incoming math while an actor is inside the zone.


What Auras Are (and Aren’t)

✔ What Auras Are

  • A receiver-side modifier pattern
  • A convenient way to author area buffs/debuffs
  • Runtime-safe and build-safe
  • Fully optional

✘ What Auras Are Not

  • A replacement for core status logic
  • A required system dependency
  • A balance system
  • A multiplayer authority solution

If you remove all auras, the Status Effects system continues to function normally.


Key Features

Potency Scaling

Multiply the magnitude of incoming effects using:

  • A global multiplier
  • Tag-based buckets (Poison, DOT, HOT, Magic, etc.)
  • An optional exact status id override (target a single effect)

All modifiers are absolute and recomputed by the controller.


Duration Scaling

Optionally shorten effect duration using IStatusResistance.

  • Multiplier range is 0–1
  • Multiple auras stack multiplicatively
  • Duration can never be increased by an aura

Auto-Apply Samples (Optional)

For demos, prototypes, and teaching scenes, auras can auto-apply sample effects:

  • Poison
  • Burn
  • Regen
  • Slow / Haste
  • Vulnerability, Shield, Stun, Thorns

These are: - Runtime-safe - Included in builds - Disabled by default

They are not intended for production gameplay logic.


Stay Recompute / Refresh

While an actor remains inside the zone, the aura can:

  • Periodically recompute potency for active effects
  • Optionally refresh durations on enter and/or exit

This allows: - “Standing in fire makes burns worse” - “Leaving a shrine locks in remaining buff time”


Clean Entry / Exit Handling

On entry: - Adds lightweight helper components: - ZonePotencyProvider - ZoneResistanceProvider

On exit or disable: - Removes only the providers it added - Optionally nudges the controller to recompute / refresh

No state leaks. No orphaned modifiers.


Example

[AddComponentMenu("RevFramework/Status/Auras/Status Aura Zone")];
public sealed class StatusAuraZone : MonoBehaviour { ... }

Setup Steps

  1. Add a Collider or Collider2D
  2. Enable Is Trigger
  3. Configure:
  4. Layer mask
  5. Optional tag filter
  6. Set potency multipliers (All / Poison / DOT / HOT / Magic)
  7. Enable Duration Scaling if required
  8. (Optional) Enable Auto-Apply for testing

Common Uses

  • Healing circles (HOT potency boost)
  • Poison swamps or fire fields
  • Buff shrines or blessing zones
  • Magic dampening fields
  • Environmental hazard volumes

Behaviour Notes

  • Zones stack multiplicatively
  • Duration scaling is always ≤ 1
  • Auto-apply samples are:
  • Safe
  • Optional
  • Off by default
  • Disabling the aura immediately removes its providers
  • Refresh behaviour is configurable:
  • refreshOnEnter = true (default)
  • refreshOnExit = false (default)

Controller Host Resolution

The aura locates the relevant StatusEffectController by searching:

  1. Parent hierarchy
  2. Children
  3. Self

This allows colliders to live on child objects without special wiring.


Component Purpose
ZonePotencyProvider Receiver-side magnitude multiplier
ZoneResistanceProvider Receiver-side duration scaling
StatusEffectController Applies recompute / refresh logic
StatusRegistry Builds sample effects and refresh stubs

Extending

To create custom aura behaviour:

  • Implement your own IStatusPotency and/or IStatusResistance
  • Attach them conditionally at runtime
  • Follow the add-on-enter / remove-on-exit pattern used here

Avoid: - Mutating effect state directly - Applying effects without going through the controller - Treating auras as authoritative gameplay logic

Deriving from StatusAuraZone is possible, but not recommended unless you fully understand its lifecycle.


See Also

  • Abstractions — interface contracts
  • Core — controller, stacking, authority, math