← All scenarios
STATUS-004computeEffectTick

DoT dynamic re-evaluation — Poison tick changes when target's MaxHP changes

Per D-004, default snapshot=false means DoT ticks recompute from current state every tick. Two sub-tick computations: same Poison on the same target, but a buff that raises VIT (and therefore MaxHP) is active in the second. Tick damage must differ.

DoTdynamicSnapshotsnapshotPolicyDefault
Action
computeEffectTick
Compute tick #2 of effect poison
effectId
poison
atTick
2
context.mapType
pvp

Actors

Poisoned target
player · Lv50
defender
Primary stats
str
30
agi
30
vit
40
int
30
dex
30
luk
10
demihumanneutral 1mediumnormal
Active effects
  • poison
HP 3200 / 3200
Hard DEF 20
Hard MDEF 10
Expected output
From the scenario fixture. Numerical values marked as null are placeholders pending rAthena verification.

Run both variants. In variant B, add a hypothetical VIT+30 buff (raising MaxHP) to activeEffects. tickDamage(B) MUST be strictly greater than tickDamage(A). If equal, the library is snapshotting Maxhp at apply time instead of re-reading. snapshot=false is the default per D-004.

Show full expected JSON
{
  "propertyAssertions": [
    "tickDamage(no buff) < tickDamage(with VIT buff)",
    "ratio approximately matches the ratio of MaxHP values"
  ]
}

Computed: EffectTickResult

Server-evaluated by calculateEffectTick() from @ro/core.

Damage at tick 2
poisonpoisonmisc
Per-tick value; caller decides whether to apply.
48
Formula evaluation
D-015 tick pipeline
formula result48
after stacks48
floor + max(0)48

Stack-aware formulas (e.g. stacks * floor(maxHP * 0.005)) handle scaling themselves; the library does not auto-multiply.

Formula scope
Dynamic — read live from the carrier
maxHP3,200
currentHP3,200
maxSP0
currentSP0
baseLevel50
stacks1
atTick2
str30
agi30
vit40
int30
dex30
luk10

Variant matrix · 2 cells

Each cell re-applies the variant's overrides to the base scenario and re-runs the same pipeline that produced the single result above.

Sweep over addVitBuff
Highest in row is highlighted emerald; lowest rose. Hover any cell to see the full variant label.
offon
Property assertions
Pattern-matched checks from the scenario's expected. ⊙ marks assertions the parser doesn't recognize (the raw string is shown so devs can verify by eye).
  • tickDamage(no buff) < tickDamage(with VIT buff)
  • ratio approximately matches the ratio of MaxHP values