diff --git a/.github/DISCUSSION_TEMPLATE/bug-reports.yml b/.github/DISCUSSION_TEMPLATE/bug-reports.yml index 3d1153ba3..cdefa3753 100644 --- a/.github/DISCUSSION_TEMPLATE/bug-reports.yml +++ b/.github/DISCUSSION_TEMPLATE/bug-reports.yml @@ -73,7 +73,7 @@ body: label: Version description: Which version of the game did the bug happen in? You can see the current version number in the bottom left corner of your screen in the main menu. options: - - v1.11.4.1 (Winter Update 2025) + - v1.11.5.0 (Winter Update 2025 Hotfix 1) - Other validations: required: true diff --git a/Barotrauma/BarotraumaClient/LinuxClient.csproj b/Barotrauma/BarotraumaClient/LinuxClient.csproj index 9a12c3b0c..a74a96392 100644 --- a/Barotrauma/BarotraumaClient/LinuxClient.csproj +++ b/Barotrauma/BarotraumaClient/LinuxClient.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma - 1.11.4.1 + 1.11.5.0 Copyright © FakeFish 2018-2024 AnyCPU;x64 Barotrauma diff --git a/Barotrauma/BarotraumaClient/MacClient.csproj b/Barotrauma/BarotraumaClient/MacClient.csproj index ddb9b1754..67009978a 100644 --- a/Barotrauma/BarotraumaClient/MacClient.csproj +++ b/Barotrauma/BarotraumaClient/MacClient.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma - 1.11.4.1 + 1.11.5.0 Copyright © FakeFish 2018-2024 AnyCPU;x64 Barotrauma diff --git a/Barotrauma/BarotraumaClient/WindowsClient.csproj b/Barotrauma/BarotraumaClient/WindowsClient.csproj index b21ba47c4..43f2ab06c 100644 --- a/Barotrauma/BarotraumaClient/WindowsClient.csproj +++ b/Barotrauma/BarotraumaClient/WindowsClient.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma - 1.11.4.1 + 1.11.5.0 Copyright © FakeFish 2018-2024 AnyCPU;x64 Barotrauma diff --git a/Barotrauma/BarotraumaServer/LinuxServer.csproj b/Barotrauma/BarotraumaServer/LinuxServer.csproj index 9ac7207a5..18a89a450 100644 --- a/Barotrauma/BarotraumaServer/LinuxServer.csproj +++ b/Barotrauma/BarotraumaServer/LinuxServer.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma Dedicated Server - 1.11.4.1 + 1.11.5.0 Copyright © FakeFish 2018-2023 AnyCPU;x64 DedicatedServer diff --git a/Barotrauma/BarotraumaServer/MacServer.csproj b/Barotrauma/BarotraumaServer/MacServer.csproj index fddacb624..fe5683a68 100644 --- a/Barotrauma/BarotraumaServer/MacServer.csproj +++ b/Barotrauma/BarotraumaServer/MacServer.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma Dedicated Server - 1.11.4.1 + 1.11.5.0 Copyright © FakeFish 2018-2023 AnyCPU;x64 DedicatedServer diff --git a/Barotrauma/BarotraumaServer/ServerSource/GameSession/GameModes/MultiPlayerCampaign.cs b/Barotrauma/BarotraumaServer/ServerSource/GameSession/GameModes/MultiPlayerCampaign.cs index 7ee4200cd..0bb6f889e 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/GameSession/GameModes/MultiPlayerCampaign.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/GameSession/GameModes/MultiPlayerCampaign.cs @@ -273,16 +273,27 @@ namespace Barotrauma } if (characterInfo == null || characterInfo.Discarded) { continue; } //reduce skills if the character has died - if (characterInfo.CauseOfDeath != null && characterInfo.CauseOfDeath.Type != CauseOfDeathType.Disconnected) + bool diedToDisconnect = characterInfo.CauseOfDeath is { Type: CauseOfDeathType.Disconnected }; + bool diedForReal = characterInfo.CauseOfDeath != null && !diedToDisconnect; + if (diedForReal) { characterInfo.ApplyDeathEffects(); } c.CharacterInfo = characterInfo; - - // Only create new character data if the connected client has an active character (which they might not, - // eg. if they are in the lobby). Otherwise the CharacterCampaignData constructor would fall back to a new - // Character object, overwriting the inventory and wallet with empty values. - if (c.Character != null) + + //Different scenarios for saving (or not saving) the character: + // 1. Client is controlling a character, character is alive + // -> save normally + // 2. Client is not controlling a character, previous character died + // -> save normally (applying skill reduction, getting rid of the items the character had, etc) + // 3. Client is not controlling a character, previous character died due to a disconnect (e.g. client left or went to the lobby, and later returned) + // -> do not save, the character should retain their skills and items + // 4. Client is not controlling a character, and they don't have any previous character data + // -> we shouldn't be getting to this point at all, we return earlier if no character info that has spawned is found + // 5. Client is not controlling a character, but they have previous character data which has not yet spawned (e.g. they've played on this server on some previous round) + // -> we shouldn't be getting to this point at all, we return earlier if no character info that has spawned is found + + if (c.Character != null || diedForReal) { SetClientCharacterData(c); } diff --git a/Barotrauma/BarotraumaServer/WindowsServer.csproj b/Barotrauma/BarotraumaServer/WindowsServer.csproj index eb683a2ad..857c49007 100644 --- a/Barotrauma/BarotraumaServer/WindowsServer.csproj +++ b/Barotrauma/BarotraumaServer/WindowsServer.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma Dedicated Server - 1.11.4.1 + 1.11.5.0 Copyright © FakeFish 2018-2023 AnyCPU;x64 DedicatedServer diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Order.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Order.cs index 5b13a8e36..8ca9bedf5 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Order.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Order.cs @@ -440,13 +440,14 @@ namespace Barotrauma if (Identifier == Tags.DeconstructThis && item.AllowDeconstruct) { - if (item.AllowDeconstruct && !Item.DeconstructItems.Contains(item) && - //only allow deconstructing if there are deconstruction recipes that + if (item.AllowDeconstruct && !Item.DeconstructItems.Contains(item) && + //only allow deconstructing if there are no deconstruction recipes (= deconstructing yields nothing), or deconstruction recipes that + (item.Prefab.DeconstructItems.None() || item.Prefab.DeconstructItems.Any(deconstructItem => //1. don't require any additional items (bots can't handle that) deconstructItem.RequiredOtherItem.None() && //2. don't require a research station (bots don't know how to use those) - (deconstructItem.RequiredDeconstructor.Length == 0 || deconstructItem.RequiredDeconstructor.Any(d => d != Tags.GeneticResearchStation)))) + (deconstructItem.RequiredDeconstructor.Length == 0 || deconstructItem.RequiredDeconstructor.Any(d => d != Tags.GeneticResearchStation))))) { return true; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs index 7213bb625..af94426d0 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs @@ -627,9 +627,9 @@ namespace Barotrauma { get { - if (IsPet) + if (IsPet && AIController is EnemyAIController { PetBehavior: { } petBehavior }) { - string petName = (AIController as EnemyAIController).PetBehavior.GetTagName(); + string petName = petBehavior.GetTagName(); if (!string.IsNullOrEmpty(petName)) { return petName; } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs index 110d8eca2..2c2fcad91 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs @@ -316,7 +316,7 @@ namespace Barotrauma if (Character.AnimController.Limbs.None(l => l.HealthIndex == i)) { DebugConsole.AddWarning( - $"Potential error in character {Character.DisplayName}: none of the limbs have been set to use the LimbHealth #{i}, and it will do nothing. " + $"Potential error in character \"{Character.Prefab.Identifier}\": none of the limbs have been set to use the LimbHealth #{i}, and it will do nothing. " + "Did you forget to set the HealthIndex values of the limbs?", contentPackage: Character.ContentPackage); } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/CircuitBox/CircuitBoxNode.cs b/Barotrauma/BarotraumaShared/SharedSource/CircuitBox/CircuitBoxNode.cs index 3608618ca..73bc2167e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/CircuitBox/CircuitBoxNode.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/CircuitBox/CircuitBoxNode.cs @@ -1,8 +1,9 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Collections.Immutable; +using System.Linq; using Barotrauma.Items.Components; using Microsoft.Xna.Framework; @@ -142,7 +143,7 @@ namespace Barotrauma Vector2 drawPos = Position; drawPos.Y = -drawPos.Y; - foreach (var c in Connectors) + foreach (var c in Connectors.OrderBy(static c => c.Connection.DisplayOrder)) { bool isOutput = c.IsOutput; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Item.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Item.cs index b250f2bf6..83b869ba4 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Item.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Item.cs @@ -463,18 +463,18 @@ namespace Barotrauma } private float impactTolerance; - [Serialize(0.0f, IsPropertySaveable.No), ConditionallyEditable(ConditionallyEditable.ConditionType.ReceivesSubmarineImpacts, MinValueFloat = 0, MaxValueFloat = 100)] + [Serialize(0.0f, IsPropertySaveable.Yes), ConditionallyEditable(ConditionallyEditable.ConditionType.ReceivesSubmarineImpacts, MinValueFloat = 0, MaxValueFloat = 100)] public float ImpactTolerance { get { return impactTolerance; } set { impactTolerance = Math.Max(value, 0.0f); } } - [Serialize(0.0f, IsPropertySaveable.No, description: "The amount of damage the item takes from impacts. Acts as a multiplier on the strength of the impact. Note that ImpactTolerance must be set for impacts to register."), + [Serialize(0.0f, IsPropertySaveable.Yes, description: "The amount of damage the item takes from impacts. Acts as a multiplier on the strength of the impact. Note that ImpactTolerance must be set for impacts to register."), ConditionallyEditable(ConditionallyEditable.ConditionType.ReceivesSubmarineImpacts, MinValueFloat = 0, MaxValueFloat = 100)] public float ImpactDamage { get; set; } - [Serialize(1.0f, IsPropertySaveable.No, description: "Probability for impacts to register. Defaults to 1. Note that ImpactTolerance must also be set for impacts to register."), + [Serialize(1.0f, IsPropertySaveable.Yes, description: "Probability for impacts to register. Defaults to 1. Note that ImpactTolerance must also be set for impacts to register."), ConditionallyEditable(ConditionallyEditable.ConditionType.ReceivesSubmarineImpacts, MinValueFloat = 0, MaxValueFloat = 1)] public float ImpactDamageProbability { get; set; } diff --git a/Barotrauma/BarotraumaShared/changelog.txt b/Barotrauma/BarotraumaShared/changelog.txt index f2323febc..fcd1b5730 100644 --- a/Barotrauma/BarotraumaShared/changelog.txt +++ b/Barotrauma/BarotraumaShared/changelog.txt @@ -1,4 +1,14 @@ ------------------------------------------------------------------------------------------------------------------------------------------------- +v1.11.5.0 (Winter Update Hotfix 1) +------------------------------------------------------------------------------------------------------------------------------------------------- + +- Fixed players sometimes retaining their old inventory items if they die and respawn on a later round. +- Fixed inability to order bots to deconstruct items that don't yield anything when deconstructed. +- Fixed weak points causing the "high pressure" icon to appear in the room, despite the pressure not being high enough to cause damage. +- Fixed relay connections being in an incorrect order in circuit boxes. +- Fixed ImpactTolerance, ImpactDamage and ImpactDamageProbability resetting back to defaults when saving and reloading a sub. + +------------------------------------------------------------------------------------------------------------------------------------------------- v1.11.4.1 (Winter Update 2025) -------------------------------------------------------------------------------------------------------------------------------------------------