[Client] Don't force skill update on cell change

Previously, an attempt by the server to simultaneously change a player's cell and skills (as you'd expect when a player file is loaded) led to:

1) The server sending the cell packet first and the skill packet afterwards

2) The player receiving the cell packet and sending their own skill packet as part of the client's forced skill update

3) The player receiving the skill packet from the server

4) The server receiving the skill packet from the player

The result was that, if the player then left the server without sending another skill packet, the server's memory retained the skills the player had sent instead of the skills it had sent to the player.

This is the first step in a solution to that situation and similar ones.

(cherry picked from commit cac4684986)

Note: In 0.6.x, this was only a problem if a player's cell was set by the server first and their skills were set next, i.e. this was not a problem in the default CoreScripts because the opposite order used there masked the problem. It was a more significant problem in 0.7 because all packets were queued for a player and sent in a specific hardcoded order.
0.6.3
David Cernat 6 years ago
parent 57070b7f5c
commit af4fcb7261

@ -427,9 +427,6 @@ void LocalPlayer::updateCell(bool forceUpdate)
isChangingRegion = false;
// Also force an update to skills (to send all progress to skill increases)
updateSkills(true);
// Also check if the inventory needs to be updated
updateInventory();
}

Loading…
Cancel
Save