RevFramework — Status Effects • Integration¶
Optional bridges that connect Status Effects into other RevFramework subsystems
(Health, Shields, and similar gameplay pipelines).
These integrations are entirely optional and deliberately decoupled.
If the target system is missing, integration calls fail safely and no-op.
Table of Contents¶
Overview¶
The Integration folder contains bridge helpers that allow status effects to interact with other systems without creating compile-time dependencies.
These bridges: - Use reflection or narrow sink contracts - Are safe to delete if the target module is not present - Never make Status Effects depend on Health, Shields, or other systems
| Bridge | Purpose |
|---|---|
StatusHealthBridge |
Routes status-driven damage/healing into the Health system (reflection-based). |
ShieldLegacyBridge |
Compatibility adapter for legacy shield implementations. |
Important:
Integration bridges are not part of the core Status pipeline.
They exist purely to optionally connect behaviour when other systems are present.
Mental Model¶
Integration bridges answer one question only:
“If another system exists, how do I talk to it safely?”
They do not: - Own gameplay rules - Decide balance - Enforce authority - Replicate state - Guarantee effects occur
If the target system is missing, integration calls silently no-op by design.
Components¶
StatusHealthBridge¶
Used by:
- PoisonStatus
- BurnStatus
- ThornsStatus
Purpose: Routes status-driven damage or reflection into the Health subsystem when present.
Key behaviour:
- Applies damage via Health rules (e.g. DamageRuleHub)
- Supports reflective damage stacks (Thorns)
- Refreshes Health rule ordering when needed
Key traits: - Reflection-based (no assembly dependency) - Auto-adds required Health rule components if missing - Safe no-op if Health is not installed
This allows Status Effects to interact with Health without coupling the modules.
ShieldLegacyBridge¶
Used by:
- ShieldStatus (fallback path only)
Purpose: Provides compatibility with older shield components that expose:
Add(int amount)Clear()
Important notes:
- Deprecated path — prefer IShieldTicketPool
- Clear() removes all shield contributions on the component
- Used only when no IShieldTicketPool is present
This bridge exists solely to ease migration from legacy systems.
Quick Start¶
Health Integration¶
No setup required beyond installing a Health system.
If Health is present, status effects automatically route damage through it:
ctrl.ApplyStatus(
new PoisonStatus(5f, 10f),
StatusContext.FromAbility("toxin_arrow")
);
If Health is missing, the call safely no-ops.
Shield Integration¶
Preferred:
- Implement IShieldTicketPool on your shield system
Fallback:
- Legacy shield components are supported via ShieldLegacyBridge
Use the fallback only if you cannot migrate to ticket-based shields.
Gotchas¶
ShieldLegacyBridge.Clear()wipes all shields on the target componentStatusHealthBridgesilently ignores calls when Health is absent (by design)- Auto-added Health rule components require the Health module to be installed
- Not all status effects use integration bridges — only those that explicitly opt in
- Integration code must never throw if a dependency is missing
Extending¶
You can create your own integration bridges for:
- Mana / energy
- Stamina
- Rage / heat / overcharge
- Threat / aggro systems
- Custom combat pipelines
Recommended pattern:
- Write a standalone static helper (reflection-based or interface-based)
- Call it from your custom
IStatusEffectimplementation - Fail safely when the target system is absent
- Keep Status Effects decoupled
Avoid introducing hard references or gameplay rules into integration code.
See Also¶
Effects— runtime behaviourCore— controller, stacking, authority, mathAbstractions— shared contractsBridges— Pickups interopUI— visualisation components