Skip to content

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 DotEffect and HotEffect are 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:

  • DotEffect configuration
  • HotEffect configuration
  • 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

  1. Enter Play Mode.
  2. Open the Setup tab.
  3. Confirm the panel has:

  4. a Victim binding

  5. optional Attacker binding
  6. DotEffect on the victim
  7. HotEffect on the victim
  8. Use Clear All to clear both DOT and HOT stacks if needed.
  9. Open the DOT tab.
  10. Configure:

  11. Per Tick

  12. Interval
  13. Duration
  14. Mode: Refresh, Additive, or Independent
  15. Max Stacks
  16. Toggle Unscaled Time if you want DOT timing to use unscaled time.
  17. Click Apply DOT.
  18. Watch:

  19. current mode

  20. stack count
  21. shared time left / next tick in shared modes
  22. per-stack timers in Independent mode
  23. event feedback toasts
  24. Click Clear DOT to remove DOT stacks.
  25. Open the HOT tab.
  26. Configure:

  27. Per Tick

  28. Interval
  29. Duration
  30. Mode: Refresh, Additive, or Independent
  31. Max Stacks

  32. Toggle Unscaled Time if you want HOT timing to use unscaled time.

  33. Click Apply HOT.
  34. Watch:

  35. current mode

  36. stack count
  37. shared time left / next tick in shared modes
  38. per-stack timers in Independent mode
  39. event feedback toasts

  40. Click Clear HOT to remove HOT stacks.

  41. 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 DotEffect and/or HotEffect.

  • 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 DotEffect to the victim.

  • Missing HOT

  • Meaning: The HOT tab cannot run.

  • Fix: Add HotEffect to the victim.

  • DOT Blocked

  • Meaning: DOT needs a victim with DotEffect.

  • Fix: Add DotEffect to the victim or choose a valid DOT target.

  • HOT Blocked

  • Meaning: HOT needs a victim with HotEffect.

  • Fix: Add HotEffect to 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 events
  • HotEffect — owns HOT configuration, ticking, stacks, timers, and events
  • DotEffect.Configure(...) — updates DOT public settings
  • HotEffect.Configure(...) — updates HOT public settings
  • DotEffect.Apply(attacker) — applies DOT using optional attacker context
  • HotEffect.Apply() — applies HOT
  • DotEffect.ClearAll() — clears all DOT stacks
  • HotEffect.ClearAll() — clears all HOT stacks
  • DotEffect.StackMode — controls DOT stacking behaviour
  • HotEffect.StackMode — controls HOT stacking behaviour
  • GetIndependentSnapshot(...) — reads independent stack timers for display
  • Started — effect became active
  • Stopped — effect ended or was cleared
  • TickApplied — tick event fired
  • StacksChanged — 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