Ability creation and setup

Hi, I’ve been using unreal4 for a few months now and used basically every tutorial I have been able to find online.
My issue for now is:
My friends and I are trying to create a multiplayer game where each player selects an ability (fire, Earth, air, water) and depending on which ability they have, different strengths and weaknesses should be applied to the characters as well as they can cast different “spells” which include fireballs, rock smash and jets of ebayer or air.
My question is how is the best way to start creating the abilities and their features? I was told lists and classes but it may be wrong and also im not sure how to implement those to do it.
Thanks for your time
Btw I am using Blueprints

There many ways to do this, depending on what else you are planning to do, you could make one basic character that has all the functionality that all of the different players have in common. Then you would create one character inheriting from that one basic character for each of the four abilities and add the ability-specific mechanics to those.

For input, you can create one player controller that handles all input and sends that to the characters, then the character decides what to do with that input OR you can just handle the input events within the characters themselves.

you could also use a switch on enumeration with the enum being a variable. then pair that with an array or datatable for all the abilities in this situation the enum would be the elements earth air etc and if you pick earth for instance it would use an array of earth abilities.

That would work well for a small scale project but doing anything more complicated where the abilites differ a lot from character to character, using different classes makes managing things easier IMO

just another way to accomplish the same goal. thats why i added it as a comment instead of its own answer. that said using datatables can be a good solution to the issue on large scale too. think ofa game like pokemon or final fantasy for instance where the same abilities will be used by many different types of characters (player, enemy type 1, enemy type 2). in that type of situation it would be easy to have a datatable containing all the abilities basic information (base damage, name, animation, usable with wep type). usint datatables also makes things easy to modify in a central location.