Why not just use good, old-fashioned components for abilities?
Abilities - GAS have quite adequate support for those abilities’ networking, including local prediction and rollback(if set up properly). it’s quite a big feature.
Another convenient notable feature: ability’s tags that determine the interaction rules between different abilties\other effects.
Also i like Attributes\GEs - while writing custom attibutes system isn’t really difficult, but this one is already implemented(and integrated with other GAS parts). Notable feature: support of temporary modifiers to attributes.
For singleplayer game there are less reasons to use GAS, so it’s fine to use simpler custom systems if they suit your needs. Though nevertheless when you get used to GAS it isn’t a bad idea to use it for singleplayer either.