← All scenarios
PHYS-001autoAttack

Refine breakpoint sweep — weapon level 3 from +0 to +16

The most important test of refine math (D-008). Sweeps refine 0,4,7,8,10,15 on a weapon-level-3 weapon, expects strictly monotonic damage AND a visible inflection at the safe-refine boundary (+7) where over-refine bonus kicks in. If your library handles refine as a simple linear addition, this scenario reveals it.

refineFormulaoverRefineBonusweaponLevel3monotonicity
Action
autoAttack
Auto-attack in expected mode
mode
expected
context.mapType
pve

Actors

Knight
player · knight · Lv80
attacker
Primary stats
str
80
agi
30
vit
60
int
1
dex
40
luk
10
Equipment
  • mainhand: claymore · sword_2h · ATK 180
Stable training dummy
monster · Lv80
defender
formlessneutral 1mediumnormal
HP 999999 / 999999
Hard DEF 50
Hard MDEF 0
Expected output
From the scenario fixture. Numerical values marked as null are placeholders pending rAthena verification.
hit

Run each variant separately. Verify against rAthena. Damage should be: monotonically increasing; second-difference (delta of deltas) should jump UP between +7 and +8 (over-refine bonus engages); +15 should be dramatically higher than +10.

Show full expected JSON
{
  "propertyAssertions": [
    "damage(+0) < damage(+4) < damage(+7) < damage(+8) < damage(+10) < damage(+15)",
    "(damage(+8) - damage(+7)) > (damage(+4) - damage(+3))",
    "(damage(+15) - damage(+10)) > 5 * (damage(+10) - damage(+8)) / 2"
  ]
}

Computed: DamageResult

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

Outcome
hit
1 hit · 438 damage
438
Pipeline breakdown
D-003 steps 2–13
WeaponratioATK251
× size × skill251
× (1 + 0.0% ATK%)251
+ StatusATK (195)446
× 1.00 element446
× (1 + 0.0% race/elem/size/class)446
crit none446
− 0 hard DEF446
− 8 soft DEF438
× (1 − 0.0% taken%)438
+ MasteryATK (0)438
floor + min(1)438
Inputs
From attacker / defender ResolvedStats
StatusATK195
WeaponATK251
EquipATK0
MasteryATK0
Size mult1.00×
Element mult1.00×
Race%0.0%
Element%0.0%
Size%0.0%
Class%0.0%
Taken%0.0%

Hits (1): hit 438

Variant matrix · 6 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 weaponRefine
Highest in row is highlighted emerald; lowest rose. Hover any cell to see the full variant label.
+0+4+7+8+10+15
438459490503529594
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).
  • damage(+0) < damage(+4) < damage(+7) < damage(+8) < damage(+10) < damage(+15)
    438 < 459 < 490 < 503 < 529 < 594
  • (damage(+8) - damage(+7)) > (damage(+4) - damage(+3))
  • (damage(+15) - damage(+10)) > 5 * (damage(+10) - damage(+8)) / 2