D2library

<< FAQtoids English Home

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

where to find variables?
AnimLengthextraction of AnimData.d2
AnimSpeed
AnimRateItemStatCost.txt (StatID 68)
IASItemItemStatCost.txt (StatID 93)
SIASSkills.txt (aurastates)
or look ingame
- Fanaticism
- Burst of Speed
- Werewolf
- (Frenzy)
WSMWeapons.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:

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:

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:

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

FormAnimLengthAnimSpeed
Vampire14176
Undead Fetish12256

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

AnimationWerwolfWerbear
A11312
S31010
NU0910

Credits


Appendix

eIAS and ItemIAS
EIASIASEIASIASEIASIASEIASIASEIASIAS
12212641636112581250
23222742656212982259
34232943686313383270
45243044706413884280
56253245726514285292
67263446756614786304
78273547786715287317
89283748806815788330
910293949836916389345
1011304050867016890360
1113314251897117491377
1214324452927218092395
1315334653957318793414
1416344854997419494434
15183550551027520095456
16193652561057620896480
17203754571097721597507
18223856581137822398535
19233958591177923299566
202440606012080240100600

Contact me via E-Mail, if you like.


Valid HTML 4.01 Transitional
Valid CSS 2.0

last update 24III09
© by librarian

<< FAQtoids English Home

D2library