i think the client should work by only giving commands to server side, and client shouldn't block command from players, even when we're stunned, command should be able to be sent on some queuing mechanism on server, and quickly executed after we're waken up

and then all commands are executed and verified on server

and then the server should send a stateless information to client, considering there might be some dropped messages

a skill that is cancelled because of stun but still getting cooldown is also a problem, probably the cause of this is, a client sending command of skill, but at the same time on the server side there is an event that make the player stunned, so after some time the command is received, player already in a state of being stunned, at this time, with this case happens so often, i think server need to send information about skill cooldown, and revert the cooldown because there is a major difference between the state

anyway at the moment the synchronization between state in server and state in client is very bad, making all the lags way too perceivable by players, and need to be fixed