This is the plugin I used to determine the skill timings, as described
here.
This plugin reports when any of your skills goes on cooldown. In the Lua interface, cooldowns are represented as a ResetTime (when the skill's cooldown will be ended) and a Cooldown (the skill's total cooldown time). The plugin reports the skill name, ResetTime - Cooldown (when the skill went on cooldown), and Cooldown.
Skills appear to have an activation time (ACT) and a global cooldown time (GCD), as well as a regular cooldown and induction time. When a skill is activated, both the ACT and GCD timers start. Once the ACT timer is finished, the skill goes on cooldown. Once the GCD timer is finished, other skills may be used. By using the plugin to look at when a skill goes on cooldown, we can determine the ACT and GCD of a skill. So far I have come up with three use cases (all examples are a champion with no attack duration modifiers using a two-handed sword):
1. Spamming a skill to determine its ACT. Since a skill does not go on cooldown until its ACT has finished, if we spam a skill, the amount of time between skill uses will be the skill's ACT + the skill's cooldown. Since we know the cooldown, we can then determine the skill's ACT.
For example, if we spam "Wild Attack", we might get:
Code:
Wild Attack: 0 1.7999999523163
Wild Attack: 3.720644980669 1.7999999523163
"Wild Attack" is the skill name, 0 and 3.72 are the times at which the skill went on cooldown, and 1.80 is the cooldown. The sequence of events looks something like:
- Time = 0.00, Cooldown = 1.80, First Wild Attack finished activating (ACT end), cooldown started
- Time = 1.80, Cooldown = 0.00, First Wild Attack finished cooling down, Second Wild Attack started activating (ACT start)
- Time = 3.72, Cooldown = 1.80, Second Wild Attack finished activating (ACT end), cooldown started.
Bolded times indicate times observed using the plugin. "Wild Attack"'s second ACT period started at 1.80 and ended at 3.72, meaning its ACT is (3.72 - 1.80 = 1.92).
Similarly, if we spam "Swift Strike", we might get:
Code:
Swift Strike: 0 3.2000000476837
Swift Strike: 3.5933996737003 3.2000000476837
Again, the sequence of events look like:
- Time = 0.00, Cooldown = 3.20, First Swift Strike finished activating (ACT end), cooldown started
- Time = 3.20, Cooldown = 0.00, First Swift Strike finished cooling down, Second Swift Strike started activating (ACT start)
- Time = 3.59, Cooldown = 3.20, Second Swift Strike finished activating (ACT end), cooldown started.
Giving "Swift Strike" an ACT of (3.59 - 3.20 = 0.39).
2. We can execute two skills whose ACTs we know in succession in order to determine the first skill's GCD. Since the GCD of the first skill will start when its ACT does (which will be when the first skill goes on cooldown minus its ACT) and ends when the second skill's ACT starts (which will be when the second skill goes on cooldown minus its ACT), we can determine the first skill's GCD from the timing information.
For example, "Wild Attack" followed by "Swift Strike" might give us:
Code:
Wild Attack: 0 1.7999999523163
Swift Strike: 1.0002981722355 3.2000000476837
This time, the sequence of events is:
- Time = -1.92, pre-GCD = 0.00, post-GCD = x, Wild Attack started activating (ACT and GCD start)
- Time = 0.00, pre-GCD = x - 1.92, post-GCD = x - 1.92, Wild Attack finished activating (ACT end)
- Time = 0.61, pre-GCD = x - 2.53 = 0, post-GCD = y, Wild Attack's GCD finishes, Swift Strike started activating (ACT and GCD start)
- Time = 1.00, pre-GCD = y - 0.39, post-GCD = y - 0.39, Swift Strike finished activating (ACT end)
Here, we can see that
x = 2.53, which is "Wild Attack"'s GCD. In actual practice, I assume that the GCD of skills is related to their weapon speeds, so I would "round off" 2.53 to 2.50 - the weapon speed of a two handed weapon.
3. If we know the GCD and ACT of a skill, we can determine the ACT of a second skill, by using the known skill followed by the unknown skill. Since we know when the GCD of the known skill started, we can find out when the GCD of the known skill ended - which is when the unknown skill must have activated. Then the unknown skill's ACT is just when the time between when it was activated and when it went on cooldown.
For example, "Wild Attack" followed by "Feral Strikes":
Code:
Wild Attack: 0 1.7999999523163
Feral Strikes: 2.4202138781548 4.1999998092651
Here, the sequence of events is:
- Time = -1.92, pre-GCD = 0.00, post-GCD = 2.50, Wild Attack started activating (ACT and GCD start)
- Time = 0.00, pre-GCD = 0.58, post-GCD = 0.58, Wild Attack finished activating (ACT end)
- Time = 0.58, pre-GCD = 0.00, post-GCD = z, Wild Attack's GCD finishes, Feral Strikes started activating (ACT and GCD start)
- Time = 2.42, pre-GCD = z - 1.84, post-GCD = z - 1.84, Feral Strikes finished activating (ACT end)
So "Feral Strikes"'s ACT covered from time 0.58 to time 2.42, making it (2.42 - 0.58 = 1.84).
A couple notes:
This plugin is very rough - it will not determine if your skills have changed (i.e., due to leveling up, trait switching, etc.) You will need to unload and reload the plugin in order for it to be able to accurately report cooldown information for the skills. (It resides in the apartment "SkillTimer", so you can just "/plugins unload SkillTimer" "/plugins load SkillTimer" to reload it.)
You can reset the time (so the next skill used will be the new "time 0") by using the command "/st". There is no feedback when "/st" is used.
The timings appear to vary (mostly just a little bit - +/-0.02 or 0.03 seconds, but sometimes by as much as 0.10 seconds or more). I would advise anyone using this to take multiple measurements of whatever skill timing you are attempting to measure. There will be some outliers, which I would advise you to discard, and a bunch of points that are roughly in the same band - I tend to assume ACTs will be shared by multiple skills (1.38, 1.67, 1.52, 1.83 show up as the ACTs of a number of champion skills), and GCDs which are based on weapon speeds (most GCDs are based on 0.25, 0.50, 0.55, 0.65, and 1.00 of the speeds of the weapons being used). Whatever is going on, it does not appear to be fully consistent.
Also, I have no idea why all the cooldown times are never nice round numbers like 1.8 vs 1.7999999523163 - it may be a C floating point thing - as far as I am aware, Lua is perfectly capable of representing 1.8 as 1.8. Unfortunately, this means I do not know which is the "true" cooldown - this plugin assumes that the non-rounded cooldown is correct, for the purposes of determining when a skill went on cooldown.