Hekili Priority Helper

Hekili Priority Helper

44M Downloads

Chaos Theory Refund Prediction

JacksonLawrence1 opened this issue ยท 6 comments

commented

So as you said in discord the cost refund is entirely predictable and modelled, but with the Chaos Strike legendary it changes the cost refund to 100%, so it doesn't 'predict' a refund and more so knows that it will refund so the prediction is quicker.

Here's an example of what I mean:
ezgif com-gif-maker
You can see it quickly change the suggestion from felblade to annihilation after it saw the fury get refunded

This specific scenario is when Chaos Theory buff is active, and I am on enough fury (with the refund) to cast another safely as it accommodates for it later, but you can see it anticipates no fury to be refunded (suggesting felblade), but since the buff is active it should know you have 100% to refund fury and suggest the annihilation straight after the last instead of felblade.

I understand this is a very subtle thing, and might be finnicky to implement, but it really starts to mess with your rotation slightly if you get lots of chaos theory buffs when your haste is super high (timewarp + meta is active). Since the global cd is so short then, it gives you a very short reaction time to correctly cast the next annihilation.

commented

You still have to follow ticket instructions and provide a snapshot.

commented

https://pastebin.com/WaPCJsZu

I tried to get it at the right point as best as I can, but it is suggesting throw glaive as it's second when it could be suggesting annihilation as next spell.

commented

The snapshot shows 61 fury, use Annihilation, end up at 41 fury (so the refund is modeled).

The criteria for Annihilation are not for the second item in queue, because Annihilation's criteria is:

28.  annihilation ( demonic - 8 )
The action (annihilation) is usable at (0.00 + 0.84) with cost of 40 fury.
 - the action is ready before the current recommendation (at +0.84 vs. +3.33).
List ( demonic ) called from ( Havoc:default:14 ) would PASS at 0.84.
talent.demonic.enabled[true]
 - this entry's criteria FAILS: ! variable.pooling_for_blade_dance[true]

variable.pooling_for_blade_dance is:

variable.blade_dance[true] & ( fury.current[41.00] < 75 - talent.first_blood.enabled[true] * 20 )

Which equals:

variable.blade_dance[true] & ( fury.current[41] < 55 )

variable.blade_dance is:

talent.first_blood.enabled[true] | spell_targets.blade_dance1[2.00] >= ( 3 - ( talent.trail_of_ruin.enabled[true] + buff.metamorphosis.up[true] ) ) | runeforge.chaos_theory.enabled[true] & buff.chaos_theory.down[false]

The priority is pooling for Blade Dance.

If a weapon strike then procced more than 14 Fury, the recommendation would change because fury.current[55] < 55 would not be true. That would cause recommendations to change, which will happen for the reason I explained before -- the addon doesn't model (and can't know, any more than you can) that your swing is going to generate more RNG fury than the minimum.

commented

Maybe the snapshot isn't the greatest representation of what I'm trying to convey. I wanted to try and get a snapshot when the fury is a lot higher (but not capped), so it wouldn't have to factor the blade dance pooling (and only the cooldown).

As you said, the recommendation would change when the fury is higher, but I don't understand why the addon can't model the extra fury generated from the chaos strike refund specifically when chaos theory is up.

There is a split second of time in which you can see the fury not have been refunded yet, which is where the addon is making a recommendation and then changing it immediately, isn't it unnecessary for it to make suggestions in that split second, and just ignore it that suggestion only when the buff is up? Can't it just skip to the point at which the suggestion is where you have +20 fury because your haste would never be high enough to cast the prediction before the fury was refunded.

E.g. Say at this line
The action (annihilation) is usable at (0.00 + 0.84) with cost of 40 fury.
change the cost of fury to 20 fury (when chaos theory is active), because that's essentially what chaos theory is doing to it.

commented

I don't understand why the addon can't model the extra fury generated from the chaos strike refund specifically when chaos theory is up.

It does. That's what I've explained. The refund did occur, it is accounted for in a predictive sense.

There is a split second of time in which you can see the fury not have been refunded yet, which is where the addon is making a recommendation and then changing it immediately, isn't it unnecessary for it to make suggestions in that split second, and just ignore it that suggestion only when the buff is up? Since it knows it's getting +20 fury at that point but it doesn't anticipate for it.

This can also be addressed, it's really an artifact of how abilities are processed as a batch from the server and client. You're right that you can get a recommendation update between several events (1) cast success (2) resources spent (3) damage done (4) refund procced. I can potentially spend additional CPU watching for whether the refund occurred and if not, faking it, but I'm not sure that it's really worth it. It's more interesting, though.

change the cost of fury to 20 fury (when chaos theory is active), because that's essentially what chaos theory is doing to it.

No, changing the cost is not the right solution at all. If you don't have the fury, you don't have the fury.

commented

Thank you, I understand what you mean now about how it's modelling the fury.

I can potentially spend additional CPU watching for whether the refund occurred and if not, faking it, but I'm not sure that it's really worth it. It's more interesting, though.

Well, I don't want to push you to do something if you don't think it's worth it, though if you ever feel like it, I would really love to test it out and see how it performs in comparison. The slight adjustment in reacting time might make such a small difference it wouldn't even matter, but would love to try it out.

Thank you for addressing it.