30% speed boost = 0.7x original speed.
100% original speed - 30% original speed = 70% original speed = 0.7x
Heres the original post on the topic:
http://celtic-heroes.com/forum/viewtopic.php?t=65710
Attack speed is linear. There is no other correct formula, it just comes down to testing and math.
I have tested this and confirm it.
Equip a cruel knife and a 30% speed boost. Then attack a mob and time how long it takes for 10 DMG numbers to appear.
Then use heroic haste and repeat experiment. You will see that the 2 times are exactly the same.
Were it speed/(1+mod), the above would not be the case. Cruel knife speed is 1471.
1471/1.3 = 1131. 1471/1.6 = 919 (capped at 1100). 1100 != 1131.
It's very easy to see in game. 1100 speed = 1 attack per 1.1 second. Set up a timer for 100 seconds, reach the speed cap and attack some enemy, and you will see that 90-91 damage numbers will appear, ie 90 or 91 hits. Were it 1471/1.3, you would see 100/1.131 = 88 damage numbers.
There is no such thing as attack speed vs attack delay. There is only one number: the speed of your weapon.
The game works with whats called tick cycles. Every x milliseconds, the server will process every queued player action. Im not sure exactly the code VR is running, or how long their tick cycle is, but it boils down to something like this:
When a player attacks an enemy, his attack timer is set to the current timestamp in milliseconds (
https://en.wikipedia.org/wiki/Unix_time)
Each game tick, the server will check if the current timestamp - the player attack timer (old timestamp) >= the players modified attack speed (1100).
If the current timestamp - old timestamp >= modified attack speed, the player will attack, reset the attack timer to current timestamp, and process repeats.
(software wise, the better way to do it is set timer variable = attack speed, and subtract the tick time every tick until it hits 0 and repeat, but above is better way of describing the process.
Just from observing the game, I'm assuming the servers run with a 100ms process time.
*edit* as per above
I forgot to mention. Your actually weapon speeds depends on the order in which actions are processed.
If you are processed first in a list of 500 other players, your attack speed will be 1100. If you are processed last, then depending on how long each player takes to process, your attack speed would be more.
Assuming the tick time is 100ms, it is safe to assume no more than 75ms of actual processing time and 25ms idle time -- and these are very generous values.
So if you have capped at the 1100 speed mark, then your slowest possible observed speed would be 1175.
However... Also taking a safe assumption that the server processes player actions in random order each tick. So, at the 1100 cap, your observed attack speed would be 1100 + random(0-75)