
[REC] ⚠️ Frost mage fixed value flurry travel time causing incorrect winter's chill consumption
Closed this issue · 13 comments
Before You Begin
- I confirm I am using the latest version of the addon (outdated versions may have problems that were fixed on the newest release).
- I confirm I am playing on official Blizzard servers (not private servers).
- I checked for an existing, open ticket for this issue and was not able to find one.
- I have updated the issue title to clearly describe the problem.
- I am reporting an issue with the default specialization priority (not a custom or imported priority).
Specialization
Mage - Frost
Describe the Issue
The addon is sometimes suggesting extra flurries (rec #5 in this snapshot) where it shouldn't that disappear after casting the first flurry (rec #3). It appears to not be tracking winter's chill status correctly. Flurry applies 2 stacks of winter's chill, ice lance consumes 1, and the 5th recommendation should be glacial spike to spend 5 icicles and consume the last stack of WC - but the 4th rec thinks there is only 1 stack of WC and the 5th rec thinks buff.winters_chill.down = true when there is 1 stack in reality.
The addon thinks the first frostfire bolt consumes a WC stack from the subsequent flurry? I am pretty sure this wasn't an issue before (last season) and my head hurts trying to find where it started happening.
God this interaction is annoying to code I am sorry lmao, I tried to track down a bit more specifically what the exact issue was and fix it myself but I wasn't able to :(
How to Reproduce
Play frostfire ST and hit something
Show 5 recommendations, toggle off cooldowns, use orb and comet (just to get them on cd dont orb the enemy or you will get fof stacks) and get to 0 icicles (frostbolt to 5 and spike). Cast a frostbolt and it will show up.
What is your information source?
Snapshot - Contains errors/warnings
Snapshot (Link)
Raidbots Sim Report (Link)
No response
Additional Information
No response
Contact Information
No response
I believe it is because the addon thinks the frostbolt will hit later than it does or flurry doesn't last as long as it does. It thinks the frostbolt hits 0.62s after it is cast, which is after the window for the WC refund I think?
I just confirmed in game that even at 40yd range with spell queuing flurry will still grant 2 stacks of WC when cast after frostbolt.
Not sure how I should determine whether this is an issue with flurry not being coded to last as long as it does, or with frostbolt being coded as travelling too slowly (if this is even the issue).
I should note that I was at the top ST dummy in dornogal, so definitely not 40yd away.
Unfortunately that is something that's very difficult to increase the precision of, due to the lack of official blizzard range api. The library we have is a bunch of spell and item checks that returns a min and max range, it's pretty hard to be exact.
Unfortunately that is something that's very difficult to increase the precision of, due to the lack of official blizzard range api. The library we have is a bunch of spell and item checks that returns a min and max range, it's pretty hard to be exact.
Can the window be increased slightly so that it always refunds like in game at least? Not sure where it needs to be tweaked or I'd test it myself. Also not sure if its flurry or frostbolt that needs tweaked to match in game closer. Either should work though.
I tried changing flurry flight time to 0.7s and it didn't seem to help, this time there is just 0.01s between flurry and frostbolt impact. https://pastebin.com/f7r1mj85 also changing frostbolt velocity to 40 appears to fix it. I think just randomly changing numbers like this has a chance to affect recommendations elsewhere but it at least proves that this is the issue. https://pastebin.com/CXPJw4Hd
Incidentally to reproduce this show 5 recommendations, toggle off cooldowns, use orb and comet and get to 0 icicles (frostbolt to 5 and spike). Cast a frostbolt and it will show up.
On combat log 40yd range final hit is 1.2s after initial cast
0yd range final hit is 0.6s after initial cast
Using the range hekili has access to you can set flurry flighttime to flightTime = function () return 0.5 + target.maxR * 0.0175 end,
. I tested it in game and monitoring action.flurry.travel_time
shows infinitely more accurate flight times.
I used a shorter minimum time with a larger constant to avoid having to conditionally check target.minR to see if you are point blank, otherwise it would return 0.75s when close which is close enough to haste cap gcd to be sketchy. This returns 0.54s at 0yd and 1.2s at 40yd. I'll test if this actually works in game. It could be tweaked to be exactly 0.6 and 1.2 but it doesn't change the functionality at all.
I'll test it a bit and see if I notice anything unusual with it.
The flurry cast itself is hasted, as in the time between the projectiles. However, I tried a bunch and couldnt get it to behave any differently in any cases, even stiff like blinking to try and snipe an extra wc with the 3rd projectile, nothing seemed to break it. 0.6-1.2 seems like a good number to set, idk if someone else has thoughts on that.
Is that the same suggestion as the one we discussed on discord?
If not can you add it here? I will do some testing next week.
#5143 (comment) This comment has the fix I posted in disc. I've been doing keys and raid all day with it patched and its removed most of the flickering and recommendations seem much more consistent, qualititavely.
flightTime = function () return 0.5 + target.maxR * 0.0175 end,
I'll go ahead and use this for now if it's perceived as fixing the issue. The reason I'm surprised is that the current model for projectiles expects 1 before the impact event is removed from the model. So (a real) Ice Lance isn't considered in-flight after the first projectile hits.