also, from the little i can read, i can say you are understanding replication wrong.
Multicast only works if called from the server .
at some point you are using “switch has authority” but both ends arrive to the same node, so it makes no sense using it.
your logic to equip weapons is not the best in my opinion. you are equipping all the weapons and telling your pawn to hide and compare each of them. what if you have 20 weapons? you are not gonna do a 20 times check, also, im sure it wouldnt be good on perfomance.
what i do is:
Add a grippoint to my skeleton and on the construct of my character i attach the child actor (acts as a class slot) to the grippoint.
Have a struct Inventory (shown on the picture) which has the information about the item, hotkey, etc etc
whenever i need to equip the weapon, i just change it of class. the only thing i send to the server as replication is the pawn (so the other clients know what pawn is being updated), the new class to change the child actor, and the playerId, so it doesnt tells the initiator to re-do the change of class (for network optimization)