Attack Speed

Table of Contents:

  1. Introduction
  2. The Equation
  3. Equation Summary
  4. Rollback Skills
  5. Sequence Animation Skills
  6. Dual-Wield Attacks
  7. Shapeshifted

Introduction

Attack Speed is the most complex animation category in Diablo 2. 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 will break 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.
  • When dual-wielding Weapons, your WSM is calculated differently depending on which Weapon is considered your primary.
    • The primary Weapon is the first Weapon you equip.
      • 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
"-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
    • leapsttack 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 .

  • 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 on 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 first, and the secondary is equipped second.
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

Vinc = 70 + (WSM1st + WSM2nd)/2 + SIAS + EIAS

fpa = {256 * 17 / [256 * Vinc / 100]} / 2


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.

  • 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.

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 great 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 .

Post By MacroBioBoi