Time is on my Side
Attack Speed
Your weapon's speed is only of importance if you do attacks with it; it does nothing to your cast rate while doing spells. Some equipment does indeed affect Cast Rate base animations, but not in the manners discussed here.
The item property Increased Attack Speed - IAS - plus enhanced attack speed via Paladin's Fanaticism aura support only Punching, Throwing and Shooting. The edges are a bit burred in some cases. Amazon's Lightning Bolt does a pure lightning attack, nevertheless it's done by throwing a javelin, thus counts as an attack. Paladin's Smite skill causes him to attack with his shield, but it's subject to weapon base speed and IAS modifiers anyways. Assassin's stationary traps are comparable to spells in many ways, but are throwed, thus count as attacks.
Lots of monsters use indeed their Standard Attack animation to release spells, so they benefit, say, from a Fanaticism boss aura. This is also Necromacer's Skeleton Mages behaviour.
Don't get confused by weapon descriptions shown in the game. Those are defined in d2client.dll for each weapon class and character class combination corresponding to AnimData.d2 entries. Despite most attacks can be accelerated by any equipment and skill which increases attack speed the weapon's display will only change if a IAS breakpoint is reached by adding IAS stuff to the weapon itself. So this display is only a rough measurement, and keep in mind it'll change when looking at that weapon with another character class. Assassin's claws as an example are listed as 'very slow' on any other character class, no matter how fast they're if used by a Sin.
A german listing of items granting IAS can be found at Atair's d2wissen.
formular derivation
Unfortunately usage of terms is a bit foggy. Very common is the term Frame, which describes in this environment a single composed picture of an animation. Frame count is called AnimLength or, according to AnimData.d2 convention, Frames per direction, and I've also read Base+1 sometimes. An animation's velocity, say, how fast the animation is shown, is called AnimRate, sometimes BaseRate. The duration, say, how long the animation lasts, is called AnimDuration, and calculates as
AnimDuration = AnimLength / AnimRate
AnimLength | extraction of AnimData.d2 |
AnimSpeed | |
AnimRate | ItemStatCost.txt (StatID 68) |
IASItem | ItemStatCost.txt (StatID 93) |
SIAS | Skills.txt (aurastates) or look ingame - Fanaticism - Burst of Speed - Werewolf - (Frenzy) |
WSM | Weapons.txt (speed) |
This calculation doesn't give integer result, but this is necessary to match ingame's timeline. So a mechanism called HitShift is used to keep rounding errors low; it is also referred to as AnimSpeed from AnimData.d2, and I liked to use vanim in other FAQtoids (sorry ...).
Fortunately this is always 256 when referring to characters' attack speeds, so for now our formula becomes
AnimDuration = AnimLength * 256 / AnimRate
It becomes worse, since AnimRate is calculated while using AnimSpeed and all accelerations gained by equipment and skills, inluding slowing effects. I'll call it AnimAcc, don't know if there's a common term somewhere which I may have missed. I've read 'ColdEffect', but consider this as misleading.
Our formula now becomes
AnimDuration = AnimLength * 256 / AnimSpeed * AnimAcc
There's even more to it.
AnimAcc of course is a percentage, so without acceleration (and slowing down) AnimRate = 100 to make
AnimSpeed*100 / 100 = AnimSpeed
mathematically valid.
Further we've to involve effective IAS from equipment called EIAS, IAS from skills called SIAS, and base weapon speed, which is called more precisely Weapon Speed Modifier, WSM. Our formula now becomes
AnimAcc = (AnimRate + SIAS + EIAS - WSM) / 100 *
EIAS is, similar to other animation formulas involving equipment, subject to 'diminishing returns' effect, which means you'll need way larger IAS amounts from equipment the better speed you want to achieve.
[EIAS = 120 * IASItem / (120 + IASItem)]
Inserting all that stuff into our formula gives
AnimDuration = AnimLength * 256 / AnimSpeed * (AnimRate + SIAS + EIAS - WSM) / 100 *
If you don't want to calculate EIAS yourself have a look at GaiaCaT's table at the appendix of this page
Now we still need some rounding to get integers. Remember, result must fit into ingame timeline of 25fps. We use
AnimDuration = {(AnimLength * 256) / [AnimSpeed * (AnimRate + SIAS + EIAS - WSM) / 100]}
Furthermore from complete animation's Frame Count of composed pictures one is not used, since first and last picture are similar. Skipping one of them smoothes the animation. So our formula gets a -1 at the end,and becomes
main formula
AnimDuration = {(AnimLength * 256) / [AnimSpeed * (AnimRate + SIAS + EIAS - WSM) / 100]} - 1 * with [EIAS = 120 * IASItem / (120 + IASItem)]
AnimDuration: duration of animation in (time-) frames ('fpa') AnimLength: (picture-) frame count per cycle (Frames per Direction) AnimSpeed: HitShift to gain extra precision AnimRate: slowing effects SIAS: skill-based IAS WSM: Weapon Speed Modifier EIAS: effective IAS via IASItem IASItem: IAS granted by items [ ]: Floor Function { }: Ceiling Function sometimes you see SIAS and EIAS summarized as EIAS
Throwing Weapons get a penalty of 30 if they're actually thrown. Thus throwing a weapon is always slower than fighting close combat with same weapon.
serial attacks
Some attacks will use a 'rollback' animation, it starts like a Standard Attack, repeats some (picture-) frames again and again to deliver a series of single attacks, and ends with Standard Attack's ending. All (picture-) frames are taken from Standard Attack. This is how Amazon's Fend and Strafe, Paladin's Zeal, Werewolf Druid's Fury and Assassin's Dragon Talon work.
Of course there's also a special case, as always. Weaponless Amazons' and Sorceresses' Rollback Animation starts with second picture of Standard Attack. If the girls use other than missile or spear weapons it starts with third picture. See Myrdinn's extracted table from d2common.dll.
see also:
- Zeal for all Classes in Lurker Lounge
- Amazon Zeal attack speed in Amazon Basin
besonders Myrdinn's postings
Sequence Animation
Amazon's Jab and Impale, all claw-specific Assassin attacks, Barbarian's Leap Attack and Paladin's Charge and several other, mostly spell-casting, skills use a Sequence Animation, which is composed of several parts of several animations. Some oddities here.
AnimDuration = {(AnimLength * 256) / [AnimSpeed * (AnimRate + SIAS + EIAS - WSM) / 100]} *
Same formula, isn't it?
It isn't, it omits -1, which is indeed skipped.
Also Sequences will get a penalty of +30 to WSM *.
Beware: * d2wissen lists WSM with reversed notation compared to Arreat Summit. If using d2wissen WSM values, you have to add WSM in formulas instead of substracting it!
Attack speed of the actual blow isn't influenced by weapon speed when using Leap Attack or Charge.
Barbarian's Frenzy, Double Throw and Double Swing are dual-wielding attacks described in next chapter. His Whirlwind uses an animation of its very own, which is described to an extend in various threads listed below, so I've omitted it in FAQtoids, since I don't want to include too much class-specific stuff.
Keep in mind tha Whirlwind does profit from IASItem only when it's socketed into the weapon.
see also:
- Weapon Speed Mechanics, by Trucidation and Crystalion
- general mechanisms, by JRichard
- Weapon Speed Formula in Lurker Lounge
- Various Speed Questions in Amazon Basin
- SpeedCaps by Nefarius in Phrozen Keep
- weapon speed calculator by Heri, indiablo.de
- newer weapon speed calculator by TitanSeal, indiablo.de
- Whirlwind Speed in Amazon Basin
- Whirlwind Mechanism in Lurker Lounge
- Whirlwind, by Myrdinn in Phrozen Keep
dual-wielding attacks
- Assassin and Barbarian only -
While using dual-wielding attacks IASitem on secondary weapon doesn't count. This is explicitly the case with that special attacks, not restricted to using a one-handed attack with weapons in both hands.
EIAS = [120 * (∑IASitem - IAS2nd)/(120 + ∑IASitem - IAS2nd)]
Frenzy acceleration formula
Vinc = 70 + (WSM1st + WSM2nd)/2 + ∑SIAS + EIAS fpa = {256 * 17 / [256 * Vinc / 100]} / 2
Double Swing acceleration formula
Vinc = 120 + (WSM1st + WSM2nd)/2 + ∑SIAS + EIAS fpa = {256 * 17 / [256 * Vinc / 100]} / 2
Double Throw acceleration formula
Vinc = 70 + (WSM1st + WSM2nd)/2 + ∑SIAS + EIAS fpa = {256 * 12 / [256 * Vinc / 100]} / 2
EIAS: effective IAS IASitem: IAS granted by items IAS2nd: IAS granted by secondary weapon Vinc: velocity increasement (aka speed increase); hardcoded limits: (175 ≥ Vinc ≥ 15) WSM1st: Weapon Speed Modifier Primary Weapon WSM2nd: Weapon Speed Modifier Secondary Weapon SIAS: IAS skillbonus (Frenzy, Fanaticism, Burst of Speed, Werewolf) fpa: Frames per Animation { }: Ceiling Function [ ]: Floor Function
More recent testings done by Behaart indicate some very obscure results depending on Primary and Secondary Weapon. I havn't dug deeper into this, but if you're interested compare german d2info's topic.
see also:
- Frenzy Guide, by Grimborn in Amazon Basin
- Frenzy IAS Formula, by Kyrene in Amazon Basin
- Frenzyspeed - teh FAQ, by Behaart german
- Frenzy IAS charge-up steps?, notes by Hammerman
Shape Shifting
A character transformed into Vampire or Undead Fetish will still use the main formula, but you'll need to insert the monsters' values.
Abweichend sind also
Form | AnimLength | AnimSpeed |
---|---|---|
Vampire | 14 | 176 |
Undead Fetish | 12 | 256 |
Shape Shifting to Werebear or Werewolf leads to more complications, since both the wereforms' and the original characters' values step in.
AnimDuration = {(AnimLength * 256) / [AnimSpeed * (AnimRate + SIAS + EIAS - WSM) / 100]} - 1 wobei AnimSpeed = [256 * Framesneutral / Delay] und Delay = [256 * FramesChar / [(100 + WIAS - WSM) * CharSpeed / 100]]
new variables: Framesneutral: frame count of wereforms' neutral animation (NU; just standing) FramesChar: frame count of untransformed character's attack animation * CharSpeed: AnimSpeed of untransformed character, see Excerpt from AnimData.d2 * two-handed swords (2hs) are an exception, here's always the value for 1hs in charge
Animation | Werwolf | Werbear |
---|---|---|
A1 | 13 | 12 |
S3 | 10 | 10 |
NU | 09 | 10 |
Credits
- Behaart
- BigEyedBug
- brianc84
- Crystalion
- GaiaCaT
- Grimborn
- Hammerman
- JRichard
- Kyrene
- Myrdinn
- mshannes
- Nefarius
- RTB
- Seisset
- TitanSeal
- Trucidation
- mishy23
Appendix
EIAS | IAS | EIAS | IAS | EIAS | IAS | EIAS | IAS | EIAS | IAS |
---|---|---|---|---|---|---|---|---|---|
1 | 2 | 21 | 26 | 41 | 63 | 61 | 125 | 81 | 250 |
2 | 3 | 22 | 27 | 42 | 65 | 62 | 129 | 82 | 259 |
3 | 4 | 23 | 29 | 43 | 68 | 63 | 133 | 83 | 270 |
4 | 5 | 24 | 30 | 44 | 70 | 64 | 138 | 84 | 280 |
5 | 6 | 25 | 32 | 45 | 72 | 65 | 142 | 85 | 292 |
6 | 7 | 26 | 34 | 46 | 75 | 66 | 147 | 86 | 304 |
7 | 8 | 27 | 35 | 47 | 78 | 67 | 152 | 87 | 317 |
8 | 9 | 28 | 37 | 48 | 80 | 68 | 157 | 88 | 330 |
9 | 10 | 29 | 39 | 49 | 83 | 69 | 163 | 89 | 345 |
10 | 11 | 30 | 40 | 50 | 86 | 70 | 168 | 90 | 360 |
11 | 13 | 31 | 42 | 51 | 89 | 71 | 174 | 91 | 377 |
12 | 14 | 32 | 44 | 52 | 92 | 72 | 180 | 92 | 395 |
13 | 15 | 33 | 46 | 53 | 95 | 73 | 187 | 93 | 414 |
14 | 16 | 34 | 48 | 54 | 99 | 74 | 194 | 94 | 434 |
15 | 18 | 35 | 50 | 55 | 102 | 75 | 200 | 95 | 456 |
16 | 19 | 36 | 52 | 56 | 105 | 76 | 208 | 96 | 480 |
17 | 20 | 37 | 54 | 57 | 109 | 77 | 215 | 97 | 507 |
18 | 22 | 38 | 56 | 58 | 113 | 78 | 223 | 98 | 535 |
19 | 23 | 39 | 58 | 59 | 117 | 79 | 232 | 99 | 566 |
20 | 24 | 40 | 60 | 60 | 120 | 80 | 240 | 100 | 600 |
Contact me via E-Mail, if you like.