← All scenarios
STATUS-003computeEffectTick

stack_intensity policy — 5 stacks of a bleed-style DoT scale damage by stack count

Tests that Effects with stackingPolicy='stack_intensity' use the stacks field to multiply Modifier values OR tick damage. This scenario uses tick damage scaling. Demonstrates that 5 stacks of bleed deal 5x the per-stack damage.

stackingPolicystackIntensityDoTstackCountScaling
Action
computeEffectTick
Compute tick #3 of effect bleed
effectId
bleed
atTick
3
context.mapType
pvp

Actors

Player with 5 bleed stacks
player · Lv60
defender
Primary stats
str
40
agi
40
vit
40
int
30
dex
40
luk
20
demihumanneutral 1mediumnormal
Active effects
  • bleed×5
HP 3000 / 4500
Hard DEF 20
Hard MDEF 10
Expected output
From the scenario fixture. Numerical values marked as null are placeholders pending rAthena verification.
tickDamage: pending

tickDamage = stacks(5) * floor(4500 * 0.005) = 5 * 22 = 110. Verify the library's expression evaluator handles 'stacks' as a bound variable.

Show full expected JSON
{
  "breakdown": {
    "stacks": 5,
    "perStackDamage_expectedRange": [
      20,
      25
    ],
    "_assertion": "tickDamage / stacks should equal the per-stack damage. If it equals just per-stack damage (not multiplied), stack scaling isn't wired."
  }
}

Computed: EffectTickResult

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

Damage at tick 3
bleedneutralmisc×5 stacks
Per-tick value; caller decides whether to apply.
110
Formula evaluation
D-015 tick pipeline
formula result110
after stacks110
floor + max(0)110

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
maxHP4,500
currentHP3,000
maxSP0
currentSP0
baseLevel60
stacks5
atTick3
str40
agi40
vit40
int30
dex40
luk20