How to play Weapon Animations? | Getting Error

I have the ShooterGame Code open all the time. They are calling the FireWeapon() Function IN the SetWeaponState function.
Took me a while to find this, because i wouldn’t have guessed the SetWeaponState function to also look if the newState is “Fire” and
call the FireWeapon() Function.

So they fire the weapon by changing the state to Fire, but the state isn’t replicated. So why does changing this State (on the firing client and on the server)
update the whole Weapon on EVERY client. I thought only replicated variables will be updated through the network to all clients by the server?
Or does changing a nonreplicated variable as the server always change it on the rest of the clients?

The Animation itself is called in “SimulateWeaponFire()” and it only runs on a client (returns if you are a server).

What i don’t really get with these RPC things is:

When do they switch from ONE Client - Server Communication to ALL Clients - Server Communication?