Attack Speed
Last Updated:May 23, 2023|Change Log
Attack Speed is the most complex animation category in Diablo 2 Resurrected. The Character attacking, their weapon, their equipment, and buffs they have is just the tip of the iceberg of variables to play a part in the total calculation. This article breaks down these nuances for anyone looking to fully dive into this amazingly deep mechanic. For people who just want to see their Breakpoints, there's always the D2Planner!
The Equation
AnimDuration = {(AnimLength * 256) / [AnimSpeed * (AnimRate + SIAS + EIAS - WSM) / 100]} -1
[EIAS = 120 * IASItem / (120 + IASItem)]
Diablo 2 runs on a 25 Frames per second engine. Animations are measured in Frame length, which takes any amount of time, in seconds. The engine cannot show parts of a Frame, so an animation speed is only increased when an entire Frame is removed from the total animation length. To understand this equation, we need to understand each variable and how it is derived. [ ] brackets round down, and { } brackets round up.
AnimDuration
- The final number of Frames the animation will take to finish, after modification by Increased Attack Speed.
- This value, divided into 25 Frames per second, gives you the number of animations per second you can complete at your current speed.
- This value, divided by 25 Frames per second, gives you the length of the animation in seconds.
AnimLength
- The number of Frames there are in the unmodified animation. If the animation was a race track, the AnimLength is the distance you must travel to get to the finish line.
AnimSpeed
- A static variable that is always 256. It's used to decrease rounding errors in the equation, since Frames must be measured in integers for the game engine.
AnimRate
- A static variable that is always 100%.
- Added to Increased Attack Speed and Weapon Speed Modifier to create the new rate at which the animation finishes.
- This value determines how many Frames are removed from the total animation, which allows the action to occur faster.
SIAS
Skill Increased Attack Speed.
- The sum of Increased Attack Speed available from buffs / debuffs on a Character.
- burstofspeed, fanaticism, werewolf, and frenzy are the four sources of SIAS buffing, in the game.
- Slows will reduce SIAS. This includes decrepify, holyfreeze, Cold Length, and Slows Target.
- On Characters, there is a cap of 50% Slow.
EIAS
Effective Increased Attack Speed.
- Increased Attack Speed is transformed through the second equation to EIAS by applying a diminishing return function found in many of Diablo 2's equations. The sum of all Increased Attack Speed on Weapon and equipped items.
- When two weapons are equipped, only the primary weapon's IAS is used in the calculation, for EIAS.
- The Druid's Shapeshifted forms have a unique IAS calculation that we cover below.
WSM
Weapon Speed Modifier.
- Every Weapon in the game has an inherent WSM value based on its item type.
- These values range from 20 to -60.
- Positive WSM values make the Weapon slower, and negative values make the Weapon faster.
- In the equation above, you subtract the WSM from your Animation Rate %. Double negative cancels and adds that value to the Rate instead.
- Positive WSM values make the Weapon slower, and negative values make the Weapon faster.
- When dual-wielding Weapons, your WSM is calculated differently depending on which Weapon is considered your primary.
- The primary Weapon is the weapon equipped on the left of your Inventory Screen.
- If your Left Weapon Slot is the primary, WSM = (LeftWSM + RightWSM) / 2
- If your Right Weapon Slot is the primary WSM = (LeftWSM + RightWSM) / 2 - LeftWSM + RightWSM
- The primary Weapon is the weapon equipped on the left of your Inventory Screen.
"-1"
- To smooth out the repetition of animations, the first and last Frame are the same. To calculate the game overlapping these two points in the animation, we remove 1 Frame from the total.
IASItem
Increased Attack Speed from items.
- The sum of all IAS affecting the attack animation, with the Weapon's IAS added if it's the mainhand Weapon.
If we take the base Amazon without any weapons in hand and her melee attack animation of 12 frames, we can see the equation work in real time. I'll plug in all of our values for you to see.
AnimDuration = [(12 Frames * 256) / [256 * (100 + 0 + 0 - 0) / 100]) -1
AnimDuration = 11 Frames
"The Equation" Takeaways
Many of the variables in our equation are hard coded values and derived based on the Character itself. Because of this, there are only 3 values you can change to increase your animation speed.
- WSM is based on the weapon you use. Picking a Weapon with a large negative WSM adds directly to your AnimRate .
- SIAS is added directly to AnimRate as well without being diminished. fanaticism becomes a very powerful option for end-game builds on your Mercenary.
- EIAS is a critical stat, but it goes through diminishing returns. You need increasing amounts of IAS to affect your AnimRate. Do not count any Increased Attack Speed from a secondary Weapon when performing this calculation, only the Primary Weapon IAS is added.
- Throwing Weapons, used for a Skill that throws, have a flat 30 value penalty for AnimRate calculation. This is not true for the Barbarian, who has no additional penalty.
Rollback Skills
There are six multiattack Skills that have different AnimLength per attack in their sequence. These are called "Rollback" animations.
- Rollback animation Skills are visually constructed of the same animation, but each attack only shows parts of the total animation, which leads to them having varying lengths.
- The first and last attack are usually a full animation length, while the middle attacks will only show a portion of the attack, giving the visual illusion of speed, and the ingame effect of reduced animation length.
- EIAS decreases the first, middle, and last attacks differently at each breakpoint.
- The pattern for reduction is functionally incalculable, especially when non-native Characters gain access to multiattack Skills of other Characters.
- We include an example of the Paladin's zeal ability, but we HIGHLY recommend using the D2Planner for calculating these Skill's breakpoints.
- The Rollback Skills are:
- dragontalon
- fend
- fury
- strafe
- zeal
Sequence Animation Skills
Some attack Skills in the game have unique animations, that are not just repeating standard attacks. They use a slightly different equation for AnimDuration that is slower due to a static penalty to WSM and no removal of overlapping frames with consecutive attacks.
AnimDuration = {(AnimLength * 256) / [AnimSpeed * (AnimRate + SIAS + EIAS - (WSM + 30)) / 100]}
[EIAS = 120 * IASItem / (120 + IASItem)]
- You see the loss of the -1 from consecutive attack frame overlap, and our WSM has a static + 30 to its value.
The Sequence Animation Skills are:
- bladesofice
- charge
- clawsofthunder
- fistsoffire
- impale
- jab
- leapattack
- leapattack and charge do not use WSM in their attack animation calculation speed.
Dual-Wield Attacks
Assassins and Barbarians have attack animations for dual-wielding Weapons. These attacks do not benefit from IAS on the secondary weapon at all. The EIAS calculation only captures IAS on the primary weapon. In addition to this, the Barbarian has three unique attacks that have a set AnimLength that are decreased by a new variable, VInc .
Exception: frenzy calculates EIAS, WSM and Vinc for each weapon in the attack sequence, with unique calculations described below.
- VInc replaces the AnimRate portion of the equation entirely, since it captures WSM, SIAS, and EIAS when calculating its value.
- VInc has a minimum value of 15 and a maximum value of 175 regardless of the total values of the Character's items.
- The primary equation is also replaced with a simplified version which calculates fpa = Frames Per Attack, since these attacks use both weapons.
- The equation references WSM for your primary and secondary weapon. Primary is the weapon that is equipped above your Gloves slot, and the secondary is equipped above your Boots slot.
doublethrow
Vinc = 70 + (WSM1st + WSM2nd)/2 + SIAS + EIAS
fpa = {256 * 12 / [256 * Vinc / 100]} / 2
doubleswing
Vinc = 120 + (WSM1st + WSM2nd)/2 + SIAS + EIAS
fpa = {256 * 17 / [256 * Vinc / 100]} / 2
frenzy
Vinc1 = 70 + SIAS + EIAS - WSM1st
Vinc2 = 70 + SIAS + EIAS - WSM2nd
WSM1st = Primary WSM + Secondary WSM - ((Primary WSM + Secondary WSM) / 2)
WSM2nd = (2 * Secondary WSM) - ((Primary WSM + Secondary WSM) / 2)
fpa1 = {256 * 9 / [256 * Vinc1 / 100]} - 1
fpa2 = {256 * 17 / [256 * Vinc2 / 100]}
There is a bug for frenzy that is triggered if the FIRST Weapon swing misses in the sequence. The SECOND Weapon swing will use the speed calculations of the first Weapon, instead of the second Weapon's values. This has the same impact on Chance to Hit.
Shapeshifted
While most people think of the Druid, there are two other ways of shapeshifting into different forms, and these things affect your animation breakpoints. As of Patch 2.4 the game calculates the fastest attack speed between this equation and the primary equation to determine the final attack speed Frame for Shapeshifted Characters. In most cases, this will use the primary equation for less IAS on gear, and the Shapeshifted equation for higher values of IAS.
- The Vampire transformation from wearing full Trang-Oul's Set (Trang-Oul's Scales) gives you an AnimLength of 14 and AnimSpeed of 176 which plug into the original equation above.
- The Undead Fetish transformation from Delirium gives you an AnimLength of 12 and AnimSpeed of 256 which plug into the original equation above.
- The Druid shapeshifting with werewolf and werebear have a unique animation calculation with 3 new variables: FramesNeutral , FramesChar , and CharSpeed .
- FramesNeutral is the neutral animation of the Druid while shifted and standing still.
- NU is the designation in the game-files and the Frame length is 13 for Werewolf and 12 for Werebear.
- FramesChar is the Druid's un-shifted attack Frame length, which is 15 Frames.
- CharSpeed is the AnimSpeed of the un-shifted Druid, which is 256.
- FramesNeutral is the neutral animation of the Druid while shifted and standing still.
AnimDuration = {(AnimLength * 256) / [AnimSpeed * (AnimRate + SIAS + EIAS - WSM) / 100]} - 1
AnimSpeed = [256 * Framesneutral / Delay]
Delay = [256 * FramesChar / [(100 + WIAS - WSM) * CharSpeed / 100]]
The big take aways from the Druid AnimDuration calculation are as follows:
- AnimSpeed which is normally a static 256 is now modified directly by Delay which adds Weapon IAS directly to WSM as opposed to processing WIAS through diminishing returns first. This greatly decreases our value, and then further modifies the speed by adding the EIAS again, in the first equation.
- This makes off-Weapon IAS values much less important. With certain base Weapons and IAS on-Weapon, off-Weapon IAS can become irrelevant, as it won't contribute to decreasing the animation length any further.
- werewolf itself is a massive SIAS bonus which also directly increases AnimSpeed .
Credits
Written by MacroBioBoi
Reviewed by Teo1904