Gameplay ability system: How to locally predict knockback that is applied to recipients of an attack?

Hi. Thank you for reading my question.

Disclaimer: I’m quite new to Unreal, and have been exclusively using Blueprints (after following a few tutorials for initial cpp GAS setup).


Context:
I managed to script together a 3-hit Combo attack using GAS. It works pretty much flawlessly by most accounts, even on simulated bad network conditions. The animations are all locally-predicted, replicated and bugless. I’ve got VFX working for it, I’ve got damage application working for it… the whole nine-yards. However…
I can’t for the life of me figure out how to locally predict a pushing mechanic that I want to happen to targets when they are hit by this combo attack. It feels quite bad when you are the client player on high latency and your attack activates it’s pushing mechanic way after you hit the target. I’ve tried searching around for solutions to this but everything I found that is related has no replies.

Right now, the push/knockback works (without local prediction). I grab the targets that are hit by the attack in the Gameplay Ability that holds the combo attack blueprint script (using sphere trace stuff). I then use a node called “Send Gameplay Event To Actor” and shuttle an event payload over to the Gameplay Ability that handles the knockback (and is given to all relevant actors from the get-go). This allows me to use “Apply Root Motion Constant Force” on all these target actors that were hit. It pushes very smoothly and deliciously, I love this node.

I’ve tried using “Wait Net Sync” with only-server-waits in various places to create new scoped prediction keys or something. None of that worked.

I also tried messing around with the regular “Send Gameplay Event” instead of it’s To-Actor counterpart, and hey, Local Prediction works great with it! But uhhh… It can only target the owner of the Gameplay Ability that is sending the event, so essentially the attacker. That’s no good…

I wonder if “Send Gameplay Event To Actor” is exclusively server-initiated?


So, can anyone familiar with GAS point me in the right direction for solving this? Do I need to break into cpp to make this work? Thank you for the help.