I would be curious too, actually. There’s a compelling point to be made that tying a cast time/channel/whatever to a visual animation is probably very stupid for the simple reason that tying functionality to visuals and not the toher way around tends to be a no-no, but on the other hand you could just make it so that the montage playback rate is adjusted so that the montage duration adjusts itself to a concretely defined duration variable in the ability(basically make the play rate of the montage (normal montage duration / Cast time value) ), and not the other way around. Then you’d ultimately be left with just a delay node that ensures that the animation tied to the ability must be played until the end, which can be crucial for games where visual tells are key.
It would also seem strange to me that you’d have to split a montage for a before-effect and after-effect section of an animation. Would you do a delay task that would perhaps be ended prematurely if the animation itself is cancelled/interrupted, would you actually have to split and play 2 montage tasks, would you create a new ability task class that is set up to listen for, say, an animation notify within the montage passed as parameter, or what?
I wonder if it would be too much to ask for an example ability implementation from a random active Paragon ability of choice. Prob’ly, but it could answer some questions about what the practices for each thing are.