I looked into this more this morning. I did some analysis of combat logs, and found that I need to revise my fury drain formula.
We know that the fury drain accelerates the longer you have been in void metamorphosis. I cross-referenced some logs and fitted a formula to it. I will post an update with the new, empirically correct formula.
This will not change your optimization, for the reasons that I mentioned before. Haste scaling is not linear for devourers. Our optimizer is running real simulations to do the optimization, so it can fit your gear very well to actual simulation results. I did notice that Best in Slot will actually try to get less haste now with this updated implementation - presumably because the exponential drain increase results in a serious diminishing return on getting more haste.
Here are some other items to consider (and i will be writing this up a bit and creating a link right from the optimizations, so it isn’t hard to find)
Add deaths: when adds die and spawn soul fragments, that can significantly affect how long you keep void metamorphosis going. Our simulation is not assuming any frequency of add deaths. I think we should make this a user-configurable setting, as it can have such a large effect on your void meta duration, and thus stats you would want.
Most guides/discords, etc. base their stat recommendations on simulations from simc/raidbots. As of the time of this post, I can tell you for sure that the fury drain function in simc is not matching what we see in logs. They are doing a linear drain that starts at the wrong value, and diverges from the real game very quickly as you spend more time in void metamorphosis. I assume they will update it soon, but if you are someone who interacts with that community, it might be worth reaching out. I don’t know any of those folks, and they usually don’t like me jumping in to their conversations.
Here is the fury drain/sec formula I was able to reverse engineer from combat logs:
// t = seconds elapsed since Void Metamorphosis activated
// Returns fury drained per second at time t
double VoidMetaDrainRate(double t)
{
return 337.72 * Math.Pow(55.0 - t, -0.7619);
}
And I implement this in a function to get the interval between fury drain ticks while you are in void meta. Note that this maxes out at 55 seconds - there is no log data right now for a void meta that lasts longer than that, but this fits the shape of the drain increase that I have observed in logs.