v1.6.18.1 (Unto the Breach Hotfix 1)

This commit is contained in:
Regalis11
2024-10-28 15:03:46 +02:00
parent a29662c074
commit 7eac44ea7d
47 changed files with 246 additions and 124 deletions
@@ -615,7 +615,7 @@ namespace Barotrauma.Networking
readyToStartAutomatically = true;
}
}
if (readyToStartAutomatically)
if (readyToStartAutomatically && !isRoundStartWarningActive)
{
if (!wasReadyToStartAutomatically) { GameMain.NetLobbyScreen.LastUpdateID++; }
TryStartGame();
@@ -840,9 +840,8 @@ namespace Barotrauma.Networking
IWriteMessage msg = new WriteOnlyMessage().WithHeader(ServerPacketHeader.CANCEL_STARTGAME);
serverPeer.Send(msg, c.Connection, DeliveryMethod.Reliable);
}
AbortStartGameIfWarningActive();
}
AbortStartGameIfWarningActive();
break;
case ClientPacketHeader.REQUEST_STARTGAMEFINALIZE:
if (connectedClient == null)
@@ -2547,6 +2546,21 @@ namespace Barotrauma.Networking
private void AbortStartGameIfWarningActive()
{
isRoundStartWarningActive = false;
//reset autorestart countdown to give the clients time to reselect perks
if (ServerSettings.AutoRestart)
{
ServerSettings.AutoRestartTimer = Math.Max(ServerSettings.AutoRestartInterval, 5.0f);
}
//reset start round votes so we don't immediately attempt to restart
foreach (var client in connectedClients)
{
client.SetVote(VoteType.StartRound, false);
}
int clientsReady = connectedClients.Count(c => c.GetVote<bool>(VoteType.StartRound));
GameMain.NetLobbyScreen.LastUpdateID++;
CoroutineManager.StopCoroutines(nameof(WarnAndDelayStartGame));
}
@@ -3312,6 +3326,24 @@ namespace Barotrauma.Networking
if (c == null || string.IsNullOrEmpty(newName) || !NetIdUtils.IdMoreRecent(nameId, c.NameId)) { return false; }
if (!newJob.IsEmpty)
{
if (!JobPrefab.Prefabs.TryGet(newJob, out JobPrefab newJobPrefab) || newJobPrefab.HiddenJob)
{
newJob = Identifier.Empty;
}
}
if (newName == c.Name && newJob == c.PreferredJob && newTeam == c.PreferredTeam) { return false; }
c.NameId = nameId;
c.PreferredJob = newJob;
if (newTeam != c.PreferredTeam)
{
c.PreferredTeam = newTeam;
RefreshPvpTeamAssignments();
}
var timeSinceNameChange = DateTime.Now - c.LastNameChangeTime;
if (timeSinceNameChange < Client.NameChangeCoolDown && newName != c.Name)
{
@@ -3321,29 +3353,14 @@ namespace Barotrauma.Networking
var coolDownRemaining = Client.NameChangeCoolDown - timeSinceNameChange;
SendDirectChatMessage($"ServerMessage.NameChangeFailedCooldownActive~[seconds]={(int)coolDownRemaining.TotalSeconds}", c);
LastClientListUpdateID++;
//increment the ID to make sure the current server-side name is treated as the "latest",
//and the client correctly reverts back to the old name
c.NameId++;
}
c.NameId = nameId;
c.RejectedName = newName;
return false;
}
if (!newJob.IsEmpty)
{
if (!JobPrefab.Prefabs.TryGet(newJob, out JobPrefab newJobPrefab) || newJobPrefab.HiddenJob)
{
newJob = Identifier.Empty;
}
}
c.NameId = nameId;
if (newName == c.Name && newJob == c.PreferredJob && newTeam == c.PreferredTeam) { return false; }
c.PreferredJob = newJob;
if (newTeam != c.PreferredTeam)
{
c.PreferredTeam = newTeam;
RefreshPvpTeamAssignments();
}
return TryChangeClientName(c, newName);
}