04-01-2003, 10:57 PM
(This post was last modified: 04-01-2003, 11:04 PM by TheDragoon.)
This morning I was sitting around between classes today, thinking about possibly going and testing the attack speeds for two-handed swords as compared to one-handed swords for the Werebear, to get final confirmation as to whether all swords were treated the same for Wereform speeds. As I got on the test character, it occurred to me, why don't I check to see if, for a given base animation length value, Werewolf and Werebear breakpoints are the same. So, I went and got out my trusty attack speed charts. These are the animation length values as have been derived in the past:
Base Weapon Werewolf Werebear Druid
1-H weapons 28 23 20
1-H thrusting 28 23 20
2-H sword 28 22 or 23 21
2-H thrusting 32 to 34 26 or 27 23
2-H other 24 20 17
However, it occurred to me that perhaps whoever initially tested these values did NOT take the additional SIAS from slvl 1 Werewolf into account when deriving these. Thus, the actual base animation length for a Werewolf would be slightly longer than listed. In this case, I decided to compare the Werewolf breakpoints for Two-Handed Axes/Polearms/Maces/Staves against the breakpoints for a Werebear's Two-Handed Swords.
Now, since there is a SIAS different between these two forms, I had to somehow grant my Werebear a SIAS bonus equivalent to that of a Werewolf. Thus, what I did was go into the skills.txt file and set it up so that the Werewolf skill would give me 0% SIAS with an additional 0% SIAS every skill level. Thus, I would have Werewolf attack speeds that DID NOT TAKE SIAS INTO ACCOUNT!
I have tested that the chart for Werebear animation lengths with 0 Weapon Speed Two-Handed Swords are as follows (WIAS down the left, OIAS across the top):
-- 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70
0 22 22 21 20 19 19 18 18 17 17 17 16 16 16 15
5 20 19 19 18 18 17 17 16 16 16 15 15 15 15 14
10 18 18 17 17 16 16 15 15 15 14 14 14 14 14 13
15 17 16 15 15 15 14 14 14 14 13 13 13 13 13 12
20 15 15 14 14 13 13 13 13 12 12 12 12 12 12 11
25 15 14 14 13 13 13 13 12 12 12 12 12 12 11 11
30 13 13 13 12 12 12 12 11 11 11 11 11 11 11 10
35 13 13 12 12 12 12 11 11 11 11 11 11 11 10 10
40 12 11 11 11 11 11 11 10 10 10 10 10 10 10 10
45 11 11 11 11 11 10 10 10 10 10 10 10 10 10 9
50 10 10 10 10 10 9 9 9 9 9 9 9 9 9 9
55 10 10 10 10 9 9 9 9 9 9 9 9 9 9 8
60 9 9 9 9 8 8 8 8 8 8 8 8 8 8 8
65 9 9 9 8 8 8 8 8 8 8 8 8 8 8 8
70 9 9 8 8 8 8 8 8 8 8 8 8 8 8 8
75 8 8 8 7 7 7 7 7 7 7 7 7 7 7 7
80 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7
85 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7
90 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
95 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6
100 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6
Thus, it was my goal to check to see if the Werewolf attack speeds would match this table. I first tested it with 0% WIAS, 0% OIAS: 22 frames. Next I check 20% WIAS, 5% OIAS: 15 frames. Then 20% WIAS, 10% OIAS: 14 frames. Finally 95% WIAS, 5% OIAS: 7 frames and 100% WIAS, 5% OIAS: 6 frames.
EVERYTHING MATCHED UP!
Thus, I knew that the whole idea of there being differing "BASE" values for Werewolf and Werebear forms was completely wrong! Those values were merely "fudge-factors" to make up for the fact that the actual base animation lengths for the Werewolf form were wrong (due to the SIAS at level 1)!
To make the effects of this more obvious to everyone, here is the approximation for Wereform attack speed that I initially started testing with:
WIAS = Increased Attack Speed Found on a Weapon
OIAS = Increased Attack Speed Found on non-weapon Equipment
IAS = Total Increased Attack Speed of all Equipment
EIAS = The effective IAS after calculating diminishing returns according to the formula:
= 120 (IAS) / (120 + IAS)
SIAS = All of the Increased Attack Speed you are gaining from skills (skill IAS is not subject to diminishing returns and, so, is added in after using the diminishing formula). These include Werewolf, Fanaticism, Frenzy (though you donât get this with a druid!), Burst of Speed (same deal!), etc.
WS = Weapon Speed; This is the negative value of those numbers appearing in the Chaos Sanctuary for the base item type you are using (IE -10 for a Maul, +10 for a Great Axe)
SI = Speed Increase = WS + SIAS + EIAS
Now for the two main equations on how all of this works: [] Means Round Down, {} Means Round Up
WF = Wereform Speed Modifier = WF = [256 * (BASE + 1) / [256 * WB / [256 * (1 + (WS + WIAS) / 100)] ] ]
F = Frames per attack = F = {256*(BASE+1) / [ [256*(1 + SI / 100)] * WF / 256 ] } - 1
In this case, the BASE value must, indeed, be the same for both the Werewolf and the Werebear as per the tests this morning. Thus, the (BASE+1) that keeps cropping up can just be simplified to a single number: 12.
Now, 12 is a VERY arbitrary number, so I wondered why, exactly, would it be used. I thought about this for a while and then wondered if perhaps the (BASE+1) value for the Werebear was ALSO wrong! Perhaps instead of 12, as it was thought to be, it had something to do with the number of frames that the game runs at: 25. Thinking about this, I noticed that twice of 12 was, in fact, 24, which is close to 25. All that would be needed to tweak this value to 25 would result in the following correction to the equations:
WF = Wereform Speed Modifier = WF = [128 * (25) / [128 * WB / [128 * (1 + (WS + WIAS) / 100)] ] ]
F = Frames per attack = F = {128*(25) / [ [128*(1 + SI / 100)] * WF / 128 ] } - 1
This tweak provides the following insights:
1. Removing the arbitrary (BASE+1) term left the equation entirely dependant upon the Weapon Speed(WS), Weapon IAS (WIAS), the Wereform Base Animation Length (WF) and the Speed Increase term (SI). This is a much more elegant expression of this equation since all of the variables therein are based upon one's equipment (with the exception of WF, which is hard-coded into the game engine just as any other class). There no longer is a SECOND hard-coded variable in the equation.
2. Instead of multiplying by 256, you multiply by 128. Now, initially, this is troubling. Why should this change take place. I honestly do not have any real evidence to answer this question, but I do have a theory. The answer likely lies in the mechanics of how this is calculated. In binary (the base 2 number system used in computers), multiplying by 256 merely shifts whatever number you have to the left 8 digits. Thus, 000000001 multiplied by 256 would yield 100000000. Multiplying by 128, instead, causes the value to shift 7 digits. Thus, to figure out how this all rounds, you would multiply by the number of frames of animation (25) and shift the result 7 places to the left and then round. I have not gone through and tested this extensively, but in all likelyhood, this rounding is likely the only thing left to decipher about the equations.
Now, upon making these changes, I decided to check a couple breakpoints to see if these equations were at all better. I decided to check out the Hellslayer Breakpoints for the Werebear. This is what I derived using the equation:
Unshaeled (0% WIAS):
0% OIAS = 24 Frame Attack
4% OIAS = 23 Frame Attack
12% OIAS = 21 Frame Attack <----Likely due to Rounding Error.. off by 2%
19% OIAS = 20 Frame Attack
26% OIAS = 19 Frame Attack <----Rounding Error.. Off by 1%
36% OIAS = 18 Frame Attack <----More Rounding Error.. off by 1%
62% OIAS = 16 Frame Attack <----Also likely due to Rounding Error.. off by 2%
Shaeled (20% WIAS):
0% OIAS = 16 Frame Attack
9% OIAS = 15 Frame Attack
22% OIAS = 14 Frame Attack
40% OIAS = 13 Frame Attack
66% OIAS = 12 Frame Attack
107% OIAS = 11 Frame Attack <---New breakpoint found by these equations! Someone try out a shaeled -10 base Two-Handed Axes/Polearms/Maces/Staves with 110% OIAS!
EDIT: I forgot the actual breakpoints:
Attack Speed Breakpoints (0% WIAS):
0% OIAS = 24 frame attack
5% OIAS = 23 frame attack
10% OIAS = 21 frame attack
20% OIAS = 20 frame attack
25% OIAS = 19 frame attack
35% OIAS = 18 frame attack
45% OIAS = 17 frame attack
60% OIAS = 16 frame attack
With a Shael Rune (20% WIAS):
0% OIAS = 16 frame attack
10% OIAS = 15 frame attack
25% OIAS = 14 frame attack
40% OIAS = 13 frame attack
70% OIAS = 12 frame attack
I've noted where the derived breakpoint is slightly different from the actual breakpoints listed below. Note that in every case where it is off, it is only off by TWO PERCENT AT MOST! This SCREAMS rounding error to me!
Finally, just to be sure that the equation doesn't break down at higher speeds like so many before it, I input the numbers for a Werewolf using a Phase Blade. As we know from my tests, and Concillian's Werewolf charts, there should be the following breakpoints:
85% WIAS = 6 Frame Attack
110% WIAS = 5 Frame Attack
Inputting the numbers, I got the following:
83% WIAS = 6 Frame Attack
107% WIAS = 5 Frame Attack
Basically, I was very "@_@" upon seeing all of this. I can't believe that something this simple, the unification of both Wereforms into one equation, could have been overlooked for so long. Now if we can find that rounding error, we'll have the grand Wereform attack speed equation we've always wanted! The light at the end of the tunnel is fast approaching! Hopefully we can figure this out soon and be done with it! I'll keep everyone up to date in my attempts to find the rounding error.
Base Weapon Werewolf Werebear Druid
1-H weapons 28 23 20
1-H thrusting 28 23 20
2-H sword 28 22 or 23 21
2-H thrusting 32 to 34 26 or 27 23
2-H other 24 20 17
However, it occurred to me that perhaps whoever initially tested these values did NOT take the additional SIAS from slvl 1 Werewolf into account when deriving these. Thus, the actual base animation length for a Werewolf would be slightly longer than listed. In this case, I decided to compare the Werewolf breakpoints for Two-Handed Axes/Polearms/Maces/Staves against the breakpoints for a Werebear's Two-Handed Swords.
Now, since there is a SIAS different between these two forms, I had to somehow grant my Werebear a SIAS bonus equivalent to that of a Werewolf. Thus, what I did was go into the skills.txt file and set it up so that the Werewolf skill would give me 0% SIAS with an additional 0% SIAS every skill level. Thus, I would have Werewolf attack speeds that DID NOT TAKE SIAS INTO ACCOUNT!
I have tested that the chart for Werebear animation lengths with 0 Weapon Speed Two-Handed Swords are as follows (WIAS down the left, OIAS across the top):
-- 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70
0 22 22 21 20 19 19 18 18 17 17 17 16 16 16 15
5 20 19 19 18 18 17 17 16 16 16 15 15 15 15 14
10 18 18 17 17 16 16 15 15 15 14 14 14 14 14 13
15 17 16 15 15 15 14 14 14 14 13 13 13 13 13 12
20 15 15 14 14 13 13 13 13 12 12 12 12 12 12 11
25 15 14 14 13 13 13 13 12 12 12 12 12 12 11 11
30 13 13 13 12 12 12 12 11 11 11 11 11 11 11 10
35 13 13 12 12 12 12 11 11 11 11 11 11 11 10 10
40 12 11 11 11 11 11 11 10 10 10 10 10 10 10 10
45 11 11 11 11 11 10 10 10 10 10 10 10 10 10 9
50 10 10 10 10 10 9 9 9 9 9 9 9 9 9 9
55 10 10 10 10 9 9 9 9 9 9 9 9 9 9 8
60 9 9 9 9 8 8 8 8 8 8 8 8 8 8 8
65 9 9 9 8 8 8 8 8 8 8 8 8 8 8 8
70 9 9 8 8 8 8 8 8 8 8 8 8 8 8 8
75 8 8 8 7 7 7 7 7 7 7 7 7 7 7 7
80 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7
85 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7
90 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
95 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6
100 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6
Thus, it was my goal to check to see if the Werewolf attack speeds would match this table. I first tested it with 0% WIAS, 0% OIAS: 22 frames. Next I check 20% WIAS, 5% OIAS: 15 frames. Then 20% WIAS, 10% OIAS: 14 frames. Finally 95% WIAS, 5% OIAS: 7 frames and 100% WIAS, 5% OIAS: 6 frames.
EVERYTHING MATCHED UP!
Thus, I knew that the whole idea of there being differing "BASE" values for Werewolf and Werebear forms was completely wrong! Those values were merely "fudge-factors" to make up for the fact that the actual base animation lengths for the Werewolf form were wrong (due to the SIAS at level 1)!
To make the effects of this more obvious to everyone, here is the approximation for Wereform attack speed that I initially started testing with:
WIAS = Increased Attack Speed Found on a Weapon
OIAS = Increased Attack Speed Found on non-weapon Equipment
IAS = Total Increased Attack Speed of all Equipment
EIAS = The effective IAS after calculating diminishing returns according to the formula:
= 120 (IAS) / (120 + IAS)
SIAS = All of the Increased Attack Speed you are gaining from skills (skill IAS is not subject to diminishing returns and, so, is added in after using the diminishing formula). These include Werewolf, Fanaticism, Frenzy (though you donât get this with a druid!), Burst of Speed (same deal!), etc.
WS = Weapon Speed; This is the negative value of those numbers appearing in the Chaos Sanctuary for the base item type you are using (IE -10 for a Maul, +10 for a Great Axe)
SI = Speed Increase = WS + SIAS + EIAS
Now for the two main equations on how all of this works: [] Means Round Down, {} Means Round Up
WF = Wereform Speed Modifier = WF = [256 * (BASE + 1) / [256 * WB / [256 * (1 + (WS + WIAS) / 100)] ] ]
F = Frames per attack = F = {256*(BASE+1) / [ [256*(1 + SI / 100)] * WF / 256 ] } - 1
In this case, the BASE value must, indeed, be the same for both the Werewolf and the Werebear as per the tests this morning. Thus, the (BASE+1) that keeps cropping up can just be simplified to a single number: 12.
Now, 12 is a VERY arbitrary number, so I wondered why, exactly, would it be used. I thought about this for a while and then wondered if perhaps the (BASE+1) value for the Werebear was ALSO wrong! Perhaps instead of 12, as it was thought to be, it had something to do with the number of frames that the game runs at: 25. Thinking about this, I noticed that twice of 12 was, in fact, 24, which is close to 25. All that would be needed to tweak this value to 25 would result in the following correction to the equations:
WF = Wereform Speed Modifier = WF = [128 * (25) / [128 * WB / [128 * (1 + (WS + WIAS) / 100)] ] ]
F = Frames per attack = F = {128*(25) / [ [128*(1 + SI / 100)] * WF / 128 ] } - 1
This tweak provides the following insights:
1. Removing the arbitrary (BASE+1) term left the equation entirely dependant upon the Weapon Speed(WS), Weapon IAS (WIAS), the Wereform Base Animation Length (WF) and the Speed Increase term (SI). This is a much more elegant expression of this equation since all of the variables therein are based upon one's equipment (with the exception of WF, which is hard-coded into the game engine just as any other class). There no longer is a SECOND hard-coded variable in the equation.
2. Instead of multiplying by 256, you multiply by 128. Now, initially, this is troubling. Why should this change take place. I honestly do not have any real evidence to answer this question, but I do have a theory. The answer likely lies in the mechanics of how this is calculated. In binary (the base 2 number system used in computers), multiplying by 256 merely shifts whatever number you have to the left 8 digits. Thus, 000000001 multiplied by 256 would yield 100000000. Multiplying by 128, instead, causes the value to shift 7 digits. Thus, to figure out how this all rounds, you would multiply by the number of frames of animation (25) and shift the result 7 places to the left and then round. I have not gone through and tested this extensively, but in all likelyhood, this rounding is likely the only thing left to decipher about the equations.
Now, upon making these changes, I decided to check a couple breakpoints to see if these equations were at all better. I decided to check out the Hellslayer Breakpoints for the Werebear. This is what I derived using the equation:
Unshaeled (0% WIAS):
0% OIAS = 24 Frame Attack
4% OIAS = 23 Frame Attack
12% OIAS = 21 Frame Attack <----Likely due to Rounding Error.. off by 2%
19% OIAS = 20 Frame Attack
26% OIAS = 19 Frame Attack <----Rounding Error.. Off by 1%
36% OIAS = 18 Frame Attack <----More Rounding Error.. off by 1%
62% OIAS = 16 Frame Attack <----Also likely due to Rounding Error.. off by 2%
Shaeled (20% WIAS):
0% OIAS = 16 Frame Attack
9% OIAS = 15 Frame Attack
22% OIAS = 14 Frame Attack
40% OIAS = 13 Frame Attack
66% OIAS = 12 Frame Attack
107% OIAS = 11 Frame Attack <---New breakpoint found by these equations! Someone try out a shaeled -10 base Two-Handed Axes/Polearms/Maces/Staves with 110% OIAS!
EDIT: I forgot the actual breakpoints:
Attack Speed Breakpoints (0% WIAS):
0% OIAS = 24 frame attack
5% OIAS = 23 frame attack
10% OIAS = 21 frame attack
20% OIAS = 20 frame attack
25% OIAS = 19 frame attack
35% OIAS = 18 frame attack
45% OIAS = 17 frame attack
60% OIAS = 16 frame attack
With a Shael Rune (20% WIAS):
0% OIAS = 16 frame attack
10% OIAS = 15 frame attack
25% OIAS = 14 frame attack
40% OIAS = 13 frame attack
70% OIAS = 12 frame attack
I've noted where the derived breakpoint is slightly different from the actual breakpoints listed below. Note that in every case where it is off, it is only off by TWO PERCENT AT MOST! This SCREAMS rounding error to me!
Finally, just to be sure that the equation doesn't break down at higher speeds like so many before it, I input the numbers for a Werewolf using a Phase Blade. As we know from my tests, and Concillian's Werewolf charts, there should be the following breakpoints:
85% WIAS = 6 Frame Attack
110% WIAS = 5 Frame Attack
Inputting the numbers, I got the following:
83% WIAS = 6 Frame Attack
107% WIAS = 5 Frame Attack
Basically, I was very "@_@" upon seeing all of this. I can't believe that something this simple, the unification of both Wereforms into one equation, could have been overlooked for so long. Now if we can find that rounding error, we'll have the grand Wereform attack speed equation we've always wanted! The light at the end of the tunnel is fast approaching! Hopefully we can figure this out soon and be done with it! I'll keep everyone up to date in my attempts to find the rounding error.
-TheDragoon