🐾PurrwikimaniaSword x Staff, datamined

Combat mechanics

Where your next point goes

This evaluates the whole of BattleFormulaHandler.Damage for a sheet you type in, then differentiates it with respect to every stat that touches the result. It answers which stat buys the most damage at your current numbers — not in general, because there is no answer in general.

Your sheet

The enemy

The hit

Defaults are a real Champion-era sheet. Everything is computed in your browser; nothing is stored or sent. Your entries stay on this device.

—expected damage per hit, averaged over crit and block

Per +1,000 points

The stats you buy in raw points. These compare directly with each other.

Per +1 percentage point

The stats printed as percentages. These compare with each other — but not with the chart above. A thousand ATK and one point of Crit DMG are not the same purchase, and until the equipment tables are on this site there is no honest exchange rate between them. Read each chart within itself.

Crit Rate against Crit DMG

Crit DMG absolutely makes crits hit harder — it is the entire size of the bonus. The question is narrower: given one more percentage point, which one? Expected damage carries 1 + p x (multiplier - 1), so a point of rate is worth the whole bonus while a point of the bonus is worth only the fraction of hits that crit. They meet at p = 1 / (multiplier - 1). That is a statement about equal percentage points, not about which stat matters.

Where Mastery stops winning

Elemental Mastery divides by the enemy's Base Elemental Resistance and then sits inside 1 + affinity + mastery, so it saturates. ATK appears twice — once as the coefficient's base, once in ATK/(ATK+DEF) — and decays only as 1/ATK. They cross.

The expression being evaluated. In the order Damage() applies it:

base   = (ATK x coef + flatDamage) x ATK/(ATK+DEF)
elem   = (1 + affinity/foeBaseElementReduce + mastery/foeBaseElementResistance)
       / (1 + foeAegis/yourBaseElementAdd + foeElementRES/yourBaseElementMastery)
pct    = (1 + DMGBoost + PvEBonusDMG) / (1 + foeDMGRES + foePvEDMGRES)
p      = 0.05 + CritRate - foeCritRES              crit chance
m      = max(1.3, 1 + CritDMG - foeCritRES)        crit multiplier
b      = foeBlockRate - Accuracy/BaseBlockAvoid    block chance
E[mult]= (1-b)((1-p) + p x m) + b / max(1.5, 1 + foeBlockEfficiency)
D      = base x elem x pct x E[mult] x levelOffset

Block cancels crit — the roll sets IsCrit = false whenever it blocks, so the two are exclusive and the expectation above is not a product of independent factors.

Crit RES is subtracted twice: once from the crit chance and again from the multiplier. A high-Crit-RES target both crits you less and crits you softer.

Two floors the game enforces: a crit lands at no less than 1.3x (MinCritPowerPercent), and a block divides by no less than 1.5x (MinBlockValuePercent).

The level offset is fight_level_offset_damage: 4% a level, flat at 16% from four levels up. Above the target you multiply by it, below you divide — so the same gap costs more than it pays.

Left out on purpose: the flat additive block (DmgAdd, FixedStatusDmgAdd, the hidden flat CritPower, BlockValue), which is floored at -90% of base damage; dodge and blinding, which zero a hit rather than scale it; and the profession-versus-profession scalars, which multiply everything equally and so cannot change the ranking.