[Suggestion] Allow creating custom functions without creating a custom version (attach to rotation?)

I enjoy making custom rotations to learn more about the different specializations and optimize them to be the very best they can in various situations. Often times I re-use logic across multiple actions that could be simplified into a simple function.

An example: As an Assassination Rogue, I want to apply various DoTs if they are refreshable, but allow early casting if it will be more powerful or force late casting on the last tick if it will be less powerful. This logic is relatively constant, but the name and expected power of the skill varies by action – two things that I can easily pass as parameters. I have substantially reduced the complexity of the logic on many actions by combining long strings of boolean logic into functions, but it has required me to clone a custom version of the game to do so.

I’d really like to be able to create functions that can be attached to the rotation instead of the game version, so that I don’t need to keep up with re-creating them for every new version of the game. Additionally, if they were attached to the rotation I could share that rotation with friends without needing to give them a copy of my custom game version too. The process of going back and forth would be significantly easier – since really the function logic is about the rotation, not the game mechanics.

You could probably achieve something very similar with a set of rotation parameters. You’d need one for rupture, one for garrote, etc - but after you have created them they’d be pretty easy to use. That could maybe do what you want?

Also, if you create the conditions without using the custom functions - you can always copy them over to new rotations using the export button. It creates json for the rotation and then you could paste in parts from one rotation to another.

It would be nice to have rotation-level functions, but it’s one of those things that would be so niche that I don’t know if we’ll ever get to adding it :frowning:

I think I understand what you’re saying with rotation parameters, but I had always assumed the parameters were static and saved a value at the beginning of the rotation. Are the conditions on parameters re-evaluated on every reference?

If so, it’s at least a step up from putting long strings into every action (even if not as clean as a function). I’ll give it a shot.

In the future, if you do see an opportunity that makes custom functions a bit easier to create (doesn’t necessarily have to be attached to rotation), please consider it! :slight_smile:

Yes, rotation parameters are calculated every time they get accessed in a rotation check.