d2jsp
Log InRegister
d2jsp Forums > Diablo II > Diablo 2 Discussion > Strategy & Guides > Dps Calculation, Dual Wielding Help > D2
Add Reply New Topic New Poll
Member
Posts: 689
Joined: Jul 12 2010
Gold: 328.00
May 7 2025 08:18am
Pretty sure the answer is somewhere, but since I was unable to find it, I'll trust you kind folk to help me out :)

A few questions in looking to clarify

1) How is overall avarege damage is calculated during a melee attack? In which order the modifiers are checked? How they interact with each other?

  • Weapon base damage
  • Weapon %ED
  • Other item %ED
  • Plain +DMG (In such a weapon as Grief, for which the +DMG do not appear cleary anywhere)
  • Char Str
  • Auras
  • Deadly Strike, Crushing Blow, Open Wounds, etc...


2) How the number of attacks per second is calculated? In which order the modifiers are checked?

  • Weapon base attack speed
  • Weapon IAS
  • Other item IAS
  • Auras, etc...


3) How dual wielding comes up in all this regarding attack speed, deadly strike, etc...?

  • I've heard several contradictory things...
  • +15IAS bonus due to dual wielding for instance
  • Only weapon IAS is taken into account separetly and other IAS modifiers are useless


4) How all this interacts with diferent melee skill (WW, Frenzy...)

If you already know about a detailled guide about please just lead me to it :)

tks.
Member
Posts: 74,612
Joined: Aug 3 2013
Gold: 3,226.11
May 13 2025 11:50am
Pretty sure the answer is somewhere, but since I was unable to find it, I'll trust you kind folk to help me out :)

A few questions in looking to clarify

1) How is overall avarege damage is calculated during a melee attack? In which order the modifiers are checked? How they interact with each other?
  • Weapon base damage
  • Weapon %ED
  • Other item %ED
  • Plain +DMG (In such a weapon as Grief, for which the +DMG do not appear cleary anywhere)
  • Char Str
  • Auras
  • Deadly Strike, Crushing Blow, Open Wounds, etc...


2) How the number of attacks per second is calculated? In which order the modifiers are checked?
  • Weapon base attack speed
  • Weapon IAS
  • Other item IAS
  • Auras, etc...


3) How dual wielding comes up in all this regarding attack speed, deadly strike, etc...?
  • I've heard several contradictory things...
  • +15IAS bonus due to dual wielding for instance
  • Only weapon IAS is taken into account separetly and other IAS modifiers are useless


4) How all this interacts with diferent melee skill (WW, Frenzy...)

If you already know about a detailled guide about please just lead me to it :)

tks.


1.
(base weapon damage + plain + DMG) x Weapon ED% ) x global ED% (which is all ED% Off weapon including gear + skills + Auras + str/dex modifiers) x double damage chance (which is Critical Strike + (Deadly Strike / 100) * (100 - Critical Strike))

2.
Base weapon attack speed (also known as WSM), then modified by any eIAS (known as environmental IAS, which is from things such as Fanatacism and burst of speed) minus any eIAS negative modifiers from things such as slow (golem slow, decripfy, opponent hitting you with slow items such as arach or cleglaws). Then this number is what is calculated for how much IAS you need to reach the variety of breakpoints.

3.
each weapon in dual wielding is only affected by + ias on that particular weapon, and does not receive +ias that is on the other weapon, but both receive ias just like in #2.

4.
idk about frenzy as its not a widly used skill but go to the link below for it to calculate the variety of ias bps for frenzy.
https://warren1001.github.io/IAS_Calculator/





due to how d2 functions, DPS isnt a very good calculation for diablo 2 to understand what is actually going on in terms of your damage output.

This post was edited by CoooleyNeedsRogaine on May 13 2025 11:53am
Member
Posts: 22,692
Joined: Sep 3 2006
Gold: 40,582.00
May 13 2025 03:23pm
A typical attack, and we do average damage calc here:
((AllMin+AllMax)/2+griefDamage) * (1+((GearEd%+Statbonus+SkillBonus+Aurabonus+SpecialBonus)/100))

AllMin = Displayed wepon min damage + other min damage sources.
AllMax = Same as AllMin only max damage.
SpecialBonus = % to undead/demon
Skillbonus = depends on wepon type. Google it.
GriefDamage = damage listed the same way as those 350-400 in grief. Only relevant for some scepters.

For deadly strike/critic strike for average purposes you should just add:
* (1+(ChanceToDouble/100)) in the end.
The chance of actually landing a double damage gets more complex once deadly strike and critic strike is combined. Which it usuallly is. And even more complex if 2 different critic chances such as usage of mastery/critic + peace.
I do not remember the formula now.

There are deviants ofc:
* Smite: Not affected by wepon damage, but shield and holy shield instead. Not affected by min/max damage adds. Else same formula. Also not affected by critic/deadly strike.
* Dragon talon, cba list it now. Im on phone and its long. Not affected by critic/deadly.
* Converted damage skills such as vengance, berserk, dragon tail.
Theese use the regular formulas(kick one for dtail) and are then converted with the listed %.
So sum of physical damage * (1+(convert%/100))…

Attack speed:
Diablo runs in 25frames system. Which means there is 25 frames in 1 second.
So to find attack per sec, based on frames you do this:
25/fpa

Fpa has loads of different formulas, and i cannot list them all here on phone, but i can give examples and pointers:

Ias = the ones you see in gear. Nerfed feature.
SkillIas = The one you see in skills.
Wsm = the base wepon speed. The lower the better.
Slow = Listed in skills and items. 50% cap from each source.
Eias = Effective Increased attack speed. This is the result.
Eias is capped at 75 for all but werebear/werewolf.
Dual attacks suchs as and limited to:
Dragon claw
Frenzy
Double swing
Uses something called velocity increase, it basicly world like eias, but the formula is different. I can update when on pc. I think the cap here is either 150
Or 200.

Formula for EIAS = 120*ias/(120+ias)+SkillIas-WSM-Slow

Eias is then again used to find ur fpa.
Typical example:
BaseFrame * 256 / (animationspeed+(EIAS/100)+100) -1

Animationspeed is usually 256 as well, but there are deviants. Such as assasins melee attacks with claws, including wirlwind has 208 animation speed if I remember correct. Shapers used to have different animation
Speed and vampire(trang oul) still do.

Baseframe is listed on libaries or in browsed d2 files. Same is animation speed.

A serial attack on the other hand, is quite different.
They use Hitframe instead of baseframe. And they do not inlcude the -1 at the end.
They often come with a rollback feature as well, which speeds up to he attack even more. And the last hit use The BaseFrame again.

Baseframe is kinda the full attack animation. From ur character starts to attack until the wepon/attack is back in its neutral position. Meanwhile hitframe is when the attack actually happens or hit. Hitframe is often around half of baseframe, but not always. This basicly means the full animation is ran, the next attack starts when you hit, and ur not entering neutral frame inbetween the attacks in the serie. The -1 on base attacks are used to smoothen out the animation.

And rollback is also not the same:
Strafe: 50% if i remember correct.
Zeal: 80% i think
Fury: 100%

Sequence attacks are different.
They attack in a certain sequence. Example here is jab.
Sequence attack has 30wsm penalty, which is why there are 280ias breakpoint. Due to reaching 75 eias cap later.

Well, this is all i can tell you about that from the top of my mind on my phone.

It is also nice to know that damage reductions/absorb etc comes in a certain lineup. But its mostly relevant to es sorc. It is also nice to know that crushing blow happens before direct damage, and that it pierce es and bone armor.
Member
Posts: 22,692
Joined: Sep 3 2006
Gold: 40,582.00
May 15 2025 02:51am
Okay so i will update a litte:

AttackSpeed:

EIAS General:
EIAS = FLOOR(120*ias/(120+ias)+SkillIas-WSM-SLOW)

Assassin:
FPA trayplaying = CEILING(16*256/FLOOR(256*(100+EIAS)/100))-1
FPA Kick = CEILING(13*256/FLOOR(256*(100+EIAS)/100))-1
FPA KickSerial = CEILING(4*256/FLOOR(256*(100+EIAS)/100))
FPA Wirlwind = RoundUp(6*256/floor(208*(100+EIAS)/100))-1
Notes: Wirlwind has do be done individual each wep.

Dragon Claw:
VelocityIncrease/EIAS = FLOOR(70-WSM+SKILLIAS-SLOW+(120*IAS/(120+IAS)))
FPA = CEILING(256*11/FLOOR(208*(100+EIAS)/100))/2
Notes: WSM is average between the 2 claws.

Amazon:
FPA GA and general bow shot = CEILING(14*256/FLOOR(256*(100+EIAS)/100))-1
Action frame bow = CEILING(6*256/FLOOR(256*(100+EIAS)/100)) <--- Used for strafe, together with rollback.
FPA Java stabbing = CEILING(13*256/FLOOR(256*(100+EIAS)/100))-1
FPA JAB 1 handed = CEILING(18*256/FLOOR(256*(100+EIAS-30)/100))/3
FPA JAB 2 handed = CEILING(21*256/FLOOR(256*(100+EIAS-30)/100))/3

Amazon strafe:
Baseframe bow: 14
Actionframe bow: 6

Strafe Rollback: 50%

InitalHit:
=CEILING((ActionFrame-0)*256/FLOOR(256*(100+EIAS)/100;1);1)

StartFrameMiddleHits:
=FLOOR(FLOOR(0+((InitialHit*FLOOR(((100+EIAS)*256)/100;1))/256);1)*((100-Rollback)/100);1)

MiddleHits:
=CEILING((ActionFrame-StartFrameMiddleHits)*256/FLOOR(256*(100+EIAS)/100;1);1)

StartFrameLastHit:
=FLOOR(FLOOR(StartFrameMiddleHits+((MiddleHits*FLOOR(((100+EIAS)*256)/100;1))/256);1)*((100-Rollback)/100);1)

LastHit:
=CEILING((BaseFrame-StartFrameLastHit)*256/FLOOR(256*(100+EIAS)/100;1);1)-1

Which gives me 4/2/6 at 75 EIAS(actually 58 EIAS break).

But thanks to limitation, its only visual. So real speed would be 4/3/6:
Code
50 and 58 EIAS bow attack rates only apply to the displayed animation for following attacks: they actually continue to be 3 frames apart, and this interval is never reduced to 2 frames. When Strafe is fired continuously, the next volley begins when the animation of the previous one finishes, which reduces the number of actual attacks per volley but may sometimes increase the number of actual attacks over time, resulting in a faster attack rate. [1]
>49 EIAS crossbow attack rates only apply to the displayed animation for following attacks: they actually continue to be 4 frames apart, and this interval is never reduced to 3 frames. There are other breakpoints which only apply to the displayed animation rather than actual attacks as well. [2]


Barbarian:
Single throw FPA =CEILING(16*256/FLOOR(256*(100+EIAS)/100))-1
Bow FPA = CEILING(15*256/FLOOR(256*(100+EIAS)/100))-1
Berserk FPA =CEILING(16*256/FLOOR(256*(100+EIAS)/100))-1
Wirlwind 1 handed wepons FPA = RoundUp(7*256/floor(256*(100+EIAS)/100))-1
Wirlwind 2 handed wepons FPA = RoundUp (9*256/floor(256*(100+EIAS)/100))-1

Note: I average all WSM when it comes to theese double wep attacks(not wirl, wirl is each wepon by itself)
To average WSM you need to (WSM1 + WSM2)/2

VelocityIncrease/EIAS for Doublethrow and Frenzy:
=FLOOR(70-WSM+SKILLIAS-SLOW+(120*IAS/(120+IAS)))

VelocityIncrease/EIAS for Double Swing:
=FLOOR(120-WSM+SKILLIAS-SLOW+(120*IAS/(120+IAS)))

Double Throw FPA = CEILING(256*12/FLOOR(256*EIAS/100))/2
Frenzy FPA = CEILING(256*17/FLOOR(256*EIAS/100))/2
Double Swing FPA = =CEILING(256*17/FLOOR(256*EIAS/100))/2

Paladin
Smite FPA = CEILING(12*256/FLOOR(256*(100+EIAS)/100))-1
Zeal:
Zeal frames uses different wepons type baseframes and actionframes:
And Amazon and sorc skips to pictures, you can also see that its listed as startingframe.
So in beginning of formula i guess u put ((actionframe-2) for them.
Examples here:
https://www.theamazonbasin.com/wiki/index.php/Zeal_attack_speed

Zeal Rollback: 100%
Paladin Baseframe = 15
And i guess paladin action frame is then 7. (not sure, must be googled)

InitalHit:
=CEILING((ActionFrame-0)*256/FLOOR(256*(100+EIAS)/100;1);1)

StartFrameMiddleHits:
=FLOOR(FLOOR(0+((InitialHit*FLOOR(((100+EIAS)*256)/100;1))/256);1)*((100-Rollback)/100);1)

MiddleHits:
=CEILING((ActionFrame-StartFrameMiddleHits)*256/FLOOR(256*(100+EIAS)/100;1);1)

StartFrameLastHit:
=FLOOR(FLOOR(StartFrameMiddleHits+((MiddleHits*FLOOR(((100+EIAS)*256)/100;1))/256);1)*((100-Rollback)/100);1)

LastHit:
=CEILING((BaseFrame-StartFrameLastHit)*256/FLOOR(256*(100+EIAS)/100;1);1)-1

So zeal will have different actionframes and baseframes when used on other characters. Which is why u want to use libary og file browser to get it right.
If zeal is beeing used on Trang oul necro or Undead fetish they will have different action frames etc as well, and trang oul different animation speed may be relevant, not 100% sure with that on zeal. If zeal is overwritten with 256 or use wepontype/animation type animation speed.
I do think sorc has action frame of 20 when using zeal, but its -2 as animation skips 2 pictures on first attack.

Sorc:
Baseframes:
1handed sword: 18
Fists: 15
Daggers: 17
Normal attack = CEILING(Baseframe*256/FLOOR(256*(100+EIAS)/100))-1

Druid shapers: - Take theese with a grain of salt, except for fury. Because they may be altered via D2R recent patches...
I actually think wolves and werebear now uses the druids human form baseframes & hitframe and the animationspeed of 256. Not 100% sure, my memory is not 100% on all this as i barely play d2 anymore :P
Animation Speed wolf:
Wolf Paw FPA: = CEILING(256*13/FLOOR((100+EIAS)/100*AnimationSpeed))-1
Wolf Biting FPA = CEILING(256*10/FLOOR((100+EIAS)/100*AnimationSpeed))-1
Bear Paw FPA = CEILING(256*12/FLOOR((100+EIAS)/100*AnimationSpeed))-1
Bear Biting FPA =CEILING(256*10/FLOOR((100+EIAS)/100*AnimationSpeed))-1

Wolf animationspeed = 329
Bear animationspeed = 365

FURY:
Well, just read this... Its better explained here:
https://forums.d2jsp.org/topic.php?t=92642105&f=148&o=0

DPS:
25/fpa = attacks per second
Damage * attacks per second = DPS

(Your total damage * 017 * (1-(EnergyShield%/100)) - BoneArmor - PDR - MDROverflow) * (1-(EnemyDR%/100)) = End result. Its ofc Floor'ed.
Everything in D2 is rounded the worst way. So FPA is the only thing rounded up. Its only ROUNDUP for wirl, for other its CEILING function. This is what sets breakpoints.

Edit: ALSO LOOK THIS, its a little outdated due to D2R 2.4 patch changes. But it has a lot of info concerning Baseframes etc...
https://forums.d2jsp.org/topic.php?t=89662420&f=148

This post was edited by gel87 on May 15 2025 02:57am
Go Back To Strategy & Guides Topic List
Add Reply New Topic New Poll