Every cast, hit-recovery, block and attack-speed breakpoint of the eight classes, for each form and weapon class: pick a class, enter your own values and read how many frames each action takes and what the next step needs. The tables come from the game's animation files of this build and match the published ones.
| FCR | Frames | Acts on frame | Seconds |
|---|---|---|---|
| 0–6% | 19 | 10 | 0.76 |
| 7–13% | 18 | 10 | 0.72 |
| 14–21% | 17 | 9 | 0.68 |
| 22–31% | 16 | 9 | 0.64 |
| 32–47% | 15 | 8 | 0.60 |
| 48–67% | 14 | 8 | 0.56 |
| 68–98% | 13 | 7 | 0.52 |
| 99–151% | 12 | 7 | 0.48 |
| 152+% | 11 | 6 | 0.44 |
| FHR | Frames | Seconds |
|---|---|---|
| 0–5% | 11 | 0.44 |
| 6–12% | 10 | 0.40 |
| 13–19% | 9 | 0.36 |
| 20–31% | 8 | 0.32 |
| 32–51% | 7 | 0.28 |
| 52–85% | 6 | 0.24 |
| 86–173% | 5 | 0.20 |
| 174+% | 4 | 0.16 |
| FBR | Frames | Seconds |
|---|---|---|
| 0–12% | 5 | 0.20 |
| 13–31% | 4 | 0.16 |
| 32–85% | 3 | 0.12 |
| 86+% | 2 | 0.08 |
| IAS | Frames | Seconds |
|---|---|---|
| 0–8% | 13 | 0.52 |
| 9–19% | 12 | 0.48 |
| 20–36% | 11 | 0.44 |
| 37–62% | 10 | 0.40 |
| 63–104% | 9 | 0.36 |
| 105–199% | 8 | 0.32 |
| 200+% | 7 | 0.28 |
EIAS = 120 × IAS / (120 + IAS), floored, minus the weapon speed modifier (negative is faster), plus skill speed, held between −85 and 75. Checked against every IAS column of the Amazon Basin's class tables.
The check runs when data/tools/anim.json is built (pipeline/build-tools-lab.mjs): every published IAS column reproduced on the game's animation records of this build.
Frames = 256 × (frames per direction − starting frame) / (animation speed × (base + effective bonus) / 100), rounded up, minus one. Base 100 for attacks and casting, 50 for hit recovery and blocking. Reproduces all 2,955 rows of the Amazon Basin's attack tables for seven classes and the published cast, hit-recovery and block tables.
Asserted when data/tools/anim.json is built and again by tests/tools.test.mjs on every test run; the Warlock's tables come from the game file alone (no published table to check against yet).
An Amazon or a Sorceress attacking with a sword, axe, mace, spear, polearm, dagger, javelin or staff starts the swing on frame 2, bare-handed on frame 1, so those attacks are two (one) frames shorter than the animation. Bows, crossbows, throws and the other classes start on frame 0. The Warlock has no published table yet: frame 0 is assumed.
Faster cast rate, hit recovery and block rate count as 120 × value / (120 + value), floored. Effective cast rate stops at 75 (200 % on gear); hit recovery and block rate have no such cap, which is why a druid's last hit-recovery step sits at 456 %.
The spell leaves the hand on frame action × 256 / (animation speed × (100 + effective cast rate) / 100), rounded up; the cast still lasts the whole animation, so the next action waits for the cast frames.
The Sorceress casts Lightning and Chain Lightning with a 19-frame animation and no "minus one": 256 × 19 / (256 × (100 + effective cast rate) / 100), rounded up.
With Holy Shield active a Paladin blocks in 2 frames, and in 1 frame from 86 % faster block rate. The game sets this in code; the block animation in the game files gives the 5-frame table without it.
Trang-Oul's full set turns a Necromancer into a vampire with its own cast (23 frames at 0 %) and hit-recovery (15 frames) tables. These are the published tables; the vampire's animation is a monster's and is not read here.
Sources: animdata.d2 of build 3.3.93847; checked against the tables of maxroll.gg and the Amazon Basin wiki. The Warlock's tables come from the game files alone (no published table to check against yet beyond community lists, which agree).