From d9baeaa2e12618380169dc3d8e3b4161653a9a97 Mon Sep 17 00:00:00 2001
From: Markus Isberg <3e849f2e5c@pm.me>
Date: Tue, 11 Jan 2022 23:47:46 +0900
Subject: [PATCH] Hotfix 0.15.23.0
---
.../ClientSource/Characters/CharacterNetworking.cs | 3 ++-
Barotrauma/BarotraumaClient/LinuxClient.csproj | 2 +-
Barotrauma/BarotraumaClient/MacClient.csproj | 2 +-
Barotrauma/BarotraumaClient/WindowsClient.csproj | 2 +-
Barotrauma/BarotraumaServer/LinuxServer.csproj | 2 +-
Barotrauma/BarotraumaServer/MacServer.csproj | 2 +-
.../ServerSource/Characters/CharacterNetworking.cs | 1 +
.../GameSession/GameModes/MultiPlayerCampaign.cs | 1 +
.../ServerSource/Networking/GameServer.cs | 2 +-
.../ServerSource/Networking/RespawnManager.cs | 1 +
.../BarotraumaServer/ServerSource/Networking/Voting.cs | 2 +-
Barotrauma/BarotraumaServer/WindowsServer.csproj | 2 +-
Barotrauma/BarotraumaShared/changelog.txt | 9 +++++++++
13 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterNetworking.cs b/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterNetworking.cs
index 62ebb226f..946301454 100644
--- a/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterNetworking.cs
+++ b/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterNetworking.cs
@@ -323,9 +323,10 @@ namespace Barotrauma
}
break;
case 1: //NetEntityEvent.Type.Control
+ bool myCharacter = msg.ReadBoolean();
byte ownerID = msg.ReadByte();
ResetNetState();
- if (ownerID == GameMain.Client.ID)
+ if (myCharacter)
{
if (controlled != null)
{
diff --git a/Barotrauma/BarotraumaClient/LinuxClient.csproj b/Barotrauma/BarotraumaClient/LinuxClient.csproj
index 9bd087b75..7bbfaee3a 100644
--- a/Barotrauma/BarotraumaClient/LinuxClient.csproj
+++ b/Barotrauma/BarotraumaClient/LinuxClient.csproj
@@ -6,7 +6,7 @@
Barotrauma
FakeFish, Undertow Games
Barotrauma
- 0.15.22.1
+ 0.15.23.0
Copyright © FakeFish 2018-2020
AnyCPU;x64
Barotrauma
diff --git a/Barotrauma/BarotraumaClient/MacClient.csproj b/Barotrauma/BarotraumaClient/MacClient.csproj
index 79f8088a0..315be0cad 100644
--- a/Barotrauma/BarotraumaClient/MacClient.csproj
+++ b/Barotrauma/BarotraumaClient/MacClient.csproj
@@ -6,7 +6,7 @@
Barotrauma
FakeFish, Undertow Games
Barotrauma
- 0.15.22.1
+ 0.15.23.0
Copyright © FakeFish 2018-2020
AnyCPU;x64
Barotrauma
diff --git a/Barotrauma/BarotraumaClient/WindowsClient.csproj b/Barotrauma/BarotraumaClient/WindowsClient.csproj
index bad4553d8..f6d190782 100644
--- a/Barotrauma/BarotraumaClient/WindowsClient.csproj
+++ b/Barotrauma/BarotraumaClient/WindowsClient.csproj
@@ -6,7 +6,7 @@
Barotrauma
FakeFish, Undertow Games
Barotrauma
- 0.15.22.1
+ 0.15.23.0
Copyright © FakeFish 2018-2020
AnyCPU;x64
Barotrauma
diff --git a/Barotrauma/BarotraumaServer/LinuxServer.csproj b/Barotrauma/BarotraumaServer/LinuxServer.csproj
index b3c51f3b8..f8be62734 100644
--- a/Barotrauma/BarotraumaServer/LinuxServer.csproj
+++ b/Barotrauma/BarotraumaServer/LinuxServer.csproj
@@ -6,7 +6,7 @@
Barotrauma
FakeFish, Undertow Games
Barotrauma Dedicated Server
- 0.15.22.1
+ 0.15.23.0
Copyright © FakeFish 2018-2020
AnyCPU;x64
DedicatedServer
diff --git a/Barotrauma/BarotraumaServer/MacServer.csproj b/Barotrauma/BarotraumaServer/MacServer.csproj
index da76addf9..ee4cfe02e 100644
--- a/Barotrauma/BarotraumaServer/MacServer.csproj
+++ b/Barotrauma/BarotraumaServer/MacServer.csproj
@@ -6,7 +6,7 @@
Barotrauma
FakeFish, Undertow Games
Barotrauma Dedicated Server
- 0.15.22.1
+ 0.15.23.0
Copyright © FakeFish 2018-2020
AnyCPU;x64
DedicatedServer
diff --git a/Barotrauma/BarotraumaServer/ServerSource/Characters/CharacterNetworking.cs b/Barotrauma/BarotraumaServer/ServerSource/Characters/CharacterNetworking.cs
index bc7428d42..a61d869c3 100644
--- a/Barotrauma/BarotraumaServer/ServerSource/Characters/CharacterNetworking.cs
+++ b/Barotrauma/BarotraumaServer/ServerSource/Characters/CharacterNetworking.cs
@@ -321,6 +321,7 @@ namespace Barotrauma
case NetEntityEvent.Type.Control:
msg.WriteRangedInteger(1, min, max);
Client owner = (Client)extraData[1];
+ msg.Write(owner == c && owner.Character == this);
msg.Write(owner != null && owner.Character == this && GameMain.Server.ConnectedClients.Contains(owner) ? owner.ID : (byte)0);
break;
case NetEntityEvent.Type.Status:
diff --git a/Barotrauma/BarotraumaServer/ServerSource/GameSession/GameModes/MultiPlayerCampaign.cs b/Barotrauma/BarotraumaServer/ServerSource/GameSession/GameModes/MultiPlayerCampaign.cs
index a47a9f704..34883971f 100644
--- a/Barotrauma/BarotraumaServer/ServerSource/GameSession/GameModes/MultiPlayerCampaign.cs
+++ b/Barotrauma/BarotraumaServer/ServerSource/GameSession/GameModes/MultiPlayerCampaign.cs
@@ -220,6 +220,7 @@ namespace Barotrauma
{
RespawnManager.ReduceCharacterSkills(characterInfo);
characterInfo.RemoveSavedStatValuesOnDeath();
+ characterInfo.CauseOfDeath = null;
}
c.CharacterInfo = characterInfo;
characterData.RemoveAll(cd => cd.MatchesClient(c));
diff --git a/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs b/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs
index bf3347923..199860e32 100644
--- a/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs
+++ b/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs
@@ -1337,9 +1337,9 @@ namespace Barotrauma.Networking
break;
case ClientPermissions.ManageRound:
bool end = inc.ReadBoolean();
- bool save = inc.ReadBoolean();
if (end)
{
+ bool save = inc.ReadBoolean();
if (gameStarted)
{
Log("Client \"" + GameServer.ClientLogName(sender) + "\" ended the round.", ServerLog.MessageType.ServerMessage);
diff --git a/Barotrauma/BarotraumaServer/ServerSource/Networking/RespawnManager.cs b/Barotrauma/BarotraumaServer/ServerSource/Networking/RespawnManager.cs
index be893a291..f39ffd210 100644
--- a/Barotrauma/BarotraumaServer/ServerSource/Networking/RespawnManager.cs
+++ b/Barotrauma/BarotraumaServer/ServerSource/Networking/RespawnManager.cs
@@ -399,6 +399,7 @@ namespace Barotrauma.Networking
{
ReduceCharacterSkills(characterInfos[i]);
characterInfos[i].RemoveSavedStatValuesOnDeath();
+ characterInfos[i].CauseOfDeath = null;
}
}
}
diff --git a/Barotrauma/BarotraumaServer/ServerSource/Networking/Voting.cs b/Barotrauma/BarotraumaServer/ServerSource/Networking/Voting.cs
index 8d37c948a..5868b7235 100644
--- a/Barotrauma/BarotraumaServer/ServerSource/Networking/Voting.cs
+++ b/Barotrauma/BarotraumaServer/ServerSource/Networking/Voting.cs
@@ -131,7 +131,7 @@ namespace Barotrauma
{
string subName = inc.ReadString();
SubmarineInfo subInfo = SubmarineInfo.SavedSubmarines.FirstOrDefault(s => s.Name == subName);
- if (GameMain.GameSession?.Campaign is MultiPlayerCampaign campaign && campaign.CanPurchaseSub(subInfo))
+ if (GameMain.GameSession?.Campaign is MultiPlayerCampaign campaign && (campaign.CanPurchaseSub(subInfo) || GameMain.GameSession.IsSubmarineOwned(subInfo)))
{
StartSubmarineVote(subInfo, voteType, sender);
}
diff --git a/Barotrauma/BarotraumaServer/WindowsServer.csproj b/Barotrauma/BarotraumaServer/WindowsServer.csproj
index 6901aac71..ec80b7889 100644
--- a/Barotrauma/BarotraumaServer/WindowsServer.csproj
+++ b/Barotrauma/BarotraumaServer/WindowsServer.csproj
@@ -6,7 +6,7 @@
Barotrauma
FakeFish, Undertow Games
Barotrauma Dedicated Server
- 0.15.22.1
+ 0.15.23.0
Copyright © FakeFish 2018-2020
AnyCPU;x64
DedicatedServer
diff --git a/Barotrauma/BarotraumaShared/changelog.txt b/Barotrauma/BarotraumaShared/changelog.txt
index e40a686b8..cbb8356d3 100644
--- a/Barotrauma/BarotraumaShared/changelog.txt
+++ b/Barotrauma/BarotraumaShared/changelog.txt
@@ -1,3 +1,12 @@
+---------------------------------------------------------------------------------------------------------
+v0.15.23.0
+---------------------------------------------------------------------------------------------------------
+
+- Fixed inability to switch subs in multiplayer campaign, unless you opt to switch at the same time as you purchase the new sub.
+- Fixed server not loading the previous save, but continuing from where you left off if you return to the server lobby without saving and try to continue.
+- Fixed characters who've died and respawned during a round getting a penalty to their skills again on the following round.
+- Attempt to fix clients sometimes gaining control of an incorrect character in the multiplayer campaign.
+
---------------------------------------------------------------------------------------------------------
v0.15.22.1
---------------------------------------------------------------------------------------------------------