|
|
Source code |
1 2 3 4 5 6 |
Time 0 Client clicks CC skilll, client sends fact to server Time + 0.125 Server receives client's request to use skill, server agrress and sends back answer to client Time + 0.25 Client receives answer from server, starts internal cooldown timer. Time + 1.0 [**] Time cooldown expected to end from time of skill use. Server appears to accept if skill used at this time Time + 1.125 [**] Time cooldown could be exected to finish on the server and allow another skill Time + 1.25 Cooldown complete on client side |
|
|
Source code |
1 |
skilltrackingtable[ skillname ] = { timestamp = GetTime(), delay = nil }
|
|
|
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
if GetSkillCooldown is 0 then
if skill in tracking table but time delay not deternmined then
/* we can only get to this point if the skill was triggered, but GSC hasn't started so we are still in the Time 0 to Time + 0.25 */
return skill is on cooldown
endif
/* skill isn't on cooldown, so ensure it isn't in the tracking table either */
skilltrackingtable[ skillname ] = nil
return skill not on cooldown
else
if skill in tracking table but time delay not determined then
/* we need to determine the time delay at this point */
/* the following might be somewhat incorrect if GSC is not at the full amount. */
/* It may be better to have a seperate frame that just goes through the table and computes the delays */
skilltrackingtable[ skillname ].delay = GetTime() - skilltrackingtable[ skillname ].timestamp
return skill is on cooldown
elseif skill in tracking table and delay determined then
if GetSkillCooldown() - skilltrackingtable[ skillname ].delay <= 0 then
/* skill is not on cooldown, so remove it from tracking table */
skilltrackingtable[ skillname ] = nil
return skill not on cooldown
else
/* gettting to here means the skill isn't in the tracking table but GSC */
/* returned a non-zero value so it must be on cooldown */
return skill is on cooldown
endif
endif
|

This post has been edited 14 times, last edit by "frafall" (Jun 7th 2014, 11:09am)
Quoted
100.19 - Try Charged Chop
100.31 - Hit Charged Chop
100.36 - HP, Rage, Mana, bleed: 8948, 98, 2571, false
100.36 - Try Slash
100.50 - Hit Slash
100.53 - HP, Rage, Mana, bleed: 8945, 100, 2554, true
100.53 - Set delay=0.25 on 'Charged Chop', in-cooldown=true
100.53 - Try Tactical Attack <= FAILS as GCD is coming but not updated for Slash yet
100.74 - Set delay=0.24 on 'Slash', in-cooldown=true
This post has been edited 9 times, last edit by "frafall" (Jun 11th 2014, 9:21pm)
|
|
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
-- Current global cooldown constant, modify if changed in-game local c_GlobalCooldown = 1.0 -- Keep track of GCD local GlobalCooldown = 0 function api.GetSkillCooldown(skill) local now = fdvars.Now -- Check for GCD, assuming ALL skills have GCD (might be wrong) if now - GlobalCooldown < c_GlobalCooldown + config.AdjustCooldown then return true end GlobalCooldown = 0 -- Check skill cooldown if now - skill.timestamp < skill.cooldown + config.AdjustCooldown then return true end -- Check for previous unfinished skill with timeout of .5s -- Assuming skill usage is synchronous with server -- Might easily be wrong, I've seen up to 4 outstanding skill -- inbetween, might explain bursts we see in beginning of fights. if WaitForResponse and now - WaitForResponse.timestamp < 0.5 then return true end WaitForResponse = nil -- -- This is tricky, we can be at end of cooldown (FD cuts it short) -- or in middle (if some1 did something manually) -- For now, ignore it -- -- No cooldown skill.timestamp = 0 return false end |
|
|
Source code |
1 2 3 4 5 6 7 8 9 |
function TestCC()
local BleedTimer = api.CreateFDTimer("Bleed")
trySkill("Charged Chop", PlayerMana >= 260, nil, nil, true) -- NoGCD=true
trySkill("Slash", PlayerRage >= 25, BleedTimer(7.5))
trySkill("Tactical Attack", TargetHasBuff(bleeds) and PlayerRage >= 15)
trySkill("Open Flank", TargetHasBuff("Vulnerable") and PlayerRage >= 10)
trySkill("Probing Attack", TargetHasBuff(bleeds) and PlayerRage >= 20 and not TargetHasBuff("Vulnerable"))
end
|
Quoted
1377.34 - Charged Chop
1377.51 - Damage: Fairthe, 23, Sneirfoi, Charged Chop, NORMAL
1377.69 - Open Flank, 0.35s
1377.69 - Damage: Fairthe, 8, Sneirfoi, Open Flank, NORMAL
1378.02 - Damage: Fairthe, 10, Sneirfoi, Bleed, NORMAL
1378.53 - Damage: Fairthe, 15, Sneirfoi, ATTACK, NORMAL
1378.70 - Charged Chop, 1.01s
1378.70 - Damage: Fairthe, 23, Sneirfoi, Charged Chop, NORMAL
1378.88 - Tactical Attack,, 0.18s
1378.88 - Damage: Fairthe, 5, Sneirfoi, Tactical Attack, NORMAL
1379.91 - Charged Chop, 1.03s
1379.91 - Damage: Fairthe, 23, Sneirfoi, Charged Chop, NORMAL
1380.09 - Slash, 0.18s
1380.09 - Damage: Fairthe, 10, Sneirfoi, Bleed, NORMAL
1381.10 - Charged Chop, (FAILED), 1.01s, Lost event or 'real' fail?
1381.62 - Probing Attack, 0.52s (RECOVERY)
1381.62 - Damage: Fairthe, 6, Sneirfoi, Probing Attack, NORMAL
1381.96 - Damage: Fairthe, 10, Sneirfoi, Bleed, NORMAL
1382.14 - Damage: Fairthe, 15, Sneirfoi, ATTACK, NORMAL
1382.67 - Charged Chop, 1.05s
1382.67 - Damage: Fairthe, 23, Sneirfoi, Charged Chop, NORMAL
1382.84 - Open Flank, 0.17s
1382.84 - Damage: Fairthe, 8, Sneirfoi, Open Flank, NORMAL
1383.85 - Charged Chop, 1.01s
1383.85 - Damage: Fairthe, 10, Sneirfoi, Bleed, NORMAL
1384.02 - Tactical Attack, 0.17s
1384.02 - Damage: Fairthe, 5, Sneirfoi, Tactical Attack, NORMAL
1385.06 - Charged Chop, 1.04s
1385.23 - Damage: Fairthe, 15, Sneirfoi, ATTACK, NORMAL
This post has been edited 1 times, last edit by "frafall" (Jun 13th 2014, 9:28pm)
Quoted
1.5375 0
1.5375 0
1.5375 2
1.5375 1.89
1.5375 1.80
...
, with that you can get to 2.0*0,615*0,95*0,92=1,075, as it is alt (I suppose) you can add 2% from pet if you don't have one (or 5% if you have some gold to throw away), so 1,0925*,98=1,0535 (and that would be fastest passive speed I can think of - of course on top of that there is Wl/M, Strong Stimulant, Siege titles, lute...). 