d2jsp
Log InRegister
d2jsp Forums > Diablo II > Diablo 2: Resurrected > D2:R Discussion > Need Help Verifying Attack Speed Formulas D2r
Prev1345679Next
Add Reply New Topic New Poll
Member
Posts: 326
Joined: Apr 12 2020
Gold: 1,685.00
Nov 8 2021 01:48pm
Quote (gel87 @ Nov 8 2021 08:23pm)
Looks correct :)


Ok.

So now, there is a new 6 fpa breakpoint reachable with bows (before max was 7 fpa) if I understood correctly.

And with level 15 fana, you can reach it with
-10 wsm bow => 109 ias
0 wsm bow => 152 ias
+10 wsm bow => 215 ias

+10 wsm => Sounds impossible with windforce because at most you get 195 ias with 40 ias bow + 60 armor + 45 helmet + 20 gloves + 20 amu + 10 belt, off by 20. With faith GMB, no way either.

But with diamond or shadow (0 wsm), you can get 155 exactly with 60 armor + 45 helmet + 20 gloves + 20 amu + 10 belt, meaning you can reach this with runewords without ias such as faith and brand.

With mat bow (-10 wsm) and faith, 110 ias is reachable quite easily but need ias on armor, so no fortitude. Might still be a good way, you can keep atma, razortail.

For cold builds using ice, having 20 ias on the bow makes 6 fpa reachable without too much work with the fast bows.

Not 100% sure of all this.

This post was edited by reupi on Nov 8 2021 01:58pm
Member
Posts: 21,932
Joined: Sep 3 2006
Gold: 455.00
Nov 9 2021 01:24am
Okay, i now found the norwegian function for ceiling, so i can fix my excel sheet lol xD
"Avrund.gjeldende.multiplum"
Like what the actual fuck..

Some stuffs are hard to do on hei phone lol xD
Member
Posts: 21,932
Joined: Sep 3 2006
Gold: 455.00
Nov 9 2021 11:14am
Quote (gel87 @ Oct 29 2021 05:39pm)
Hi, I need some help to test if the attack frame formulas are correct. And that the EIAS/Speedincrease cap removal is only change.

General:
EIAS = [(120*IAS)/(120+IAS)] + SIAS - WSM
IAS needed to reach EIAS breakpoint = [120*(EIAS- SIAS + WSM))/(120-(EIAS - SIAS +WSM)]
SIAS = Skill IAS (FANA/BOS/FRENZY)
WSM = Wepon's internal speed. (ref arreat summit)
[ ] = Floor, written like this in excel: floor((FormulaToRound);1)
{ } = Ceiling, written like this in excel: Ceiling((FormulaToRound);1)

Laying traps:
FPA = {16/(1+(EIAS/100))}-1
Which gives EIAS breakpoints:
EIAS -- FPA
0 -- 15
7 -- 14
15 -- 13
24 -- 12
34 -- 11
46 -- 10
60 -- 9 (used to stop here, but on 61)
78 -- 8
100 -- 7
129 -- 6
167 -- 5
220 -- 4

Dragon talon:
Initial kick:
={13/(1+(EIAS/100))-1}
Which gives EIAS table:
EIAS -- FPA
0 -- 12
9 -- 11
19 -- 10
30 -- 9
45 -- 8
63 -- 7 (used to stop here)
86 -- 6
117 -- 5
160 -- 4
225 -- 3

Follow up/serial kick:
={4*256/[256*(1+(EIAS/100))]}

EIAS -- FPA
0 -- 4
35 -- 3 (used to stop here)
100 -- 2

(i was told autoWSMbug works in D2R. Which means u can WSM bug a Gt(-30WSM) with a WarFist(+10WSM) gt adds str or dex to wear WF. Which would result in a hefty WSM) :
95 ias, 57bos SIAS = 160 EIAS then.
120ias, 57bos SIAS = 167 EIAS then.

Dragon claw:
Dragon claw is different, i havent checked yet. But A1 Claws and A2 Claws animspeed etc = 208. Which means we cannot shorten formula.
https://www.mannm.org/d2library/faqtoids/animspeed.html
https://www.mannm.org/d2library/faqtoids/ias_eng.html

Formula:
Vincrease =floor(70-(WSMleft+WSMright)/2+SIAS+(120*ias/(120+ias));1)

To simple this shit a little for u... ^^
Vincrease =floor(70-realWSM+SIAS+(120*ias/(120+ias));1)

Frames =ceiling(256*13/floor(208*Vincr/100;1);1)/2

EIAS breaks dragon claw:
I dont bother doing eias breakpoints here. Fill in the formula and u get the correct frames.

Shapers:
Shapers has 1 human animation speed and 1 shaped animation speed, both are handeled when it comes to calculating attack speed.
So here we need to use full formula. The human shape makes a change in AnimSpeed.

Frames pr Direction and AnimRate:
AnimRate & WeponBase: Ref. https://www.mannm.org/d2library/faqtoids/animspeed.html
So AnimRate here does vary by wep and class. Usually animrate is 256, but it may differ, like forexample assa with claw/claws its 208.
WSM IS INVERTED IN THIS FORMULA!!!! (WSM * -1) prior to using it.

NeutralFrame(NU):
NU WereWolf: 9
NU WereBear: 10

Werebases:
- For the wolf and bear forms the A1 (right paw swing)and A2 left paw swing) sequence are their normal attack length WereBear=12, WereWolf=13.
- For the S3 sequence (biting attack animation) the lengths are WereBear=10, WereWolf=10. (sound of bear is 13 ^^)
- (MadeUpWord-->)AnimRate1 = 100, unless chilled where it becomes 50. Im unsure about how the rest of the slow acts, if it's directly subtract to AnimRate1, or if it is a subtract to WSM or SIAS.
Anyway, it should work the same. But if max slow ammount is 100(chilled + 50% from either skills(golem/hf) or items(Gleglaws etc). If the total ammount of slow can be more than 100, then i would assume
that: Chilled subtracts to AnimRate1, SkillSlow Subtracts to SIAS, ItemSlow subtracts to WSM. And that each is max 50%. But this is just guesses, hope some1 can explain me the max values of slow.

Shape Formulas:
Delay = [256*(WeaponBase) / [(weapon ias+wsm+100)*AnimRate/100]]
Anim speed = [NU * 256 / delay]
Speed increase/EIAS = [120 * ias / (120 + ias)] + skill ias + wsm *(IAS is both wep and gear as usual formula)
FramesSerial = {256*7/[(AnimRate1 + Speed increase)/100*Anim speed]}
Frames WolfPaw = {256*13/[(AnimRate1 + Speed increase)/100*Anim speed]}- 1
Frames Biting = {256*10/[(AnimRate1 + Speed increase)/100*Anim speed]}- 1
Frames BearPaw = {256*12/[(AnimRate1 + Speed increase)/100*Anim speed]}- 1

* Fury use FramesSerial for his 4 first attacks, then WolfPaw for the last attack.
* AnimRate for Werewolf/Werebear is not listed as 256, but we use 256. AnimRate for human shape we use the listed for AnimRate and WeponBase.
Example: Assa Wielding a claw: AIA1HT1 -- WeponBase(Frames pr direction) 11 -- AnimRate 208.

* Formula with example(fury druid, using eth tomb reaver 100ias(10 WSM which becomes -10 in formula), lvl 33 werewolf(75 SIAS), 10 gear ias(not needed for breakpoint) :
Delay = [256*(17) / [(100+-10+100)*256/100]] = 8
Anim speed = [9 * 256 / 8] = 288
Speed increase/EIAS = [120 * 110 / (120 + 110)] + 75 + -10 = 122 (this would be 75 in d2lod)
FramesSerial = {256*7/[(100 + 122)/100*288]} = 3
FramesPaw = {256*13/[(100 + 122)/100*288]}- 1 = 5
Resulting in a 3/3/3/3/5 frame attack.
25/3 = 8,33 attacks pr sec
25/5 = 5 attacks pr sec
(8,33*4+5)/5 = 7,66 attacks pr sec.

* Formula with example(Bear Assassin, using Runic Claw 100ias(-30 WSM which becomes 30 in formula), lvl 36 Bos(57 SIAS) + lvl 15fana merc (33 SIAS) + 140 GearIas:
Delay = [256*(11) / [100+30+100)*208/100]] = 5
Anim speed = [10 * 256 / 5] = 512
Speed increase/EIAS = [120 * 240 / (120 + 240)] + 90 + 30 = 200 (this would be 75 in d2lod)
Frames BearPaw = {256*12/[(208 + Speed increase)/100*Anim speed]}- 1 = 1 FRAME! 25 attacks pr second. On regular D2LOD this would be 3 frames.

Amazon:
EIAS = {120*ias/(120+ias)}+SIAS-WSM
Bow(not strafe) :
AnimationLenght = How many frames between each shot.
AnimationLenght = {14/(1+(Eias/100))-1}
ActionFrame = {6/(1+(Eias/100))-1}

Ama using bow.
EIAS breaks:
EIAS - - FPA
0 - - 13
8 - - 12
17 - - 11
28 - - 10
40 - - 9
56 - - 8
75 - - 7
100 - - 6
134 - - 5

Ama using throw jav:
{16 / (1+(Eias/100))} - 1
EIAS - - fpa
0 - - 15
7 - - 24
15 - - 13
24 - - 12
34 - - 11
46 - - 10
60 - - 9 (this used to be 61... And last in d2lod)
78 - - 8
100 -- 7
129 - - 6
167 - - 5

Ama stabbing with jav/charged strike etc:
{13 / (1+(eias/100))}-1

EIAS - - fpa
0 - - 12
9 - - 11
19 - - 10
30 - - 9
45 - - 8
63 - - 7
86 - - 6
117 - - 5

Jab:
EIAS = [120*ias/(120+ias)+SIAS-(WSM+30)
1 handed:
Frames = {18/(1+(EIAS/100))}
AverageFrames = Frames/3
Attacks pr sec = 25/AverageFrames

So the +30 to wsm made this EIAS for jab low, which is why breakpoint ended at 280ias.

[120*280/(120+280)+0-(-10+30)]
= 64 EIAS

{18/(1+(64/100))} = 11
11 / 3 = 3,66 fpa

25/3,66 = 6,83 attacks pr sec

2 handed spear jab:
Fpa = {21/(1+(Eias/100))}
AverageFrames = fpa / 3

EIAS tables:
Buffering... Haha i cba now...

Barbarian:
EIAS = [120*ias/(120+ias)+SIAS-realWSM

Berserk:
Ceiling(FramesPrDirection/(1+(Eias/100))-1;1)
FramesPrDirecrion:
Most weps: 16
2 hand swords: 18
2 handed trusting: 19
Staff/polearms etc: 19
Hands/knife: 12
Bow: 15
Xbow: 20
So most likely u use 16, 18 or 19 here.

Shoting bow(widowmaker) :
Ceiling(15/(1+(Eias/100))-1;1)

SingleThrow:
Ceiling(16/(1+(Eias/100))-1;1)

Double throw / frenzy / double swing:
Vincrease doublethrow/frenzy =ceiling(70-(WsmLeft+WsmRight)/2+SIAS+(120*ias/(120+ias));1)

Vincrease doubleswing =ceiling(120-(WsmLeft+WsmRight)/2+SIAS+(120*ias/(120+ias));1)

(WsmLeft+WsmRight)/2 = true wsm when no wsm bug. So u can shorten it if u want. And if wsm bug use that instead.
U can also keep formula exactly as is, and if wsm bug just write ur real wsm in both fields.

Frames:
Double throw:
=ceiling(256*12/floor(256*Vincr/100;1);1)/2
Frenzy/double swing:
=ceiling(256*17/floor(256*Vincr/100;1);1)/2

Wirlwind 2 handed:
Formulas is probarly not like this, i cheat on this but it will work.

EIAS = (wsmPrWepIndividual + ias) *(-1)

Frames 1 handed wepons(ofc each wep) :
=If(Eias>33;4;If(Eias>9;6;If(Eias>-11;8;If(Eias>-35;10;12))))

Frames 2 handed wep:
=If(Eias>59;4;If(Eias>29;6;If(Eias>9;8;If(Eias>-1;10;12))))


Updated, info added. Etc..
Fixes.
Adds:
Wirl, dragon claw, zerk, double swing and double throw, barb bow, single throw, frenzy, amazon attacks etc.

Paladin/sorc will come later when i bother, smite is {12/(1+(eias/100))-1} if i remember correct.
I dont think any1 else uses ias. Well necro bear.. But if u read werebear section the info is there... For all all bear classes...

This post was edited by gel87 on Nov 9 2021 11:24am
Member
Posts: 2,909
Joined: Oct 26 2003
Gold: 0.20
Nov 9 2021 11:34am
Anyone test javazon and fend?
Member
Posts: 21,932
Joined: Sep 3 2006
Gold: 455.00
Nov 9 2021 01:46pm
Quote (molson_drinker @ Nov 9 2021 06:34pm)
Anyone test javazon and fend?


I miss fend, but jab, cs, bolt, fury is covered.

Paladin:
Smite:
Frames = {12/(1+(EIAS/100))}-1
EIAS table for smite:
EIAS -- fpa:
0 - - 11
10 - - 10
20 - - 9
34 - - 8
50 - - 7
72 - - 6
100 - - 5 (grief pb, 37 SIAS, 46ias)
140 - - 4 (grief pb, 37 SIAS, 187ias)

Zeal:
Frames serial = {[FramesPerDirection/2]/(1+(Eias/100))}
Frames normal attack = {FramesPerDirection / (1+(Eias/100))}

Zeal exists of 4 serial and 1 normal.

I cba write eias table. Refer to table linked in first post for FramesPerDirection.
15 for 1 handed swing like pb and Z
17 for 1 handed trust like stygian javs.
18 for STF (staffs, 2 handed mauls/axes/polearm).
18 for 2 handed swords
20 for 2 handed thrust like spears/pikes
Bow etc is the same. Just use framesPerDirection according to table if u shot arrows or whatever.

This post was edited by gel87 on Nov 9 2021 01:47pm
Member
Posts: 2,909
Joined: Oct 26 2003
Gold: 0.20
Nov 9 2021 01:48pm
Quote (gel87 @ Nov 9 2021 02:46pm)
I miss fend, but jab, cs, bolt, fury is covered.

Paladin:
Smite:
Frames = {12/(1+(EIAS/100))}-1
EIAS table for smite:
EIAS -- fpa:
0 - - 11
10 - - 10
20 - - 9
34 - - 8
50 - - 7
72 - - 6
100 - - 5 (grief pb, 37 SIAS, 46ias)
140 - - 4 (grief pb, 37 SIAS, 187ias)

Zeal:
Frames serial = {[FramesPerDirection/2]/(1+(Eias/100))}
Frames normal attack = {FramesPerDirection / (1+(Eias/100))}

Zeal exists of 4 serial and 1 normal.

I cba write eias table. Refer to table linked in first post for FramesPerDirection.
15 for 1 handed swing like pb and Z
17 for 1 handed trust like stygian javs.
18 for STF (staffs, 2 handed mauls/axes/polearm).
18 for 2 handed swords
20 for 2 handed thrust like spears/pikes
Bow etc is the same. Just use framesPerDirection according to table if u shot arrows or whatever.


Fend I'm most curious about... If D/A/E bug is out, and ias caps are broken rift spear and fend might be viable

This post was edited by molson_drinker on Nov 9 2021 01:48pm
Member
Posts: 21,932
Joined: Sep 3 2006
Gold: 455.00
Nov 9 2021 02:36pm
Sorc
SOA11HS 20 256
SOA11HT 19 256
SOA12HS 24 256
SOA12HT 23 256
SOA1BOW 17 256
SOA1HTH 16 256
SOA1STF 18 256
SOA1XBW 20 256
SOA21HS 20 256

Sorc zealing, use same formula as pala.
She use same formula for normal attack as well, but:
Quote
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.


What i found by this was that:
Normal attacks:
Hands = HTH-1 aka 15
Knife = HTH+1 aka 17 or maby trust-2 which also is 17.
Swinging weps = 1HS-2 aka 18

Zeal:
Frames serial = {[FramesPerDirection/2]/(1+(Eias/100))}
Frames normal attack = {FramesPerDirection / (1+(Eias/100))}
Zeal use listed framesPrDirection-1 which is 19 for swords.

Werebear use regular formula, but u need to include:
Sorc's framesPrDirection.
Here animspeed is 256 anyway, so no change there like we needed to do with claw assa.

This post was edited by gel87 on Nov 9 2021 03:09pm
Member
Posts: 21,932
Joined: Sep 3 2006
Gold: 455.00
Nov 9 2021 02:56pm
Quote (molson_drinker @ Nov 9 2021 08:48pm)
Fend I'm most curious about... If D/A/E bug is out, and ias caps are broken rift spear and fend might be viable


I'll make an attempt later. I have some info to go from:

Quote
In a similar manner you can then try checking the repative cycles of skills like Strafe.
Amazon bow anim_length=14, repeat_anim would be 14/2=7, rollback of Strafe is 50%.
Frames_to_rollback= 50*7/100 =3
For Amazon using a xbow, anim_length=20, repeat_anim=20/2=10.
Frames_to_rollback= 50*10/100 =5
Which match the accepted figures.

Ama Fend has a rollback of 60%.
1ht anim_length is 15, repeat_anim=7
Frames_to_rollback= 60*7/100 =4
2ht anim_length=18, repeat_anim=9
Frames_to_rollback= 60*9/100 =5
How well does this fit with a rigourous testing of Fend?

This relationship would be somewhat obscured if one is alway thinking of the 'base' as the real value and not realising why the "+1" is including in certain spots
.
Member
Posts: 7,655
Joined: Mar 6 2008
Gold: 15.00
Nov 9 2021 03:11pm
Member
Posts: 6,245
Joined: Jan 11 2018
Gold: 64.00
Nov 9 2021 03:16pm
Quote (schnoig2 @ Nov 9 2021 01:11pm)


ah gee u solved everything thanks bro quality post
Go Back To D2:R Discussion Topic List
Prev1345679Next
Add Reply New Topic New Poll