Simulate Server Only Logic on Clients

You have to decide what you want to run on the server and what on the client. The new UT has a similar approach for their impacts, the idea behind it is to be able to simulate the effects on each side without really replicating everything (https://github.com/EpicGames/UnrealTournament/blob/clean-master/UnrealTournament/Source/UnrealTournament/Public/UTImpactEffect.h).

I was uploading a project to my github that features a simple powerup system (while mine are actors though it might help you a bit).

If I where you I would use the CDO of the ability class on the client. Then you have 2 options: first you could instatiate a new instance on that client and call your ‘SimulateAbility’ method, or (this one might be cleaner) get the configured ‘UTImpactEffect’ type class (you would have to create your own of course) to simulate the effects.

The second option gives you the flexibility to plug in different effects for different abilities by just having a static class of the current active ability. So the only thing you have to send to the client or to maintain on their end is which ability class is currently being used by that client.