diff --git a/Barotrauma/BarotraumaClient/ClientSource/Networking/Primitives/Peers/SteamP2PClientPeer.cs b/Barotrauma/BarotraumaClient/ClientSource/Networking/Primitives/Peers/SteamP2PClientPeer.cs
index 76974601b..8f08b8966 100644
--- a/Barotrauma/BarotraumaClient/ClientSource/Networking/Primitives/Peers/SteamP2PClientPeer.cs
+++ b/Barotrauma/BarotraumaClient/ClientSource/Networking/Primitives/Peers/SteamP2PClientPeer.cs
@@ -319,7 +319,7 @@ namespace Barotrauma.Networking
}
if (!successSend)
{
- DebugConsole.ThrowError("Failed to send message to remote peer! (" + length.ToString() + " bytes)");
+ DebugConsole.AddWarning("Failed to send message to remote peer! (" + length.ToString() + " bytes)");
}
}
}
diff --git a/Barotrauma/BarotraumaClient/ClientSource/Networking/Primitives/Peers/SteamP2POwnerPeer.cs b/Barotrauma/BarotraumaClient/ClientSource/Networking/Primitives/Peers/SteamP2POwnerPeer.cs
index 0cbcc298c..19b81611c 100644
--- a/Barotrauma/BarotraumaClient/ClientSource/Networking/Primitives/Peers/SteamP2POwnerPeer.cs
+++ b/Barotrauma/BarotraumaClient/ClientSource/Networking/Primitives/Peers/SteamP2POwnerPeer.cs
@@ -317,7 +317,7 @@ namespace Barotrauma.Networking
}
if (!successSend)
{
- DebugConsole.ThrowError("Failed to send message to remote peer! (" + p2pData.Length.ToString() + " bytes)");
+ DebugConsole.AddWarning("Failed to send message to remote peer! (" + p2pData.Length.ToString() + " bytes)");
}
}
}
diff --git a/Barotrauma/BarotraumaClient/ClientSource/Networking/SteamManager.cs b/Barotrauma/BarotraumaClient/ClientSource/Networking/SteamManager.cs
index 2c8915596..d9647ac72 100644
--- a/Barotrauma/BarotraumaClient/ClientSource/Networking/SteamManager.cs
+++ b/Barotrauma/BarotraumaClient/ClientSource/Networking/SteamManager.cs
@@ -1007,7 +1007,7 @@ namespace Barotrauma.Steam
///
/// Installs a workshop item by moving it to the game folder.
///
- public static bool InstallWorkshopItem(Steamworks.Ugc.Item? itemOrNull, out string errorMsg, bool enableContentPackage = false, bool suppressInstallNotif = false)
+ public static bool InstallWorkshopItem(Steamworks.Ugc.Item? itemOrNull, out string errorMsg, bool enableContentPackage = false, bool suppressInstallNotif = false, Action onInstall = null)
{
errorMsg = "Item is null";
if (!itemOrNull.TryGetValue(out Steamworks.Ugc.Item item)) { return false; }
@@ -1143,6 +1143,8 @@ namespace Barotrauma.Steam
GameMain.Config.SuppressModFolderWatcher = false;
+ onInstall?.Invoke(newPackage);
+
GameMain.SteamWorkshopScreen?.SetReinstallButtonStatus(item, true, GUI.Style.Green);
}
catch
diff --git a/Barotrauma/BarotraumaClient/ClientSource/Program.cs b/Barotrauma/BarotraumaClient/ClientSource/Program.cs
index 14c1b3a6e..0ee887f01 100644
--- a/Barotrauma/BarotraumaClient/ClientSource/Program.cs
+++ b/Barotrauma/BarotraumaClient/ClientSource/Program.cs
@@ -156,10 +156,10 @@ namespace Barotrauma
sb.AppendLine("Graphics mode: " + GameMain.Config.GraphicsWidth + "x" + GameMain.Config.GraphicsHeight + " (" + GameMain.Config.WindowMode.ToString() + ")");
sb.AppendLine("VSync " + (GameMain.Config.VSyncEnabled ? "ON" : "OFF"));
sb.AppendLine("Language: " + (GameMain.Config.Language ?? "none"));
- }
- if (GameMain.Config.AllEnabledPackages != null)
- {
- sb.AppendLine("Selected content packages: " + (!GameMain.Config.AllEnabledPackages.Any() ? "None" : string.Join(", ", GameMain.Config.AllEnabledPackages.Select(c => c.Name))));
+ if (GameMain.Config.AllEnabledPackages != null)
+ {
+ sb.AppendLine("Selected content packages: " + (!GameMain.Config.AllEnabledPackages.Any() ? "None" : string.Join(", ", GameMain.Config.AllEnabledPackages.Select(c => c.Name))));
+ }
}
sb.AppendLine("Level seed: " + ((Level.Loaded == null) ? "no level loaded" : Level.Loaded.Seed));
sb.AppendLine("Loaded submarine: " + ((Submarine.MainSub == null) ? "None" : Submarine.MainSub.Info.Name + " (" + Submarine.MainSub.Info.MD5Hash + ")"));
diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/ServerListScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/ServerListScreen.cs
index 1a316e4a8..5ac93c54e 100644
--- a/Barotrauma/BarotraumaClient/ClientSource/Screens/ServerListScreen.cs
+++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/ServerListScreen.cs
@@ -1078,11 +1078,25 @@ namespace Barotrauma
pendingWorkshopDownloads.Remove(itemId);
currentlyDownloadingWorkshopItem = null;
+ void onInstall(ContentPackage resultingPackage)
+ {
+ if (!resultingPackage.MD5hash.Hash.Equals(clearedDownload.ExpectedHash))
+ {
+ workshopDownloadsFrame?.FindChild((c) => c.UserData is ulong l && l == itemId, true)?.Flash(GUI.Style.Red);
+ CancelWorkshopDownloads();
+ GameMain.Client?.Disconnect();
+ GameMain.Client = null;
+ new GUIMessageBox(
+ TextManager.Get("ConnectionLost"),
+ TextManager.GetWithVariable("DisconnectMessage.MismatchedWorkshopMod", "[incompatiblecontentpackage]", $"\"{resultingPackage.Name}\" (hash {resultingPackage.MD5hash.ShortHash})"));
+ }
+ }
+
if (SteamManager.CheckWorkshopItemInstalled(item))
{
SteamManager.UninstallWorkshopItem(item, false, out _);
}
- if (SteamManager.InstallWorkshopItem(item, out string errorMsg, enableContentPackage: false, suppressInstallNotif: true))
+ if (SteamManager.InstallWorkshopItem(item, out string errorMsg, enableContentPackage: false, suppressInstallNotif: true, onInstall: onInstall))
{
workshopDownloadsFrame?.FindChild((c) => c.UserData is ulong l && l == itemId, true)?.Flash(GUI.Style.Green);
}
@@ -1091,16 +1105,6 @@ namespace Barotrauma
workshopDownloadsFrame?.FindChild((c) => c.UserData is ulong l && l == itemId, true)?.Flash(GUI.Style.Red);
DebugConsole.ThrowError(errorMsg);
}
-
- ContentPackage resultingPackage = ContentPackage.AllPackages.FirstOrDefault(p => p.MD5hash.Hash == clearedDownload.ExpectedHash);
- if (resultingPackage == null)
- {
- workshopDownloadsFrame?.FindChild((c) => c.UserData is ulong l && l == itemId, true)?.Flash(GUI.Style.Red);
- CancelWorkshopDownloads();
- new GUIMessageBox(
- TextManager.Get("ConnectionLost"),
- TextManager.GetWithVariable("DisconnectMessage.MismatchedWorkshopMod", "incompatiblecontentpackage", $"\"{resultingPackage.Name}\" (hash {resultingPackage.MD5hash.ShortHash})"));
- }
});
}
}
diff --git a/Barotrauma/BarotraumaClient/LinuxClient.csproj b/Barotrauma/BarotraumaClient/LinuxClient.csproj
index 0c55335e1..3a58ebb92 100644
--- a/Barotrauma/BarotraumaClient/LinuxClient.csproj
+++ b/Barotrauma/BarotraumaClient/LinuxClient.csproj
@@ -6,7 +6,7 @@
Barotrauma
FakeFish, Undertow Games
Barotrauma
- 0.1300.2.11
+ 0.13.3.11
Copyright © FakeFish 2018-2020
AnyCPU;x64
Barotrauma
diff --git a/Barotrauma/BarotraumaClient/MacClient.csproj b/Barotrauma/BarotraumaClient/MacClient.csproj
index 6c0919f6e..9dcf56a03 100644
--- a/Barotrauma/BarotraumaClient/MacClient.csproj
+++ b/Barotrauma/BarotraumaClient/MacClient.csproj
@@ -6,7 +6,7 @@
Barotrauma
FakeFish, Undertow Games
Barotrauma
- 0.1300.2.11
+ 0.13.3.11
Copyright © FakeFish 2018-2020
AnyCPU;x64
Barotrauma
diff --git a/Barotrauma/BarotraumaClient/WindowsClient.csproj b/Barotrauma/BarotraumaClient/WindowsClient.csproj
index 0b2194b48..ccd664f51 100644
--- a/Barotrauma/BarotraumaClient/WindowsClient.csproj
+++ b/Barotrauma/BarotraumaClient/WindowsClient.csproj
@@ -6,7 +6,7 @@
Barotrauma
FakeFish, Undertow Games
Barotrauma
- 0.1300.2.11
+ 0.13.3.11
Copyright © FakeFish 2018-2020
AnyCPU;x64
Barotrauma
diff --git a/Barotrauma/BarotraumaServer/LinuxServer.csproj b/Barotrauma/BarotraumaServer/LinuxServer.csproj
index 63f5215c3..1f5d68a8f 100644
--- a/Barotrauma/BarotraumaServer/LinuxServer.csproj
+++ b/Barotrauma/BarotraumaServer/LinuxServer.csproj
@@ -6,7 +6,7 @@
Barotrauma
FakeFish, Undertow Games
Barotrauma Dedicated Server
- 0.1300.2.11
+ 0.13.3.11
Copyright © FakeFish 2018-2020
AnyCPU;x64
DedicatedServer
diff --git a/Barotrauma/BarotraumaServer/MacServer.csproj b/Barotrauma/BarotraumaServer/MacServer.csproj
index 5d5b825b4..556643a5a 100644
--- a/Barotrauma/BarotraumaServer/MacServer.csproj
+++ b/Barotrauma/BarotraumaServer/MacServer.csproj
@@ -6,7 +6,7 @@
Barotrauma
FakeFish, Undertow Games
Barotrauma Dedicated Server
- 0.1300.2.11
+ 0.13.3.11
Copyright © FakeFish 2018-2020
AnyCPU;x64
DedicatedServer
diff --git a/Barotrauma/BarotraumaServer/ServerSource/Program.cs b/Barotrauma/BarotraumaServer/ServerSource/Program.cs
index ba8bb55fe..03bbb4e15 100644
--- a/Barotrauma/BarotraumaServer/ServerSource/Program.cs
+++ b/Barotrauma/BarotraumaServer/ServerSource/Program.cs
@@ -111,10 +111,10 @@ namespace Barotrauma
if (GameMain.Config != null)
{
sb.AppendLine("Language: " + (GameMain.Config.Language ?? "none"));
- }
- if (GameMain.Config.AllEnabledPackages != null)
- {
- sb.AppendLine("Selected content packages: " + (!GameMain.Config.AllEnabledPackages.Any() ? "None" : string.Join(", ", GameMain.Config.AllEnabledPackages.Select(c => c.Name))));
+ if (GameMain.Config.AllEnabledPackages != null)
+ {
+ sb.AppendLine("Selected content packages: " + (!GameMain.Config.AllEnabledPackages.Any() ? "None" : string.Join(", ", GameMain.Config.AllEnabledPackages.Select(c => c.Name))));
+ }
}
sb.AppendLine("Level seed: " + ((Level.Loaded == null) ? "no level loaded" : Level.Loaded.Seed));
sb.AppendLine("Loaded submarine: " + ((Submarine.MainSub == null) ? "None" : Submarine.MainSub.Info.Name + " (" + Submarine.MainSub.Info.MD5Hash + ")"));
diff --git a/Barotrauma/BarotraumaServer/WindowsServer.csproj b/Barotrauma/BarotraumaServer/WindowsServer.csproj
index 6a084573d..4453b6107 100644
--- a/Barotrauma/BarotraumaServer/WindowsServer.csproj
+++ b/Barotrauma/BarotraumaServer/WindowsServer.csproj
@@ -6,7 +6,7 @@
Barotrauma
FakeFish, Undertow Games
Barotrauma Dedicated Server
- 0.1300.2.11
+ 0.13.3.11
Copyright © FakeFish 2018-2020
AnyCPU;x64
DedicatedServer
diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/HumanAIController.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/HumanAIController.cs
index 6ba9ae846..4a2e438a9 100644
--- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/HumanAIController.cs
+++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/HumanAIController.cs
@@ -442,7 +442,7 @@ namespace Barotrauma
Character.AnimController.InWater ||
Character.AnimController.HeadInWater ||
Character.CurrentHull == null ||
- Character.Submarine.TeamID != Character.TeamID ||
+ Character.Submarine?.TeamID != Character.TeamID ||
ObjectiveManager.IsCurrentObjective() ||
ObjectiveManager.CurrentOrder is AIObjectiveGoTo goTo && goTo.Target == Character || // wait order
ObjectiveManager.CurrentObjective.GetSubObjectivesRecursive(true).Any(o => o.KeepDivingGearOn);
diff --git a/Barotrauma/BarotraumaShared/SharedSource/ContentPackage.cs b/Barotrauma/BarotraumaShared/SharedSource/ContentPackage.cs
index 715d7bb40..305baebb7 100644
--- a/Barotrauma/BarotraumaShared/SharedSource/ContentPackage.cs
+++ b/Barotrauma/BarotraumaShared/SharedSource/ContentPackage.cs
@@ -276,7 +276,16 @@ namespace Barotrauma
{
SteamWorkshopId = SteamManager.GetWorkshopItemIDFromUrl(workshopUrl);
}
- GameVersion = new Version(doc.Root.GetAttributeString("gameversion", "0.0.0.0"));
+ string versionStr = doc.Root.GetAttributeString("gameversion", "0.0.0.0");
+ try
+ {
+ GameVersion = new Version(versionStr);
+ }
+ catch
+ {
+ DebugConsole.ThrowError($"Invalid version number in content package \"{Name}\" ({versionStr}).");
+ GameVersion = GameMain.Version;
+ }
if (doc.Root.Attribute("installtime") != null)
{
InstallTime = ToolBox.Epoch.ToDateTime(doc.Root.GetAttributeUInt("installtime", 0));
diff --git a/Barotrauma/BarotraumaShared/SharedSource/Networking/ServerSettings.cs b/Barotrauma/BarotraumaShared/SharedSource/Networking/ServerSettings.cs
index 79f9df744..528f328bd 100644
--- a/Barotrauma/BarotraumaShared/SharedSource/Networking/ServerSettings.cs
+++ b/Barotrauma/BarotraumaShared/SharedSource/Networking/ServerSettings.cs
@@ -914,7 +914,6 @@ namespace Barotrauma.Networking
{
if (!HasPassword) return true;
byte[] saltedPw = SaltPassword(Encoding.UTF8.GetBytes(password), salt);
- DebugConsole.NewMessage(ToolBox.ByteArrayToString(input) + " " + ToolBox.ByteArrayToString(saltedPw));
if (input.Length != saltedPw.Length) return false;
for (int i = 0; i < input.Length; i++)
{
diff --git a/Barotrauma/BarotraumaShared/Submarines/Humpback.sub b/Barotrauma/BarotraumaShared/Submarines/Humpback.sub
index c1640d13f..7a5dc04a7 100644
Binary files a/Barotrauma/BarotraumaShared/Submarines/Humpback.sub and b/Barotrauma/BarotraumaShared/Submarines/Humpback.sub differ
diff --git a/Barotrauma/BarotraumaShared/Submarines/Orca.sub b/Barotrauma/BarotraumaShared/Submarines/Orca.sub
index a59bad499..a8cd9ff9f 100644
Binary files a/Barotrauma/BarotraumaShared/Submarines/Orca.sub and b/Barotrauma/BarotraumaShared/Submarines/Orca.sub differ
diff --git a/Barotrauma/BarotraumaShared/changelog.txt b/Barotrauma/BarotraumaShared/changelog.txt
index e934f0c60..9b74542ee 100644
--- a/Barotrauma/BarotraumaShared/changelog.txt
+++ b/Barotrauma/BarotraumaShared/changelog.txt
@@ -1,33 +1,23 @@
----------------------------------------------------------------------------------------------------------
-v0.1300.2.11 (unstable)
----------------------------------------------------------------------------------------------------------
-
-Changes:
-- Made large monsters immune to sufforin.
-
-Fixes:
-- More fixes to installing/updating mods.
-- Fixed certain submarines spawning with a non-neutral ballast level (Kastrull seems to have been the only affected vanilla submarine). Happened because the game would determine the neutral ballast level from the first nav terminal it finds in the sub, without checking whether that terminal controls a shuttle or the sub itself.
-- Fixed explosions using wall damage value instead of level wall damage when the explosion happens outside a level wall.
-- Fixed oxygen shelves refilling oxygenite tanks (again).
-- Readded traitor missions that were accidentally removed in the previous unstable build.
-
-Modding:
-- Fixed console errors when a character with no gender tries to wear clothing that only has separate male and female sprites.
-
----------------------------------------------------------------------------------------------------------
-v0.1300.1.11 (unstable)
+------------------------------------------------------------------------------------------------------
+v0.13.3.11
---------------------------------------------------------------------------------------------------------
Changes:
- Adjusted autopilot logic to make it better at keeping the sub afloat when there's extra water on board. The maximum velocity of the autopilot is limited, which previously prevented it from emptying the ballast fully. Now it's only limited if the submarine is heading in the correct direction with enough speed, so if the sub starts sinking due to extra water, the autopilot can compensate and fully empty the ballast.
+- Made large monsters immune to sufforin.
Fixes:
-- Fixes to issues that prevented mods installed from the Workshop from getting automatically updated.
-- Fixed inability to drag players who've ragdolled themselves with space bar.
-- Fixed status monitor being messed up on mirrored subs that contain shuttles.
+- Fixes to issues that prevented mods installed from the Workshop from getting automatically updated and caused errors when trying to join modded servers.
- Fixed an issue in the voice chat that caused audio crackling when multiple people were speaking at the same time.
+- Fixed inability to drag players who've ragdolled themselves with space bar.
+- Fixed "failed to send message to remote peer" error spam when a client's internet connection goes down.
+- Fixed certain submarines spawning with a non-neutral ballast level (Kastrull seems to have been the only affected vanilla submarine). Happened because the game would determine the neutral ballast level from the first nav terminal it finds in the sub, without checking whether that terminal controls a shuttle or the sub itself.
+- Fixed explosions using wall damage value instead of level wall damage when the explosion happens outside a level wall.
- Fixed inability to place oxygenite tanks in oxygen tank shelves.
+- Fixed crashing when a bot tries to find a diving suit inside ruins.
+- Fixed minor wall draw order issue in Orca's top deck.
+- Fixed bots trying to treat nausea even though the only cure for it is to wait it out.
+- Fixed status monitor being messed up on mirrored subs that contain shuttles.
- Fixed railgun payloads not exploding.
- Fixed server sometimes assigning players who haven't set any job preferences as the captain, even if someone else wants to be the captain.
- Fixed ancient weapon propelling the character in an incorrect direction when using it underwater.
@@ -42,12 +32,15 @@ Fixes:
- Fixed clicking on command interface nodes crashing the game if the key is rebound to primary mouse button.
- Fixed tiling issues in some of the legacy background wall sprites.
- Fixed Spinelings attacking Leucocytes. Spinelings should avoid Leucocytes if they get close.
+- Fixed bots being unable to stand on the platform below Humpback's docking hatch, preventing them from repairing the hatch.
- Fixed "beacon station" text and "generating preview..." in the submarine preview window not being translated when playing in a language other than English.
Modding:
+- Fixed console errors when a character with no gender tries to wear clothing that only has separate male and female sprites.
- Fixed crashing if the current style doesn't define a saving indicator.
- Fixed inability to load ragdoll/animation definitions from mods that override a character.
- Fixed ClearTagAction not properly clearing all the tags assigned by a scripted event.
+- Fixed crashing if a mod's version number is incorrectly formatted in filelist.xml.
---------------------------------------------------------------------------------------------------------
v0.13.0.11