05_DotHotStacks — DOT • HOT • Stacks¶
Goal¶
Teach how DOT and HOT effects tick over time and how their stacking modes change timer and stack behaviour.
What This Scene Demonstrates¶
Effect config → stack mode → Apply → tick schedule → real DOT/HOT event feedback.
This scene uses real DotEffect and HotEffect components on the victim. The panel configures public settings, applies effects through public APIs, clears effects through public APIs, and displays real stack/tick event feedback.
DOT/HOT components own stack behaviour. The panel only drives them and displays their state.
What To Look For¶
- Setup: The panel binds a victim and confirms whether
DotEffectandHotEffectare present. - DOT: Damage-over-time settings control damage per tick, interval, duration, stacking, max stacks, and time mode.
- HOT: Heal-over-time settings mirror DOT behaviour, but request healing instead of damage.
- Stacking Mode: Refresh, Additive, and Independent change how applications share or split stack timers.
- Timers: Shared modes show one timer; Independent mode shows one timer per stack.
- Events: Started, Stopped, TickApplied, and StacksChanged events appear as live feedback.
Mental model: configure effect → choose stack mode → apply effect → observe stacks, timers, ticks, and events.
Sample Scope¶
This scene covers:
DotEffectconfigurationHotEffectconfiguration- Per-tick amount
- Tick interval
- Duration
- Max stacks
- Refresh stacking
- Additive stacking
- Independent stacking
- Scaled vs unscaled time mode
- Apply DOT / Clear DOT
- Apply HOT / Clear HOT
- Clear All for both effects
- Shared stack timer display
- Independent stack timer display
- Real effect events and toast feedback
This scene does NOT cover:
- Damage rules in detail
- Shield behaviour
- Regen handler behaviour
- StatusEffect system integration
- Networking implementation
- Production UI/VFX/audio integration
- Automatic effect creation
The victim must already have the relevant DotEffect and/or HotEffect components. The panel does not create them.
Authority Note¶
This scene may include a permissive sample authority setup where mutations are allowed locally for demonstration purposes.
Networking Reminder¶
No networking is included; integration is the developer’s responsibility.
How To Use¶
- Enter Play Mode.
- Open the Setup tab.
-
Confirm the panel has:
-
a Victim binding
- optional Attacker binding
DotEffecton the victimHotEffecton the victim- Use Clear All to clear both DOT and HOT stacks if needed.
- Open the DOT tab.
-
Configure:
-
Per Tick
- Interval
- Duration
- Mode: Refresh, Additive, or Independent
- Max Stacks
- Toggle Unscaled Time if you want DOT timing to use unscaled time.
- Click Apply DOT.
-
Watch:
-
current mode
- stack count
- shared time left / next tick in shared modes
- per-stack timers in Independent mode
- event feedback toasts
- Click Clear DOT to remove DOT stacks.
- Open the HOT tab.
-
Configure:
-
Per Tick
- Interval
- Duration
- Mode: Refresh, Additive, or Independent
-
Max Stacks
-
Toggle Unscaled Time if you want HOT timing to use unscaled time.
- Click Apply HOT.
-
Watch:
-
current mode
- stack count
- shared time left / next tick in shared modes
- per-stack timers in Independent mode
-
event feedback toasts
-
Click Clear HOT to remove HOT stacks.
- Reapply effects multiple times to compare stacking modes.
Failure Behaviour¶
-
Missing Victim
-
Meaning: The panel has no object to resolve DOT/HOT effects from.
-
Fix: Assign a GameObject with
DotEffectand/orHotEffect. -
Missing DOT + HOT
-
Meaning: The victim has neither effect component.
-
Fix: Add both components or choose a fully wired victim.
-
Missing DOT
-
Meaning: The DOT tab cannot run.
-
Fix: Add
DotEffectto the victim. -
Missing HOT
-
Meaning: The HOT tab cannot run.
-
Fix: Add
HotEffectto the victim. -
DOT Blocked
-
Meaning: DOT needs a victim with
DotEffect. -
Fix: Add
DotEffectto the victim or choose a valid DOT target. -
HOT Blocked
-
Meaning: HOT needs a victim with
HotEffect. -
Fix: Add
HotEffectto the victim or choose a valid HOT target. -
No active DOT stacks
-
Meaning: No DOT application is currently running.
-
Fix: Click Apply DOT.
-
No active HOT stacks
-
Meaning: No HOT application is currently running.
-
Fix: Click Apply HOT.
-
Apply/Clear unavailable outside Play Mode
-
Meaning: Effect mutation requires Play Mode.
-
Fix: Enter Play Mode.
-
HOT tick requested but HP does not visibly increase
-
Meaning: HOT tick events report requested/accepted healing, not guaranteed effective HP restored.
- Fix: Check current HP, max HP, caps, death state, locks, or healing rules.
Behind The Scenes¶
DotEffect— owns DOT configuration, ticking, stacks, timers, and eventsHotEffect— owns HOT configuration, ticking, stacks, timers, and eventsDotEffect.Configure(...)— updates DOT public settingsHotEffect.Configure(...)— updates HOT public settingsDotEffect.Apply(attacker)— applies DOT using optional attacker contextHotEffect.Apply()— applies HOTDotEffect.ClearAll()— clears all DOT stacksHotEffect.ClearAll()— clears all HOT stacksDotEffect.StackMode— controls DOT stacking behaviourHotEffect.StackMode— controls HOT stacking behaviourGetIndependentSnapshot(...)— reads independent stack timers for displayStarted— effect became activeStopped— effect ended or was clearedTickApplied— tick event firedStacksChanged— stack count changed
The panel uses public DOT/HOT APIs only. It does not access internals, use reflection, or fake stack state.
Key Takeaway¶
DOT and HOT use the same stacking model, but one applies damage over time and the other requests healing over time.
Refresh means one stack with a refreshed timer. Additive means multiple stacks sharing one timer. Independent means separate stack instances with separate timers.
Once the stack mode is clear, DOT/HOT behaviour becomes predictable instead of mysterious wee t