How do attack speed actually affect the unit?

Solu9

You can change this now in User CP.
Reaction score
216
Let me give an example.

The unit has an attack cooldown of 3 seconds.
The unit then obtains a Dagger of Speed which has 25% attack speed

Question: What is the unit's attack cooldown now? 2.25 seconds?

Bonus question: If the above is true. I know attack speed stacks. If the unit obtains another Dagger of Speed will the attack cooldown be 1.50 seconds?
 

keychup

Active Member
Reaction score
34
interesting. gonna test it now.

EDIT:

So i made a test map.

I set the paladin's attack coolown to 3.
I set his damage point, backswing point and agility point to 0 so that they won't interfere with the actual speed of the hero.
I decided to measure his attack speed in attacks per second.
After 10 attacks the average attacks per second was 0.3 (1dp) (which makes sense because 1 attack per 3 seconds is approximately equal to 1/3 or 0.3 (1 dp) attacks per second).

To test whether my calculations were correct I changed the agility bonuses to grant 1% attack speed increase per agility point.

Then I gave the paladin a bonus 200 agility points (+200% attack speed).
In theory, increasing his attack speed by 200% will increase his attack speed to 300% of the original attack per second.
This will thus raise is attack speed to 1.00 aps.
300% of 0.3xx
=300/100 * 1/3
=300/300
=0.9xx aps
~1.00 aps

Next i changed the item called Janggo of Endurance to give it a bonus 25% attack speed.
The results say that the paladin now has an average of 0.4 (1dp) aps.

Arithmetically increasing 0.3 by 25% will yield a 0.4 (1dp) which approximately corresponds to the results correctly.

Then I made a second Janggo of Endurance which also has the same effect but can stack over the first bonus.
The results say that the paladin now has an average of 0.5xx aps.

Arithmetically increasing the base aps (0.3, 1 dp) by 50% will yield a 0.5 (1dp) which approximately corresponds to the results correctly.
Also, increasing the boosted aps (0.4, 1 dp) by 25% will yield a 0.5 (0.5) which also approximately corresponds to the results correctly.

Either way, whether you calculate the attack speed boosts using either the following methods, the results are approximately the same.

-base+(base*bonus)+(base*bonus)+(base*bonus)
-(((base*(1+bonus))*(1+bonus))*(1+bonus))
 

Solu9

You can change this now in User CP.
Reaction score
216
So in other words. Is my assumption correct or not? Im am in no state to break any formula at the moment. Driving on my 28th hour :eek:
 

keychup

Active Member
Reaction score
34
i dont recommend making attack speed notifications part of your map. the thing is, all your heroes are gonna have different attack cooldowns, damage points and backswings. also several boosts and drops on your units have to be taken into consideration, making your formula much too long. this would also be problematic if you plan to add additional attack speed boosts and drops when you update, meaning any new buff would have to be incorporated into your formula.
 

Solu9

You can change this now in User CP.
Reaction score
216
All of my heroes are the same. So the same attack speed applies to all of them.
 

Solu9

You can change this now in User CP.
Reaction score
216
Aye. Im still confused by your findings in the mathematical deeps. Im I right or not? ;)
 

Solu9

You can change this now in User CP.
Reaction score
216
All I wanted to hear. Thanks for looking into it.
 

Tom_Kazansky

--- wraith it ! ---
Reaction score
157
formula from Blizzard: AC = BAC / ( 1 + IAS/100)

AC: attack cooldown
BAC: base attack cooldown
IAS: increased attack speed (sum of all AS from items,abilities,buffs,...)

FYI, maximum IAS is 400% and minimum is -80%
---
e.g:

BAC: 3.0
IAS: 25%

AC = 3.0 / ( 1 + 25/100) = 2.4 (aps)


BAC: 3.0
IAS: 50%

AC = 3.0 / (1 + 50/100) = 2.0 (aps)
---
how do I test this?

I have unit A and unit B, a counter variable (TempInt), a timer TempTimer
a trigger that is run when B is attacked
if TempInt = 0 => start TempTimer as a repeating timer of 0.01s
if TempInt > 0 => Game - Display Text, display TempInt and set TempInt = 0

TempTimer expires
increases TempInt by 1

first time: TempInt = 0, start timer TempTimer
second time: TempInt > 0 => this is the time between attacks of "whoever attacks B" (in this case, A, yes?)
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      • Ghan
        Administrator - Servers are fun

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top