Merge remote-tracking branch 'upstream/master' into develop

This commit is contained in:
EvilFactory
2024-06-18 12:19:13 -03:00
263 changed files with 7788 additions and 2849 deletions
@@ -589,9 +589,9 @@ namespace Barotrauma.Items.Components
return SaveLimbPositions(base.Save(parentElement));
}
public override void Load(ContentXElement componentElement, bool usePrefabValues, IdRemap idRemap)
public override void Load(ContentXElement componentElement, bool usePrefabValues, IdRemap idRemap, bool isItemSwap)
{
base.Load(componentElement, usePrefabValues, idRemap);
base.Load(componentElement, usePrefabValues, idRemap, isItemSwap);
if (GameMain.GameSession?.GameMode?.Preset == GameModePreset.TestMode)
{
LoadLimbPositions(componentElement);
@@ -6,7 +6,7 @@ using Barotrauma.Networking;
namespace Barotrauma.Items.Components
{
partial class Engine : Powered, IServerSerializable, IClientSerializable
partial class Engine : Powered, IServerSerializable, IClientSerializable, IDeteriorateUnderStress
{
private float force;
@@ -76,10 +76,7 @@ namespace Barotrauma.Items.Components
set { force = MathHelper.Clamp(value, -100.0f, 100.0f); }
}
public float CurrentVolume
{
get { return Math.Abs((force / 100.0f) * (MinVoltage <= 0.0f ? 1.0f : Math.Min(prevVoltage, 1.0f))); }
}
public float CurrentVolume => CurrentStress;
public float CurrentBrokenVolume
{
@@ -90,6 +87,8 @@ namespace Barotrauma.Items.Components
}
}
public float CurrentStress => Math.Abs((force / 100.0f) * (MinVoltage <= 0.0f ? 1.0f : Math.Min(prevVoltage, 1.0f)));
private const float TinkeringForceIncrease = 1.5f;
public Engine(Item item, ContentXElement element)
@@ -707,9 +707,15 @@ namespace Barotrauma.Items.Components
private static bool AnyOneHasRecipeForItem(Character user, ItemPrefab item)
{
CharacterType mustHaveRecipe = GameMain.GameSession?.GameMode is { IsSinglePlayer: true } ?
//in single player it doesn't matter if it's a bot or a player who has the recipe
//(the bots can turn into a "player" when switching characters, and that could interrupt the fabrication)
CharacterType.Both :
//in MP the recipes other players have don't cound
CharacterType.Bot;
return
(user != null && user.HasRecipeForItem(item.Identifier)) ||
GameSession.GetSessionCrewCharacters(CharacterType.Bot).Any(c => c.HasRecipeForItem(item.Identifier));
GameSession.GetSessionCrewCharacters(mustHaveRecipe).Any(c => c.HasRecipeForItem(item.Identifier));
}
private readonly HashSet<Item> usedIngredients = new HashSet<Item>();
@@ -986,9 +992,9 @@ namespace Barotrauma.Items.Components
return componentElement;
}
public override void Load(ContentXElement componentElement, bool usePrefabValues, IdRemap idRemap)
public override void Load(ContentXElement componentElement, bool usePrefabValues, IdRemap idRemap, bool isItemSwap)
{
base.Load(componentElement, usePrefabValues, idRemap);
base.Load(componentElement, usePrefabValues, idRemap, isItemSwap);
savedFabricatedItem = componentElement.GetAttributeString("fabricateditemidentifier", "");
savedTimeUntilReady = componentElement.GetAttributeFloat("savedtimeuntilready", 0.0f);
savedRequiredTime = componentElement.GetAttributeFloat("savedrequiredtime", 0.0f);
@@ -7,7 +7,7 @@ using System.Linq;
namespace Barotrauma.Items.Components
{
partial class Pump : Powered, IServerSerializable, IClientSerializable
partial class Pump : Powered, IServerSerializable, IClientSerializable, IDeteriorateUnderStress
{
private float flowPercentage;
private float maxFlow;
@@ -85,6 +85,8 @@ namespace Barotrauma.Items.Components
public override bool UpdateWhenInactive => true;
public float CurrentStress => Math.Abs(flowPercentage / 100.0f);
public Pump(Item item, ContentXElement element)
: base(item, element)
{