Pick the slot it would replace and paste the new item — drag its screenshot in, or type the lines. Your saved gear above stays untouched.
The base of the chain. Weapon damage and Skill% set the size of the hit; main stat is its own independent multiplier that nothing else dilutes.
Coefficients change between patches, so don't trust any hardcoded number — including mine.
Hover your main stat on the character sheet. It says +X% Skill Damage.
Type both values here and this gives you the coefficient that is true right now, for
your patch.
One shared pot: Close, Distant, Core Skill, Damage to X, Damage vs X, most tempers, weapon implicits, and the additive half of paragon. This is the only place diminishing returns live. At +2000% in the pot, another +60% Close Damage is worth 2.85%.
A +60% bonus you only meet 25% of the time averages to +15% additive. Set uptime honestly or the tool lies to you.
These are enumerated as real branches, not averaged. That matters: [+]Crit Damage sits inside the additive pot but only counts on a crit, and is then multiplied by the crit-only multipliers. That interaction is why "+150% Crit Damage" loses to "+100% unconditional additive" at 40% crit chance.
The Overpower tooltip hides a large chunk of your real bonus. You get +1% Overpower Damage for each 1% of current life above base life, plus +1% for each 1% of Fortified life — neither is on the tooltip. Add those into the field above.
The word Multiplier in the affix text is the tell. x56% Critical Strike Damage
Multiplier sums with others of its kind and then applies once. x56% Critical Strike
Damage without that word is a separate global multiplier — that one goes in panel 04.
Baselines are built in and cannot be raised by anything: a crit carries an inherent x50%, a Vulnerable target an inherent x20%.
Aspects, uniques, paragon rare and legendary nodes, skill mods. Each one multiplies independently, so these never dilute each other. Set the condition to crit or vulnerable to route the multiplier into that branch — then leave its uptime at 100, because the branch already handles how often it fires. other is uptime-averaged.
Two separate caps of 100% each. They add — they do not multiply. Anything past a cap is
thrown away. ApS = WeaponApS × (100% + min(Cap1,100%) + min(Cap2,100%))
The bar shows how much damage you would lose if that link vanished entirely. A long bar means that link is carrying you. A short bar means the next point you spend there is nearly wasted.
Rolls carry roughly 80–120% weapon variance compounded with 90–110% skill variance, so a single hit swings from about 72% to 132% of this. The number above is the average, which is the only thing worth comparing gear on.
Marginal gain at your current totals — this is the entire point of the tool. The same +60% Close Damage is a 60% gain on a fresh character and a 2.85% gain at +2000% additive.
| Stat | Per point | Per typical roll |
|---|
Attack-speed weight here is the naive continuous value. Real DPS only moves when you cross an animation breakpoint. Check your skill's breakpoint table before you buy attack speed — between two breakpoints it is worth exactly zero.
List only the affixes that differ. A is what you are wearing, B is the drop. Values are deltas on top of the character above — so if the new ring loses the old ring's 40% crit damage, that 40% goes on side A.
| Side | Affix | Value | Worth on its own |
|---|
If the swap changes attack speed, continuous ApS lies to you — DPS only moves at animation
breakpoints. Look up the frame counts for your skill before and after, and the comparison will
use framesA ÷ framesB instead.
Damage = AvgWeaponDamage
× Skill%
× (1 + MainStat / ClassCoefficient)
× E[ (1 + Σ[+]additive + branch additives) × branch multipliers ]
× Π(1 + each [x] global multiplier × its uptime)
× (1 + Σ summed multipliers in the active category)
× (1 − EnemyDamageReduction)
DPS = Damage × WeaponApS × (1 + min(Cap1,100%) + min(Cap2,100%))
E[...] enumerates all 8 combinations of crit / vulnerable / overpower
rather than averaging them, because [+]Crit Damage lives inside
the additive pot but only pays out on a crit.
crit branch : p = crit chance, +[+]CSD, × 1.5 × (1+ΣCSD mult) × Π(crit globals)
vulnerable branch : p = vulnerable uptime,+[+]Vuln, × 1.2 × (1+ΣVuln mult) × Π(vuln globals)
overpower branch : p = overpower chance, +[+]OP, × (1 + 0.5 × currentLife/maxLife)
Flat-damage effects (X'Fal's, Thorns) replace AvgWeaponDamage × Skill% with their
flat number. Model those by setting Skill% to 100 and both weapon min and max to the flat value.
Main stat still applies to them.
These are Maxroll's published worked examples, run as real assertions against the same
compute() the rest of this page uses. They run automatically every time you open the
file. If a change to the math ever breaks one, a red banner appears at the top of the page —
you don't have to remember to check. Each test builds its own character from scratch, so running
them never reads or changes the numbers you typed above.
| Check | Expected | Got | Result |
|---|
compute() was wrong, or the game changed and the source needs re-reading — in that
order of likelihood. Don't edit the expected value to make the light go green.