Bets way to create abilities with modular pieces in DataAsset

Hello

I’m trying to figure out how to make it easy for designers to create abilities in my game.

I’m aiming for a system where you can add subsets of data (that I call modifiers) to an ability DataAsset. Most of my abilities can be separated in small individual behavior. For example:
-show this visual,
-Spawn here
-Constantly move in this direction
-Do X amount of damage at a specific rate
-etc.

In my case, the game will have a lot of abilities (between 50 and 100) and they aren’t meant to have vastly different behaviors like you would have in a game where your character would have a limited number of abilities. What I wish to achieve would be a system where each ability are defined threw data asset using modular pieces of information.

What I mean by that is, for example, if I want to create a fireball attack, I would create an FireballAbility DataAsset and then add the following ability modifiers to it:
-Particule effect (show a particule effect)
-Movement (move the ability in a specific way)
-life time (define when to destroy self)

Each modifier would showup in the DataAsset with it’s own set of settings (ex: Movement has a direction and speed field). When the game is played and an ability is used, I will go threw each modifier and call their execute() to modify the ability.

This might be a bit to much, and I know that I could simply have all the possible fields directly on the Ability DataAsset, but I was wandering if there is a way to achieve what I explained above.

Thanks in advance!