I've had a few friends try out the adjustment and it seems to well, so I would like to offer it as a contribution back to the main addon. I've only coded the adjustments for 4 specs so far so it still has a long way to go to be complete, but the core framework adjustments should at least be reasonable. I also made an adjustment to the WeakAura so that it can display the next 3 actions. The biggest hurdle I faced was removing FrameData as a global variable.
If you are interested, you can find the current progress on my dropbox (7z compressed). If not, no hard feelings and I'll just keep plugging away for personal use. This zip also includes the WeakAura string needed to display them.
Grain of salt...I've been coding almost 20 years at this point, but the last time I coded an addon in LUA was over 10 years ago so there's probably some dumb mistakes specific to how the language works.
The three biggest changes I made were:
- FrameData is an argument to the various functions instead of global variable
- modules specify an optional "enrichment" function that helps prep the FrameData object
- the NextSpell return value has been modified to return both the spell ID and an optional mutation function. this modifies the FrameData with the effects of casting the spell, so that we can feed it back into the recursive invocation
- added the ability to "fake" buffs/debuffs/cooldowns so that future computations still function correctly -- this could probably use some tweaking, but it works well enough for the current predictions