How damage works
Diablo IV's damage formula hides behind skill tooltips, but the community-mapped shape is stable: a handful of multiplier buckets. Learn the buckets and half of build optimization becomes arithmetic.
Quick answer
Damage = weapon × skill% × (1 + main stat/1000) × [1 + vulnerable bonus] × [1 + crit bonus] × [1 + Σ additive affixes]. The bracketed groups are buckets — they multiply each other, while bonuses inside the additive bucket only add to each other. Reproduce any build in the damage calculator.
The buckets
- Base: weapon damage × the skill's weapon-damage percentage. Everything else multiplies this.
- Attribute: your main stat adds +0.1% per point over 100 — a personal, always-on bucket.
- Vulnerable: its own multiplier when the enemy is vulnerable; the affixes that grow it live here.
- Critical: its own multiplier on crits only — which is why crit chance and crit damage feed each other.
- Additive: every "% damage" affix (core skills, close, CC'd, elite…) shares one bucket and adds together. This is the bucket that disappoints.
Why additive damage feels weak
+20% additive with 200% already in the bucket: new bucket = 2.2/2.0 → ×1.10 damage total +20% crit damage with 150% in its bucket: new bucket = 1.7/1.5 → ×1.133 damage total
Same affix number, bigger result — because crit's bucket was smaller. That's the whole game: grow small buckets, not big ones. The stat priority comparator automates exactly this decision.
Worked example
1200 weapon damage skill at 180%, 800 main stat, 120% additive, 60% vuln bonus, 150% crit bonus: base ×1.80×1.80 = 3888; additive ×2.2; vulnerable ×1.8; crit ×3.0 → a full proc hits ~38,700, and the calculator shows the expected hit weighted by your crit chance and vulnerable uptime.
What the model deliberately ignores
- Enemy defense and level scaling (separate mitigation layer).
- Lucky Hit, Fortify interactions and aspect-specific conditionals — parameterize them into the additive bucket if they're uptime-based.
- Bucket-boundary changes Blizzard makes between seasons — flagged [VERIFY], not asserted.