Build 0.21.1.0

This commit is contained in:
Markus Isberg
2023-01-13 18:10:35 +02:00
parent 2f7205fb4b
commit 697ec52120
155 changed files with 2423 additions and 1237 deletions
@@ -111,6 +111,7 @@ namespace Barotrauma
private float sendConditionUpdateTimer;
private bool conditionUpdatePending;
private float prevCondition;
private float condition;
private bool inWater;
@@ -1581,7 +1582,7 @@ namespace Barotrauma
tags.Add(newTag);
}
public IEnumerable<Identifier> GetTags()
public IReadOnlyCollection<Identifier> GetTags()
{
return tags;
}
@@ -1743,15 +1744,14 @@ namespace Barotrauma
if (Indestructible) { return; }
if (InvulnerableToDamage && value <= condition) { return; }
float prev = condition;
bool wasInFullCondition = IsFullCondition;
condition = MathHelper.Clamp(value, 0.0f, MaxCondition);
if (MathUtils.NearlyEqual(prev, condition, epsilon: 0.000001f)) { return; }
if (MathUtils.NearlyEqual(prevCondition, condition, epsilon: 0.000001f)) { return; }
RecalculateConditionValues();
if (condition == 0.0f && prev > 0.0f)
if (condition == 0.0f && prevCondition > 0.0f)
{
//Flag connections to be updated as device is broken
flagChangedConnections(connections);
@@ -1765,7 +1765,7 @@ namespace Barotrauma
#endif
ApplyStatusEffects(ActionType.OnBroken, 1.0f, null);
}
else if (condition > 0.0f && prev <= 0.0f)
else if (condition > 0.0f && prevCondition <= 0.0f)
{
//Flag connections to be updated as device is now working again
flagChangedConnections(connections);
@@ -1793,8 +1793,9 @@ namespace Barotrauma
}
}
LastConditionChange = condition - prev;
LastConditionChange = condition - prevCondition;
ConditionLastUpdated = Timing.TotalTime;
prevCondition = condition;
static void flagChangedConnections(Dictionary<string, Connection> connections)
{
@@ -2159,8 +2160,9 @@ namespace Barotrauma
var projectile = GetComponent<Projectile>();
if (projectile != null)
{
//ignore character colliders (a projectile only hits limbs)
if (f2.CollisionCategories == Physics.CollisionCharacter && f2.Body.UserData is Character) { return false; }
// Ignore characters so that the impact sound only plays when the item hits a a wall or a door.
// Projectile collisions are handled in Projectile.OnProjectileCollision(), so it should be safe to do this.
if (f2.CollisionCategories == Physics.CollisionCharacter) { return false; }
if (projectile.IgnoredBodies != null && projectile.IgnoredBodies.Contains(f2.Body)) { return false; }
if (projectile.ShouldIgnoreSubmarineCollision(f2, contact)) { return false; }
}
@@ -2711,7 +2713,7 @@ namespace Barotrauma
#if CLIENT
ic.PlaySound(ActionType.OnUse, character);
#endif
ic.ApplyStatusEffects(ActionType.OnUse, deltaTime, character, targetLimb);
ic.ApplyStatusEffects(ActionType.OnUse, deltaTime, character, targetLimb, useTarget: targetLimb?.character, user: character);
if (ic.DeleteOnUse) { remove = true; }
}
@@ -2742,7 +2744,7 @@ namespace Barotrauma
#if CLIENT
ic.PlaySound(ActionType.OnSecondaryUse, character);
#endif
ic.ApplyStatusEffects(ActionType.OnSecondaryUse, deltaTime, character);
ic.ApplyStatusEffects(ActionType.OnSecondaryUse, deltaTime, character: character, user: character);
if (ic.DeleteOnUse) { remove = true; }
}
@@ -2781,8 +2783,8 @@ namespace Barotrauma
#endif
ic.WasUsed = true;
ic.ApplyStatusEffects(conditionalActionType, 1.0f, character, targetLimb, user: user);
ic.ApplyStatusEffects(ActionType.OnUse, 1.0f, character, targetLimb, user: user);
ic.ApplyStatusEffects(conditionalActionType, 1.0f, character, targetLimb, useTarget: targetLimb?.character, user: user);
ic.ApplyStatusEffects(ActionType.OnUse, 1.0f, character, targetLimb, useTarget: targetLimb?.character, user: user);
if (GameMain.NetworkMember is { IsServer: true })
{
@@ -3448,7 +3450,7 @@ namespace Barotrauma
item.condition = MathHelper.Clamp(item.condition, 0, item.MaxCondition);
}
}
item.lastSentCondition = item.condition;
item.lastSentCondition = item.prevCondition = item.condition;
item.RecalculateConditionValues();
item.SetActiveSprite();
@@ -3522,15 +3524,10 @@ namespace Barotrauma
upgrade.Save(element);
}
if (condition < MaxCondition)
{
element.Add(new XAttribute("conditionpercentage", ConditionPercentage.ToString("G", CultureInfo.InvariantCulture)));
}
else
{
var conditionAttribute = element.GetAttribute("condition");
if (conditionAttribute != null) { conditionAttribute.Remove(); }
}
element.Add(new XAttribute("conditionpercentage", ConditionPercentage.ToString("G", CultureInfo.InvariantCulture)));
var conditionAttribute = element.GetAttribute("condition");
if (conditionAttribute != null) { conditionAttribute.Remove(); }
parentElement.Add(element);