I’d break it up into proxy events.
On the client (autonomous) the anim_notify triggers fx and audio.
On the server (authority) it executes the trace and applies dmg.
On simulated proxies (sims) it executes fx and audio.
determining proxies…
For Client
Is locally controlled
or (get local role
== autonomous
&& Is Server NOT
)
For Server
Is Server
OR Is Dedicated Server
For Sims
get local role
== Simulated Proxy