Skip to content

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 interface
  • StatusAuthority — internal resolver
  • StatusAuthorityBinder — 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 = false means authority is not used
  • requireAuthority = true gates 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
  • StatusAuthorityBinder invalidates 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 StatusAuthorityBinder and appears mid-session invalidates nothing. Call StatusEffectController.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

  • 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.