How can I utilize polymorphism with multiple blueprint implementations of a base blueprint for game logic?

I want to have a player who has a few fixed amount of spell slots or a spellbook that can only have a limited amount of spells in it at any given point in time. Additionally, I want to have the spells’ game logic defined in blueprints such that they may behave completely different when their cast method is invoked by the player. Hopefully each implementation of the base spell blueprint would support some common variables such as a max range. The amount of custom implementations of spells via blueprints could easily reach over 100 unique spells so programmatic instantiation and assignment to an array of them could be very useful for browsing through them in a game menu as well as not cluttering up the level’s object list. How do I implement this in UE4 with blueprints? It is straightforward for any normal programming language.

An alternate description of my question:

What you describe works to me with subclassing the MainSpell, you can either create the child via “create blueprint based on this” or set the “Parent Class” in Blueprint properties. Right click the function to override and click “implement”. To call super, right click the starting node of the now implemented/overridden function and select “add call to parent function”.

did the trick for me, thanks!