Concepts → ARPG additive vs multiplicative
Why +50% additive damage can be much weaker than
+50% multiplicative in D4 / PoE / Last Epoch
The single most important math literacy gap in ARPG build optimization. Two stats both look like "+50% damage" on the tooltip, but one of them goes into a bucket that adds with all your other "+X% damage" stats, and the other is its own multiplicative multiplier. The gap between them widens the more additive damage you've already stacked.
The damage formula
D4, PoE, Last Epoch, and Grim Dawn all use variants of the same multi-bucket damage formula:
final = base × (1 + sum_of_additives) × (1 + mult_a) × (1 + mult_b) × … × crit_avg
Where:
- All "+X% damage" stats SUM together into one big additive bucket, then multiply the base ONCE. Two +50% additive stats gives × (1 + 100%) = × 2.0, not × (1 + 50%) × (1 + 50%) = × 2.25.
- Each multiplicative bucket multiplies separately. Vulnerable, Overpower, Berserk, "more" damage in PoE, weapon-class multipliers, skill multipliers — each is its own factor. Two +50% multiplicative stats give × 1.5 × 1.5 = × 2.25.
The two stat types look identical on the tooltip — both say "+50% damage" — but they go into different buckets and give different total damage. This is the math literacy that separates new ARPG players from optimized builds.
The marginal-value comparison
Marginal value of +1% additive damage, given
you currently have A% additive and M
composed multiplier:
∂final/∂A = (1/100) × base × M
Marginal value of +1% multiplicative damage:
∂final/∂(mult) = (1/100) × base × (1 + A/100) × M
The ratio gives you the "is +1% multiplicative worth more than +1% additive" answer:
mult_marginal / add_marginal = 1 + A/100
Multiplicative is always at least as good as additive at the marginal point, with the gap widening linearly in your current additive stacking:
- At 0% additive (rare in practice): they're identical.
- At 100% additive: multiplicative is 2× as good.
- At 200% additive (common endgame): multiplicative is 3× as good.
- At 500% additive (high-end stacking): multiplicative is 6× as good.
Worked example — the classic stacking trap
Two builds, both with 100 base damage, both with 30% crit / 250% CSD, both nominally claiming "+200% damage" on the tooltip. The difference: one has it all in additive, the other has it split across multiplicative buckets.
| Build | Additive | Multiplicative buckets | Damage formula | Expected (per hit) |
|---|---|---|---|---|
| All-additive | +200% | none | 100 × 3.0 × crit_avg | 525 |
| Mixed (50/50) | +100% | +50% × +50% | 100 × 2.0 × 1.5 × 1.5 × crit_avg | 787 |
| All-multiplicative | +0% | +50% × +50% × +50% × +50% | 100 × 1.5⁴ × crit_avg | 886 |
Where crit_avg = 1 + 0.3 × (2.5 − 1) = 1.45 for all
three (same crit setup).
Same "+200% damage" on the tooltip, 69% damage difference between worst and best. This is the lesson: where the +X% lives matters more than the +X% itself.
Live engine: compose the math yourself
Engine grammar: boost N% postfix on a percentage
attack. Each occurrence adds another multiplicative bucket;
multiple boost instances compose multiplicatively.
Use it to encode separate multiplicative buckets in your build:
| Build context | Expression | Strike URL |
|---|---|---|
| All-additive (+200% lumped) | 300 @ hit 100 crit 30 csd 250 |
/strike/300~hit100crit30csd250 |
| Mixed (+100% additive, +50% × +50% mult) | 200 @ hit 100 crit 30 csd 250 boost 50 boost 50 |
/strike/200~hit100crit30csd250boost50boost50 |
| All-multiplicative (four +50% buckets) | 100 @ hit 100 crit 30 csd 250 boost 50 boost 50 boost 50 boost 50 |
/strike/100~hit100crit30csd250boost50boost50boost50boost50 |
Note: the base damage in each row is set so the all-additive
total matches the table above (300 = 100 × 3.0; 200 = 100 × 2.0;
100 = 100 × 1.0). boost 50 means "+50% multiplicative"
= × 1.50.
The build heuristic
When choosing between two affixes that both look like "+X% damage":
- Read the tooltip carefully. Multiplicative buckets are usually flagged ("[x] increased damage", "more damage", or named multipliers like Vulnerable / Overpower). Additive damage stacks read as plain "+X% damage".
- Default to multiplicative when in doubt. Multiplicative is always at least as good as additive at the marginal point, and the gap grows with your current additive stacking — which means the more endgame your build is, the bigger the gap.
- Track your additive total. At 0% additive, +1% additive = +1% multiplicative. At 200% additive (endgame baseline), +1% multiplicative is worth 3× as much as +1% additive. Decisions on affix priority shift accordingly.
- New multiplicative bucket > more on existing bucket. Adding +25% to a separate multiplicative bucket (× new factor) is always better than adding +25% to an existing one (× same factor diluted), all else equal.
Game-specific notes
- Diablo 4: Vulnerable, Overpower, Berserk are named multiplicative buckets. "+X% damage" affixes are usually additive unless the affix specifies a condition (e.g., "+X% damage to Crowd Controlled" is multiplicative). Tempering and Mythic Uniques often add new multiplicative buckets.
- Path of Exile: "increased" damage is additive; "more" damage is multiplicative. The naming convention is the literacy bar — if the gem text says "more damage", it's its own bucket.
- Last Epoch: "Increased" is additive, "Added Damage" buckets are mostly multiplicative depending on skill base. Skill-specific multipliers stack as separate buckets.
- Grim Dawn: Damage Modified, weapon damage scaling, and Conversion are the main multiplicative buckets; + damage is mostly additive within a damage type.
What this pillar covers (and what it doesn't)
Covers: the closed-form additive-vs-multiplicative breakeven and how it shifts with current additive stacking. Live engine for any number of multiplicative buckets composed together with crit math.
Doesn't cover yet:
- Lucky Hit / proc gates: independent per-hit rolls that gate secondary effects. Engine doesn't model proc gates yet.
- Damage Over Time (DoT): bleed / poison / burn as separate damage stacks with tick rates. Out of scope for per-hit damage analysis.
- Tooltip DPS calculation: attack speed × uptime × proc rates. The math here is per-hit; sustained DPS layers on top.
- Defensive math: armor mitigation curve, EHP, block / dodge / parry. Tracked separately as defensive pillars.