diff --git a/lib/netplay/netplay.cpp b/lib/netplay/netplay.cpp index 411ffb86e7b..c8a383d47bc 100644 --- a/lib/netplay/netplay.cpp +++ b/lib/netplay/netplay.cpp @@ -688,6 +688,7 @@ void NET_InitPlayers(bool initTeams, bool initSpectator) for (unsigned i = 0; i < MAX_CONNECTED_PLAYERS; ++i) { NET_InitPlayer(i, true, initTeams, initSpectator); + ingame.muteChat[i] = false; clearPlayerName(i); NETinitQueue(NETnetQueue(i)); } diff --git a/src/multiint.cpp b/src/multiint.cpp index a6e930fbb43..10f0abfbc5e 100644 --- a/src/multiint.cpp +++ b/src/multiint.cpp @@ -3240,6 +3240,7 @@ static SwapPlayerIndexesResult recvSwapPlayerIndexes(NETQUEUE queue, const std:: } } swapPlayerMultiStatsLocal(playerIndexA, playerIndexB); + std::swap(ingame.muteChat[playerIndexA], ingame.muteChat[playerIndexB]); multiSyncPlayerSwap(playerIndexA, playerIndexB); if (playerIndexA == selectedPlayer || playerIndexB == selectedPlayer) diff --git a/src/multijoin.cpp b/src/multijoin.cpp index b09267cd831..34a896d52e7 100644 --- a/src/multijoin.cpp +++ b/src/multijoin.cpp @@ -443,6 +443,8 @@ bool MultiPlayerLeave(UDWORD playerIndex) NETlogEntry("Player leaving game", SYNC_FLAG, playerIndex); debug(LOG_NET, "** Player %u [%s], has left the game at game time %u.", playerIndex, getPlayerName(playerIndex), gameTime); + ingame.muteChat[playerIndex] = false; + if (wz_command_interface_enabled()) { std::string playerPublicKeyB64 = base64Encode(getMultiStats(playerIndex).identity.toBytes(EcKey::Public));