@Robban @jande @Hylander @Sic and whoever else is frustrated by this issue.
Here is a workaround based on Jande's idea of timers.
Thanks
@kaen01 for coming up with this.
Caveat: It doesn't always work, but it works
better.
Most importantly, it solves the problem of React repeatedly trying to use an item that's not ready and freezing everything else.
Here are two examples to keep my Epic and BP clickies up using timers.
YAML:
RogBP:
action: >-
/multiline ; /useitem Blizzard Shadowscale Coat; /if (!${Defined[MyRogBPTimer]})
/declare MyRogBPTimer timer global 610s; /if (${Defined[MyRogBPTimer]}
&& ${MyRogBPTimer} == 0) /varset MyRogBPTimer 610s
condition: "(${MyRogBPTimer} == 0 || !${Defined[MyRogBPTimer]}) && ${Target.PctHPs} > 30"
RogEpic:
action: >-
/multiline ; /useitem Fatestealer; /if (!${Defined[MyRogEpicTimer]})
/declare MyRogEpicTimer timer global 370s; /if (${Defined[MyRogEpicTimer]}
&& ${MyRogEpicTimer} == 0) /varset MyRogEpicTimer 370s
condition: "(${MyRogEpicTimer} == 0 || !${Defined[MyRogEpicTimer]}) && ${Target.PctHPs} > 30"
I set my timers to be a few seconds longer than the recast delays on the clickies.
Also, be sure to use very unique names for the global timers so they don't interfere with other macros or plugins.