[REC] Addon not correctly detecting that Void Blast is castable late in Entropic Rift(?) - Voidweaver Shadow Priest
dubudevs opened this issue ยท 17 comments
Before You Begin
- I confirm that I have downloaded the latest version of the addon.
- I am not playing on a private server.
- I checked for an existing, open ticket for this issue and was not able to find one.
- I edited the title of this issue (above) so that it describes the issue I am reporting.
- I am reporting an issue with the default priority included with the specialization (imported or edited priorities are not supported).
Spec
Priest - Shadow
Describe the Issue
The addon's CPM of Void Blast is lower than expected (~2.1-2.3 per VT when it should be ~2.9-3 see sim), and it appears it is because the addon is not correctly detecting when void blast is usable late into entropic rift or is just not prioritising it highly enough. I often notice that theres a short time at the end of Rift windows where I see that VB is castable (and IS castable) however its not being recommended.
Ignore the following wall of text, I am leaving it here in case its useful for other tweaks.
https://pastebin.com/PiEtJcg9 In this snapshot it just so happened that Mind Blast was the top prio at this moment, but it is common that this is not so, and so you lose a cast of void blast which is not good. Maximising VB casts per rift window is critical. (On second look I am not sure whether this snapshot was a moment too late, its very hard to actually get it, but its not too hard to get it to where you press VB even though it is not recommended at the very end of rift, and the cast goes through even though rift expires right after you press it)
Is it to do with totem detection (notoriously inaccurate) to detect whether Entropic Rift is active to determine whether VB is castable? The buff "Voidheart" can supposedly be used as a direct analog for entropic rift duration (source publik https://i.imgur.com/2LbcEUa.png). https://i.imgur.com/cbtT47Y.png
Note: I cant really tell if its actually an issue with timings, or if its prediction or whether its just not prioritising void blasts highly enough. Its a large chunk of missing damage from low VB cpm though.
I have included steps to see the issue clearly below.
As far as I can tell the issue lies on lines 435-437 of https://github.com/Hekili/hekili/blob/thewarwithin/TheWarWithin/PriestShadow.lua
if talent.entropic_rift.enabled and query_time - action.void_torrent.lastCast < 8 then
applyBuff( "entropic_rift", 8 - ( query_time - action.void_torrent.lastCast ) )
end
I have 1.77 seconds of Voidheart left (therefore 1.77 seconds of entropic rift) and it is recommending Mind Blast when Void Blast is castable.
The buff is constantly refreshed while casting Void Torrent, the 8 second window starts AFTER the void torrent cast finishes. The easiest way to accurately get the remaining duration of Entropic Rift is to use the Voidheart buff instead of calculating it.
How to Reproduce
I have found a way to clearly see the problem:
Play VW
Disable Cooldowns for ease of testing. This does not affect the results of this test.
Press shadow crash if talented
Press Void Torrent and only press Devouring Plague to spend insanity. Observe that long before the Voidheart buff falls off VB is no longer recommended, in favour of Mind Blast which IS Void Blast.
Snapshot (Link)
Raidbots Sim Report (Link)
https://www.raidbots.com/simbot/report/gr2uBKpkDdcqs132gKJfbV
Additional Information
No response
Contact Information
No response
I'll add this to my todo list for the anniversary patch next week. Likely will just make each void torrent tick refresh the duration. Thanks for the tip about voidheart buff, will look into that too, seems it's how all the WAs calculate it too.
Re-opening because it was incorrectly linked with that PR, I removed the priest changes.
Still on to-do list.
entropic_rift
/ voidheart
will be directly detected for realsies instead of emulated* as long as Voidheart is talented. Without Voidheart, I'll emulate ER as triggering at the end of the Void Torrent channel -- but this doesn't seem to be accurate.
You can see that the first tick Void Torrent is at -0.49 and the last tick of Entropic Rift is at +7.58, roughly making an 8 second span.
The first tick of Entropic Rift is at +1.18 (same time as last Void Torrent tick), meaning there are only 6.4 seconds of Entropic Rift appearing to be active.
I moved my character closer to see if this was a travel time issue, and it doesn't appear so:
The time from the first ER tick to the last ER tick is 6.4s...
I believe you (although I might not trust the WA, depending on how it's written). We still have to account for why we're having different outcomes. Can you test the talent differences I mentioned? If it's not Darkening Horizon, it might be that I just don't have the Voidheart talent.
From what I see here:
5.23s
Entropic Rift spawns with the first tick of Void Torrent; base duration is 8s- There were 4 casts of Void Blast during the window, extending a maximum of 3s (to 11s)
16.24s (+10.99s)
Entropic Rift and Voidheart expire together(ish) after being up 11s from the start of Void Torrent
So I don't see any Void Torrent tick-based extension. I do see that Void Blast extensions that were not accounted for previously; I have that fixed in my next commit.
Yeah I did the void blast thing but we parked the PR :P
Just did some testing, looks to me like
- the void torrent refresh does keep refreshing both rift and voidheart every tick, 100%
The only thing I did here was cast void torrent then AFK. 11 second rift (8 base, + 3 seconds of channeling void torrent to extend
- Void blast extends the rift, but not voidheart.
Cast void torrent and 2 void blasts. Note the 2 second expiration difference between rift and voidheart.
- void blast IS castable when voidheart is down, but the rift is still up
We'll have to account for how Voidheart and Entropic Rift stayed synced in the log but not in your case.
void torrent refresh does keep refreshing both rift and voidheart every tick, 100%
Sorry, what's the evidence of this?
ER spawn with the start of the Void Torrent channel:
Void Torrent ends 3 seconds later:
ER fades 5 seconds after the end of Void Torrent, 8 seconds from its initial tick:
If Void Torrent itself refreshes them, ER should've faded 8s from the end of Void Torrent instead of 8s from the start.
The difference could be that I don't have the Darkening Horizon talent (Priest is only 71). Do you want to test with Void Empowerment instead of Darkening Horizon to see if that accounts for the difference?
If Void Torrent itself refreshes them, ER should've faded 8s from the end of Void Torrent instead of 8s from the start.
The difference could be that I don't have the Darkening Horizon talent (Priest is only 71). Do you want to test with Void Empowerment instead of Darkening Horizon to see if that accounts for the difference?
It does for me every time, and my WA tracker for the buff spins and refreshes at 8s until I stop casting void torrent. I showed that in my screenshots above, void torrent cast + rift spawn at 15:11:35
, rift goes away at 15:11:46
which is 11 seconds, 0 void blasts were touched I simply used void torrent then AFKd. This happens with or without that talent. Then I showed a screenshot of the combat log showing voidheart falling off 2 seconds before the rift fades when I extended twice with void blast.
I recorded clips of each scenario, could post in disc.
- 11 second rift by AFK void torrent without extension talent
- 11 second rift by void torrent and void blasts with extension talent
- 11 second void heart + 13 second rift by using void torrent + 2 blasts to extend
Voidheart is not a choice node, so if you are 80 you always have it. I highlighted which buff it is in the first so you can easily see it in the other clips.
With void empowerment I get 11 seconds of ER and VH
If I cancel VT early then it correctly clips it and does not last 11 seconds.
Darkening is a choice node, so I'd like to know if it makes a difference or not.
It does not, voidheart is specifically tied to ER being active, you can see it in each video fall off at the exact same moment as ER collapses.
https://streamable.com/zrbxfu Here you can see vblast extending voidheart correctly, and it falling off at exactly the same time as ER. This is with a cancelled VT so the 4th case scenario missing from my last comment
https://streamable.com/v78nkv Here I start the cast at 1.51 seconds, and cancel it 0.6 seconds before the cast finishes. That would mean that 1.51 + 3 for VT cast - 0.6 for cancelling early + 8 base + 3 extends and it should end at 14.91 and it ends at 15.03 - again VH correctly disappears the instant ER collapses. There is a tiny difference due to cancelling early and ping etc, but testing with a cancel makes sure its actually the same.
I think I'm having a hard time being persuasive here. There is a lot that can be misleading in the UI. I honestly can't tell that Voidheart and Entropic Rift fell off at the exact same moment in your videos.
If you have (or install) something like WowLua, you could run this code:
local f = CreateFrame( "Frame" )
local isLit = false
local started = 0
local vhUp = false
local vhStarted = 0
f:SetScript( "OnUpdate", function()
local nowLit = IsSpellKnownOrOverridesKnown(450983)
if not isLit and nowLit then
started = GetTime()
isLit = true
print( "MB lit up at " .. started .. "." )
end
if isLit and not nowLit then
isLit = false
print( "MB ended after " .. ( GetTime() - started ) .. "." )
started = 0
end
local voidheart = C_UnitAuras.GetPlayerAuraBySpellID( 449887 )
if voidheart and not vhUp then
vhUp = true
vhStarted = GetTime()
print( "VH started at " .. started .. "." )
end
if vhUp and not voidheart then
vhUp = false
print( "VH ended after " .. ( GetTime() - vhStarted ) .. "." )
vhStarted = 0
end
end )
f:Show()
This basically starts a timer when Mind Blast turns into Void Blast, and then shows when Void Blast turns back into Mind Blast (which is what we care about from a recommendations standpoint).
It also checks if Voidheart is applied (but my Priest is too low to test it) and similarly prints when it starts and ends.
What I need to see here are these scenarios with the output from the above:
- Darkening Horizon talented; Void Torrent; no Void Blasts
- Darkening Horizon talented: Void Torrent; Void Blast 2-3 times
- Darkening Horizon not talented: Void Torrent; no Void Blasts
- Darkening Horizon not talented: Void Torrent; Void Blast 2-3 times
This would authoritatively show what actually happens vs. tooltip messaging and the like.
https://i.imgur.com/susGgCg.png DH 2 casts
https://i.imgur.com/trf4f5y.png DH 3 casts
https://i.imgur.com/yr4hNHa.png DH no casts
https://i.imgur.com/qQqyKIu.png No DH no casts
https://i.imgur.com/0mXJPX4.png No DH 2 casts
https://i.imgur.com/Bv1S4Gw.png No DH no casts early cancel
Either way, your 8 seconds is not the same and I cant see any hero talents that would cause that.
DH 2 casts:
- 13.25 seconds of ER and VH
- 8 (base) + 2 (cast extensions) = 10; leaves 3.25s unaccounted for
- Most likely the 3 second channel + some server lag
DH 3 casts:
- ~14 seconds of ER and VH, slightly desynced expiration (0.1s)
- 8 (base) + 3 (cast extensions) = 11; leaves 3s unaccounted for
- Most likely the 3 second channel again
DH no casts:
- ~11s of ER and VH
- 8 (base) + 0 (cast extensions) = 8; leaves 3s unaccounted for
- 3 seconds, again, is likely the VT channel
No DH no casts:
- Roughly same as DH no casts
No DH 2 casts:
- Roughly same as DH no casts
No DH no casts early cancel:
- Shows VH and ER staying closely synced
Either way, your 8 seconds is not the same and I cant see any hero talents that would cause that.
Right; that's what the data gathering is for. Something isn't working the same in all cases, so I'm working to understand it. I'd guess that it's Voidheart itself that overrides/replaces the Entropic Rift summon and timer, and that Voidheart gets extended by VT ticks while baseline ER does not. If so, it's just a leveling issue.
- Trust the Voidheart buff if you have it talented (which everyone will)
- If Voidheart buff is up but Void Blast isn't known, remove Voidheart during
reset_precast
- If Voidheart isn't talented, use 8 seconds from the start of the VT channel for ER duration (and track extensions)