RevFramework — Status Effects • System¶
Shared, system-level helpers, hooks, and configuration types for the Status Effects system.
This folder contains cross-cutting public surfaces used by multiple parts of the system. It does not own lifecycle, behaviour, or integration logic.
🎯 Purpose¶
This folder provides system-level support types that are:
- shared across multiple areas
- optional
- globally accessible
These include:
- hook points
- configuration enums
- helper utilities
- optional event surfaces
🧠 Usage Guidance¶
Use this folder for cross-cutting concerns that do not belong in:
- Core (lifecycle execution)
- Effects (behaviour)
- Abstractions (contracts)
- Integration (external systems)
These types are intended to support the system, not define it.
🧩 What Lives Here¶
StatusFx¶
Global delegate hooks for status effect visuals.
Spawn→ create visualsPulse→ refresh visualsDespawn→ remove visuals
Notes:
- Optional
- Safe to leave unassigned
- Should not affect gameplay logic
StatusTimeMode¶
Enum used by StatusEffectController to select time behaviour:
ScaledUnscaledPausedCustom
Used alongside ITimeSource implementations.
StatusUseEvents¶
Optional global event surface for item-attributed status application.
Provides:
StatusAppliedFromItemUseRaiseApplied(...)helper
Notes:
- Informational only
- Does not affect gameplay
StatusUtility¶
Static helper providing:
- potency calculation
- duration scaling
- convenience
Apply(...)forwarding
Behaviour:
- reads
IStatusPotencyandIStatusResistance - forwards to
StatusEffectControllerwhen available - safely no-ops when dependencies are missing
📦 Folder Overview¶
- global hooks and delegates
- shared enums and configuration
- helper utilities
- optional event surfaces
⚠️ Important Notes¶
- This folder does not own gameplay behaviour
- Helpers should not override controller logic
- Event surfaces are informational only
- All features are optional
🧪 Diagnostics¶
Common pitfalls:
- Assuming hooks are required for gameplay
- Relying on utility helpers instead of the controller
- Using events as gameplay drivers instead of signals
🚫 Not for Production Use¶
- This folder does not implement lifecycle logic
- This folder does not define stacking or authority rules
- This folder does not contain effect implementations
- This folder does not provide integration bridges
🔗 Related Documentation¶
- Core → controller, lifecycle, stacking
- Effects → runtime behaviour
- Abstractions → contracts
- Integration → external system bridges
- Timing → time sources
🧠 Mental Model¶
System provides shared utilities and hooks.
Other folders perform the actual work.