How this is worked out.
Gear speed is subject to diminishing returns before anything else happens:
effective = 120 × IAS ÷ (120 + IAS), rounded toward zero. Negative attack speed goes through the same
curve, so a penalty bites harder than its face value, and exactly −120 makes the game divide by zero and crash.
Base attack speed and the weapon speed modifier are then added at full value, clamped so the resulting rate stays
between 15% and 175%, or 250% while shapeshifted.
The animation then runs at rate = floor(AnimationSpeed × (100 + total) ÷ 100) and takes
ceil(256 × BaseFrames ÷ rate) − 1 frames. Casting is the same shape with its own ceiling:
rate = min(120 × FCR ÷ (FCR + 120) + 100, 196), then animSpeed = rate × AnimationSpeed ÷ 100.
The 196 ceiling is what the curve gives at 500 faster cast rate, the cap Eastern Sun sets, and the rounding already
reaches it at 480, so nothing above 480 faster cast rate changes anything . Between −55 and −119 faster cast
rate the game's own arithmetic wraps around and the cast becomes instant.
Whirlwind hits on your attack frame. The time between Whirlwind hits is the
frame your normal attack would land on: the attack frame of your attack animation for the weapon in hand, played
at your attack speed, floor(256 × AttackFrame ÷ floor(AnimationSpeed × rate ÷ 100)). The rate is the
one every other attack uses, so all gear, skills, auras, buffs and slows count, diminished as usual, except that
Whirlwind never takes the −30 sequence penalty. The animation comes from the weapon's own class, so two-handed
swords are still timed on their one-handed animation. The first hit lands the moment you start spinning.
Wereforms. Shapeshifting does not give you the form's own frame count.
The engine rescales the rate by the ratio of the form's frames to your human ones, so your breakpoints are the
human ones for the weapon you are holding , give or take a frame of rounding, which the table works out exactly.
What shapeshifting really buys is a higher ceiling: the speed clamp rises from 175 to 250, so attack speed keeps
paying well past the point it stops mattering unshifted.
Strafe rewinds the animation after each arrow to
releaseFrame × (100 − Param6) ÷ 100, so every shot after the first only replays the remainder.
ESR uses Param6 = 15 throughout.
Sequences. Frenzy, charge-up strikes, Cleave and Mirrored Blades run fixed
sequences compiled into the game rather than a plain animation, with an entry per weapon class. A sequence takes
the −30 sequence penalty and counts its steps down to zero, which makes it one frame longer than a plain animation
of the same length. Frenzy is 17 steps, striking on step 5 with the main hand and step 10 with the off hand. A
charge-up is 12 steps striking on step 7; with a claw in each hand it becomes 16 steps, one claw striking on step 7
and the other on step 11. Cleave and Mirrored Blades play frames of the cast animation as an attack, 16 to 22 steps
depending on the weapon, so attack speed drives them, not faster cast rate.
Who can dual wield. Only the Barbarian and the Assassin. The Assassin pairs
claws and nothing else. The Barbarian pairs any one-handed weapon, and also the two-handed swords marked
1or2handed in weapons.txt — 39 of them, from Two-Handed Sword up to Colossus Blade. A sword held in
one hand switches to its one-handed animation, which is usually faster than the two-handed one.
What the second weapon does. The game enables one weapon's stats at a time, so
with a weapon in each hand each hand is worked out on its own weapon: that weapon's increased attack speed, base
attack speed and speed modifier, plus everything else you wear. Frenzy and charge-up strikes average the two rates
and only then apply the −30 and the clamp, so speed on one weapon counts at half weight while gloves and rings count
in full. Whirlwind averages the two intervals instead, rounding up, and both weapons strike every hit. In the base
game the second weapon has to find a different enemy; Eastern Sun lets both strike the same one.
Crossbows. Eastern Sun fixes every crossbow attack animation at 5 frames whatever
the attack speed, and Mirrored Blades with a crossbow takes the same 5 frames for the whole attack. Items that add
or remove crossbow attack frames move it directly. Whirlwind is not affected.
Base frames and animation speeds are read from this build's animdata.txt; weapon speed modifiers from weapons.txt. Values will not match vanilla calculators where Eastern Sun has changed the underlying tables.