I’ve had this issue as well. I seem to think that it’s because the server is executing it also as it thinks its also acting as a client. Which if you’re going for LAN that would be need to be the case. Networking can get very frustrating because it does weird stuff. A lot of trial and error on some things…
I find that in some cases I also need another custom event running the same logic that is Run On Owning Client but called right before or after the server event. I’d call it ReceivePrimaryWeaponClient.
You could try placing a branch before the print log on the multicast and get and check IsDedicatedServer? And out of false do nothing and run true into your logic and see if that clears it up. If you do that you may need that run on owning client event right after the server event.
Sometimes you need to just bypass certain parts if the logic with that branch check and just go around certain nodes, like widgets because they won’t load on server and throw up runtime errors. This has worked for me.
I always test in standalone mode with at least three clients to make sure the clients are replicating correctly and not being corrected by the local server which is also a client on LAN.
It seems that Play In Editor is correcting replication issues on some circumstances because everything is happening on the local machine. Building the network for a dedicated server setup will ensure that you are 100% solid that the server events are handled correctly.
I hope that helps. I went through a lot of hair pulling get everything to act right.