[REC] Shadow priest recommends vampiric touch even though DoT is on target and unfurling darkness is not available
Closed this issue · 4 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
Hello - I posted about this a few days ago on somebody else's closed topic. I believe what I posted at that time I had taken the snapshot too late to document the issue properly. I grabbed 2 pastebins from mythic plus tonight: https://pastebin.com/mTPymsty
https://pastebin.com/EGZZvN0C
I took more snapshots and screenshots, so I'm not 100% sure these screen shots I'm attaching line up with the snap shots I'm submitting, but you can see big duration on the unfurling darkness debuff, and my target has vampiric touch and shadow word pain at a good duration, yet hekili is recommending 2x vampiric touch as if I would be able to proc an unfurling darkness, even though it cannot.
I
How to Reproduce
I'm not sure how to consistently reproduce this. I can go fairly long stretches without this happening. I'm starting to think that restarting the game seems to temporarily fixes this when it happens. I also feel like maybe this starts up after being grouped with a second shadow priest maybe? I can go days at a time without the problem, and then I'll get it repeatedly over the course of several dungeons and encounters.
Snapshot (Link)
Raidbots Sim Report (Link)
https://www.raidbots.com/simbot/report/9hbG1qyZwc9Yd3D4i4yNxR
Additional Information
I'm mostly using this in dungeons with multiple targets most of the time. I haven't been able to grab a single target instance of this issue yet, but here is a single target raidbots if it is any help: https://www.raidbots.com/simbot/report/rM5avBc7JvoJH2diB4WDYc
Contact Information
No response
Handling vampiric_touch at 855680.34 (CAST_FINISH).
Using ability on a different target.
- cycle aura appears to be down, so we're sticking with our current target.
In VT handler, Unfurling Darkness CD buff: table: 000001F11901AD50 0.00, debuff: table: 000001F11901AD50 0.00...
Running vampiric_touch at 855680.34.
tostring did not to string.
The reset_precast if-structure also isn't triggering anymore after removing applyBuff( "unfurling_darkness_cd", state.PlayerDebuffRemains( "unfurling_darkness_cd" ) )
I added that because debuff.unfurling_darkness_cd.up isn't stable/reliable on its own
tostring did not to string.
It did; it provides confirmation that buff.unfurling_darkness_cd and debuff.unfurling_darkness_cd are the same table. I'm curious if this is an issue with target-cycling being started (which starts overriding the remaining time of buffs based on number of targets vs. number of active de/buffs) and not being properly turned off when it sticks with the current target instead.
The reset_precast if-structure also isn't triggering anymore after removing applyBuff( "unfurling_darkness_cd", state.PlayerDebuffRemains( "unfurling_darkness_cd" ) )
PlayerDebuffRemains is an abomination because it overrides basically two levels of scraping auras. If those aren't working, they need to be fixed instead of bandaged.
tostring did not to string.
It did; it provides confirmation that
buff.unfurling_darkness_cdanddebuff.unfurling_darkness_cdare the same table.
Oh, I don't know why I was expecting something else.
Oh, I don't know why I was expecting something else.
It's a pretty weird debug statement, to be fair.
I just committed a testfix that is inspired by your thoughts about referencing auras.player.debuff.unfurling_darkness_cd:
auras.player.buff.unfurling_darkness_cdis now the same table asauras.player.debuff.unfurling_darkness_cd, so when the buff metatable goes to scrape "real" data, it will now get the debuff information.debuff.unfurling_darkness_cdis now the same table asbuff.unfurling_darkness_cd, meaning that it has the buff metatable applied. This makes it soapplyBuff( "unfurling_darkness_cd" )remains sane.
So far, it seems to hold up. There is a side-effect that I think I'm okay with:
player_buffs:
n | Token | Name | A. Count | A. Remains | S. Count | S. Remains
-- | ---------------------------- | --------------------------- | -------- | ---------- | -------- | ----------
1 | *encapsulated_destiny | Encapsulated Destiny | 1 | 3600.00 | 1 | 3598.15
2 | mental_fortitude | Mental Fortitude | 1 | 13.08 | 1 | 13.08
3 | power_word_fortitude | Power Word: Fortitude | 1 | 3364.57 | 1 | 3364.57
4 | shadowform | Shadowform | 1 | 3600.00 | 1 | 3598.15
5 | *sign_of_the_critter | Sign of the Critter | 1 | 3600.00 | 1 | 3598.15
6 | *sign_of_the_legion | Sign of the Legion | 1 | 3600.00 | 1 | 3598.15
7 | unfurling_darkness_cd | | 0 | 0.00 | 1 | 12.91
8 | *winds_of_mysterious_fortune | Winds of Mysterious Fortune | 1 | 3600.00 | 1 | 3598.15
9 | *word_of_a_worthy_ally | Word of a Worthy Ally | 1 | 3600.00 | 1 | 3598.15
player_debuffs:
n | Token | Name | A. Count | A. Remains | S. Count | S. Remains
-- | ---------------------------- | --------------------------- | -------- | ---------- | -------- | ----------
1 | unfurling_darkness_cd | Unfurling Darkness | 1 | 12.91 | 1 | 12.91
You can see that in the player_buffs table, Actual Count and Actual Remains are 0 / 0.00. The Scraped Count and Scraped Remains match the entry from player_debuffs -- 1 / 12.91. This is because unfurling_darkness_cd isn't actually detected when the snapshot looks at actual aura applications via the API, but now has a scraped entry that actually resides in the debuff table.
So now it's totally clear, right?
Here's a test:
local testUnfurlingDarkness = setfenv( function()
reset()
print( 1, buff.unfurling_darkness_cd.remains, debuff.unfurling_darkness_cd.remains )
applyBuff( "unfurling_darkness_cd" )
print( 2, buff.unfurling_darkness_cd.remains, debuff.unfurling_darkness_cd.remains )
reset()
print( 3, buff.unfurling_darkness_cd.remains, debuff.unfurling_darkness_cd.remains )
applyDebuff( "player", "unfurling_darkness_cd" )
print( 4, buff.unfurling_darkness_cd.remains, debuff.unfurling_darkness_cd.remains )
end, Hekili.State )
testUnfurlingDarkness()Output:
[20:59:13] 1 0 0
[20:59:13] 2 15.199999999953 15.199999999953
[20:59:13] 3 0 0
[20:59:13] 4 15.199999999953 15.199999999953
Running the same test when Unfurling Darkness's CD debuff is active:
[21:02:33] 1 9.966999999946 9.966999999946
🤞

