03 — Potency Auras¶
Goal¶
Learn how potency scales status strength, how resistance scales status duration, and how both are verified through the controller-owned active state.
What This Scene Demonstrates¶
The core mental model:
potency changes strength → resistance changes duration → controller applies/recomputes → Active verifies runtime state
- Potency configures
DemoStatusPotencyto scale effect strength. - Resistance configures
DemoStatusResistanceto scale effect duration. - Quick Apply builds real effects through
StatusRegistryand submits them toStatusEffectController. - Active shows the controller-owned runtime state.
- Potency recompute updates active potency through the controller.
- Duration recompute updates active durations through the controller.
- New applies naturally use the current adapters.
- The scene may also include a
StatusAuraZone, which can attach temporary zone providers, nudge controller recomputes, and optionally auto-apply sample statuses when actors enter or remain inside the trigger zone.
The adapters and aura-zone providers are optional public sample seams. The controller owns the real runtime result.
What To Look For¶
-
Overview Shows the Target, resolved Host, lifecycle counters, and whether potency and resistance adapters are present.
-
Potency Potency changes status strength. All is the global multiplier. Poison, DOT, HOT, and Magic multiply matching effects. Exact Id and Exact × target one status id. Apply Aura writes adapter fields and calls
RecomputePotencyForAll(). Remove Aura removes the sample potency adapter and recomputes potency. Reset 1× restores neutral potency values. -
Resistance Resistance changes status duration. All, Poison, DOT, HOT, and Magic scale matching durations.
1means full duration.0.5means half duration.0effectively removes duration. Apply Resistance writes the sample resistance adapter. Refresh Active Durations calls the controller duration recompute path. -
Quick Apply Builds real effects through
StatusRegistry. Uses small demo defaults for magnitude and duration. Submits the effect throughStatusEffectController.ApplyStatus(...). -
Active Shows current controller-owned statuses. Each row shows status id, runtime type, stacking rule, remaining duration, and a Remove action. Use this tab to verify what potency or resistance changes actually did.
-
Aura Zone / Totem (Scene Object) If present in the scene,
StatusAuraZoneis a trigger-zone helper. On enter, it can attach temporary potency and resistance providers to the resolved controller host. It can call controller recompute methods on enter, stay, exit, or provider changes depending on its settings. It can optionally auto-apply sample statuses on enter or while the actor remains inside. On exit or disable, it removes the temporary zone providers it added.
Read the scene as:
configure adapter or enter zone → apply/recompute through controller → verify Active state
Sample Scope¶
This scene covers:
- Adding and configuring
DemoStatusPotency - Removing
DemoStatusPotency - Recomputing active potency through
StatusEffectController - Adding and configuring
DemoStatusResistance - Removing
DemoStatusResistance - Recomputing active durations through
StatusEffectController - Applying real sample statuses through
StatusRegistry - Verifying live controller state through the Active tab
- Removing active effects through the controller
- Showing a resolved Host when the controller is found on the target or a child object
- Demonstrating a scene
StatusAuraZoneif present - Attaching temporary zone potency and resistance providers on trigger enter
- Removing temporary zone providers on trigger exit or disable
- Optionally auto-applying sample statuses through the aura-zone helper
This scene does not cover:
- Full combat behaviour
- Full Health integration behaviour
- Production aura-zone architecture
- Networking implementation
- Production authority implementation
- Permanent project-specific potency or resistance design
DemoStatusPotency, DemoStatusResistance, and StatusAuraZone are sample/demo seams for this teachable. Real projects can replace the adapter/provider approach with their own systems implementing the same public contracts.
Authority Note¶
This scene may include a permissive sample authority setup for demonstration purposes. Production projects should provide their own authority implementation.
Networking Reminder¶
RevFramework does not include networking. Multiplayer support is the developer’s responsibility.
How To Use¶
- Enter Play Mode.
- Confirm the Target is assigned.
- Confirm the panel resolves a Host with
StatusEffectController. - Open Potency.
- Toggle Enabled as needed.
- Set Exact Id if you want to target one status id.
- Adjust Exact ×, All, Poison, DOT, HOT, or Magic.
- Click Apply Aura to write the potency adapter and recompute active potency.
- Or click Remove Aura to remove the potency adapter and recompute active potency.
- Optionally click Reset 1× to restore neutral potency values.
- Open Resistance.
- Toggle Enabled as needed.
- Adjust All, Poison, DOT, HOT, or Magic.
- Click Apply Resistance to write the resistance adapter.
- Click Refresh Active Durations if you want already-active durations recomputed through the controller.
- Open Quick Apply.
- Choose a known status id.
- Click Apply Sample.
- If the scene includes a
StatusAuraZone, move the actor into the trigger zone to let the zone attach temporary providers and optionally auto-apply configured sample statuses. - Move the actor out of the zone to remove the temporary zone providers.
- Open Active.
- Verify the controller-owned active effects, remaining time, and runtime state.
- Use Remove to remove an active effect through the controller.
Failure Behaviour¶
-
Missing Target Meaning: the panel has no object to resolve from. Corrective action: assign a target GameObject with
StatusEffectController, or create a scene object namedEnemyCapsule. -
Missing Controller Meaning: the target or resolved host does not have a
StatusEffectController. Corrective action: addStatusEffectControllerto the target or resolved host. -
No Known Status Ids Meaning:
StatusRegistryreturned no ids. Corrective action: register at least one status definition, then reopen or refresh the scene. -
Apply blocked: no controller Meaning: there is no valid
StatusEffectControlleravailable. Corrective action: assign a valid target or host, then try again. -
Registry could not build sample Meaning:
StatusRegistrycould not create the selected sample effect. Corrective action: choose another id or register that status. -
Potency blocked: no target Meaning: there is no target to resolve the host from. Corrective action: assign a target, then try again.
-
Potency adapter could not be resolved or created Meaning: the panel could not create or find
DemoStatusPotencyon the host. Corrective action: check the target and host setup. -
Remove Aura blocked: no potency host found Meaning: the panel could not resolve the host object. Corrective action: assign a valid target or host, then try again.
-
No potency adapter was present Meaning: there is no
DemoStatusPotencycomponent to remove. Corrective action: use Apply Aura first if you want to create one. -
Resistance blocked: no host found Meaning: the panel could not resolve the host object. Corrective action: assign a valid target or host, then try again.
-
Resistance adapter could not be resolved or created Meaning: the panel could not create or find
DemoStatusResistanceon the host. Corrective action: check the target and host setup. -
Refresh blocked: no controller Meaning: there is no valid
StatusEffectControlleravailable for duration recompute. Corrective action: assign a valid target, then try again. -
Aura zone does not affect an actor Meaning: the actor may not pass the layer mask, required tag, 2D/3D trigger mode, or controller-host resolution. Corrective action: check the zone physics settings, actor layer/tag, trigger collider setup, and whether the actor resolves to a
StatusEffectControllerhost. -
Aura sample does not auto-apply Meaning:
applyOnEntermay be empty,seedDefaultSamplemay be off, repeat timing may not have elapsed, or the requested sample may not be buildable in the current project setup. Corrective action: configureapplyOnEnter, enableseedDefaultSamplefor the demo path if needed, check repeat interval, and verify the requested sample status is available.
The operation result explains what happened in the panel. The Active tab confirms the actual controller state.
Behind The Scenes¶
This panel uses:
StatusRegistry.KnownIdsString()StatusRegistry.TryBuild(...)StatusEffectController.ApplyStatus(...)StatusEffectController.RecomputePotencyForAll()StatusEffectController.RecomputeDurationsForAll(...)StatusEffectController.RemoveStatusAt(...)StatusEffectController.ActiveStatusEffectController.StatusAppliedStatusEffectController.StatusRefreshedStatusEffectController.StatusRemovedStatusEffectController.StatusExpiredStatusContext.FromAbility(...)IStatusEffectDemoStatusPotencyDemoStatusResistanceStatusAuraZoneZonePotencyProviderZoneResistanceProviderIStatusPotencyIStatusResistance
Key Takeaway¶
Potency changes how strong a status is.
Resistance changes how long a status lasts.
The panel shows manual adapter configuration, and the scene aura zone can demonstrate temporary provider behaviour.
In both cases, the controller owns the real runtime result and the Active tab proves what actually happened.