How can I set up flexible character abilities in blueprints?

How should I set up character functionality in blueprints for my player character in a way that I could easily re-use it for other characters? More specifically, my main character can hang from ledges and dash and such. How could I set things up so I could easily make an enemy be able ledge hang or dash in the same way the player character does?

Part of the tricky part for me is that these abilities rely on specific collision boxes on my player character. Should I set up children blueprints? Is there a more flexible way for me to set things up so enemies with those abilities don’t have to be children of my player character? I’ve thought about having custom blueprint components that handle dashing and ledge hanging, I’m just not sure how to best set it up so those components would work well for the Player Character and other characters.

Any ideas on how to go about this would be appreciated!

Edit: I’m making a 2D platformer, if that makes a difference.

You can create a functions library with all those functions with certain input parameters that may be different for different characters; like dash speed or height of the ledge they can climb, etc. These functions will exist in a separate asset and you can reuse them in any BP by their names.

As for animation, you’ll still have to use a custom animation for every character, because since you’re making a 2D platformer I presume all the animations are drawn, and don’t use skeletal meshes.

This seems like it should definitely help! Thank you very much.