spells/ abilities

Hi,

I am trying to make a small demo of a fighting game. I have my basic character blueprint, and have a camera setup that zooms in and out and spins around based on how far apart my 2 characters are.

Now i want to be able to have my players select different spells or abilities for their character (things like a heal spell, floating ability, and a fireball for examples of the different types of abilities)

So i believe if i want to add multiple types of theses spells/abilities that all have a basic ‘castSpell, useAbility’ function then i would use blueprint interfaces and built a separate spell/ability blueprint that uses the base interface.

I am running into trouble understanding how to actually use a spell blueprint that i have created.

for example i have created a MagicMissile blueprint that uses a spellInterface. This provides the spell with an onCast event which i then implement in magicMissile blueprint like so:

56416eb19b79667d2c71acbd775054c50f4616f6.jpeg

That is all good, and using the documentation i see i can send a message to an instance of this actor in the world which will then call this event. But i dont have an instance of this actor, i just want to have an array of baseSpells or magicMissiles on my character (or playerController?) and then call this event when i press a certain key. Does this mean i am implementing my spells wrong? am i misusing blueprint interfaces? If this were just in code then i feel i could make it work but i think the idea of a blueprint being an actor that needs to exist is confusing me a bit/lot.

If the spell was a fireball and needed to spawn a projectile do i need a seperate blueprint to define the actual projectile and its properties and then a fireBall spell blueprint to spawn the actual fireball? because it cant spawn itself can it?

If i have an array of baseSpell blueprints in my character blueprint, how do i reference the character so i can get things like characters location and rotation?

Im sure i have made this more complicated than it needs to be by looking at it for too long and reading too many different references on the topic, but if anyone could help me step through the process it would be greatly appreciated!

Cheers