RevFramework — Status Effects • Authority¶
Provides the authority hook used by the Status Effects system.
This folder does not implement networking features such as replication, prediction, rollback, or reconciliation.
Authority determines whether a StatusEffectController is allowed to tick or mutate (apply, refresh, remove, dispel, tick).
Purpose¶
This is a minimal, optional authority seam.
It answers one question:
Is this controller allowed to change state right now?
Everything else (networking, ownership, synchronisation) is outside this system.
Usage Guidance¶
Status effects mutate state over time.
In controlled simulations or multiplayer contexts, not every instance should be allowed to:
- apply effects
- tick time
- remove or cleanse
Instead of hardcoding rules, the system exposes a pluggable decision point:
IStatusAuthority
This keeps the system:
- decoupled from networking solutions
- flexible for different authority models
- usable in both single-player and multiplayer setups
What Lives Here¶
IStatusAuthority— authority decision interfaceStatusAuthority— internal resolverStatusAuthorityBinder— simple local implementation
Folder Overview¶
- Interface for authority checks
- Resolver used by controllers
- Optional local binder for simple setups
Important Notes¶
- Authority is opt-in per controller
requireAuthority = falsemeans authority is not usedrequireAuthority = truegates all mutation and ticking- If no valid authority resolves, operations become no-ops
- Resolver returns a single authority instance per scene: the cache is consulted before the context's own hierarchy, so the first authority any controller resolves answers for every controller in that scene. Placement does not scope the answer — the controller is the argument to
HasAuthority, which is where a per-actor rule goes. Every resolution step applies the same liveness rule, so a disabled or inactive binder is never handed out by any of them
Lifetime¶
- A destroyed or disabled authority stops answering; the controller drops it on its next check and the drop reopens resolution, so a live authority further down the order is found without a call
StatusAuthorityBinderinvalidates its scene's cached resolution on enable, disable and destroy- A controller that resolved nothing does not search again until an invalidation — a repeat miss is an integer comparison, not a project-wide scan
- An authority that is not a
StatusAuthorityBinderand appears mid-session invalidates nothing. CallStatusEffectController.RefreshAuthority()on the controllers it should gate. One that leaves needs no call: the drop above reopens the search
Not for Production Use¶
A permission seam; networking and ownership are yours to provide
- This folder does not implement networking
- This folder does not handle replication or state sync
- This folder does not define ownership systems
Related Documentation¶
- Core → controller and lifecycle
- Abstractions → contracts and extension seams
- Effects → behaviour implementations
Mental Model¶
Authority does not control what happens.
It controls whether anything is allowed to happen at all.