Yes, all the fighting calculations are done on the server. The client doesn't get to do the dice roll for how much damage a swing of their golden mace did. However the client will do their own temporary calculations as to whether the mace can swing (target is in range, last swing is complete etc.) and update the graphics to start showing the swing. Generally the server will return with the damage, or whether it was a miss/block, before the graphical swing is complete, and the client can therefore show the result in real time.
If the server comes back and says, no, your opponent had just moved out of range then the client has to stop it and it looks a bit jerky. A similar thing happens for movement. The client will move your character instantly, but ultimately the server will sync and tell the client the real position. I believe in some games you can take advantage of the server erring on the side of client smoothness (by tolerating lag and therefore giving a little trust to the client) and get your client to cheat by running a few percent faster.