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¶
- Add a Collider or Collider2D
- Enable Is Trigger
- Configure:
- Layer mask
- Optional tag filter
- Set potency multipliers (All / Poison / DOT / HOT / Magic)
- Enable Duration Scaling if required
- (Optional) Enable Auto-Apply for testing
Common Uses¶
- Healing circles (
HOTpotency 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:
- Parent hierarchy
- Children
- Self
This allows colliders to live on child objects without special wiring.
Related Components¶
| 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
IStatusPotencyand/orIStatusResistance - 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 contractsCore— controller, stacking, authority, math