Hey,
My situation (see image for illustration) is that I have:
- generic parent ability
- generic character ability (ie, Commando) that’s inherited from the parent ability
- leaf normal abilities and a leaf basicAttack ability (ie, GA_CommandoAbility1 and GA_CommandoBasicAttack)

My issue is that I can’t systematically distinguish between GA_CommandoAbility1 and GA_CommandoBasicAttack because they don’t require the same attributes and method implementations
Normal abilities use cooldowns (like spells/abilities from mobas), BasicAttack use animation speed for frequency of attacks
I want to distinguish them through different attributes (animation based or cooldown based, range, base damage, etc)
I would like to do it systematically, like adding a single component or different inheritance logic so I don’t have to set everything by hand
My current solution is to have all the logic in the parent ability, set a boolean bIsBasicAttack to true and then set rest of the attributes manually:
- setting AbilityTags and BlockAbilityTags with the appropriate gameplayTags
- overriding specific parent functions only in the basicAttack Ability.
But there’s got to be a better/cleaner way, no ?
Any help/links would be much appreciated
Thanks