PreviousGCDSpell check not working correctly
Hinalover opened this issue ยท 3 comments
#blackout_kick,if=(chi>1|buff.bok_proc.up)&buff.serenity.down&!prev_gcd.blackout_kick if { { Chi() > 1 or BuffPresent(bok_proc_buff) } and BuffExpires(serenity_buff) and not PreviousGCDSpell(blackout_kick) }Spell(blackout_kick)
This line LOOKS correct. However there are times in which it will request to cast Blackout Kick two times in a row
This image shows Ovale's next suggestion; Blackout Kick; however the weak aura above Ovale shows what the previous cast was; in this case Blackout Kick. I made sure I did NOT have the Monk trinket; which would have had a chance to cast an automatic Rising Sun Kick after a Blackout Kick; equipped.
EDIT: Forgot I had a low level monk. I see the problem. It seems to temporarily not have blackout kick then immediately suggest blackout kick again.
It also doesn't help with Rising Sun Kick (RSK from here on out) is that not only is RSK a button you press, but both the Monk Trinket (as mentioned before Blackout Kick, Rising Sun Kick, and Fists of Fury have a chance of casting a free, instant RSK afterwards), and the artifact trait Tornado Kick (a second free, instant RSK after the first cast) use the same 185099 spell id for it's damage value.
The problem occurs when a GCD ability fails to finish properly in Ovale. That causes it to remain the previous gcd spell until Ovale times it out. There seems to be a couple causes.
One is the same problem I had with snapshotting. Combat log events are happening before a success event. Since ovale won't even look at finishing an ability before it has succeeded, the ability never finishes. This occurs when using Rake from Prowl (but not Rake outside of Prowl). In the case of Rake, the events order as follows when used from Prowl:
SPELL_CAST_SUCCESS 16953 Primal Fury
SPELL_AURA_APPLIED 163505 Rake
SPELL_DAMAGE 1822 Rake
SPELL_AURA_APPLIED 155722 Rake
SPELL_CAST_SUCCESS 1822 Rake
SPELL_AURA_APPLIED 58180 Infected Wounds
But when used without Prowl:
SPELL_CAST_SUCCESS 1822 Rake
SPELL_CAST_SUCCESS 16953 Primal Fury
SPELL_DAMAGE 1822 Rake
SPELL_AURA_APPLIED 155722 Rake
SPELL_AURA_APPLIED 58180 Infected Wounds
Seems to be pretty consistent about doing it in those two orders.
Another is that some abilities don't use the same spell id for their damage event as they do their cast events. Rising Sun Kick is one of these abilities. The cast events are 107428 but the damage event is 185099. This can be easily fixed by simply checking the spell name instead of the spell id, but that might have unintended side effects since as you can see from Rake above, multiple spells can have the same name. A better solution might be to add another variable to the spell info (simply adding it as a define doesn't work). Something like SpellInfo(rising_sun_kick damage_event=185099)
This line in Future.lua is where both these problems occur:
if spellcast.success and (spellcast.spellId == spellId or spellcast.auraId == spellId) then
Obviously the success requirement is the problem for Rake and the (first) spellId requirement is the problem for Rising Sun Kick.