Unstable 0.1500.7.0 (No edition)
This commit is contained in:
@@ -200,7 +200,8 @@ namespace Barotrauma.Items.Components
|
||||
|
||||
void CreateDeconstructProduct(DeconstructItem deconstructProduct, IEnumerable<Item> inputItems)
|
||||
{
|
||||
float percentageHealth = targetItem.Condition / targetItem.Prefab.Health;
|
||||
float percentageHealth = targetItem.Condition / targetItem.MaxCondition;
|
||||
|
||||
if (percentageHealth <= deconstructProduct.MinCondition || percentageHealth > deconstructProduct.MaxCondition) { return; }
|
||||
|
||||
if (!(MapEntityPrefab.Find(null, deconstructProduct.ItemIdentifier) is ItemPrefab itemPrefab))
|
||||
|
||||
@@ -391,8 +391,7 @@ namespace Barotrauma.Items.Components
|
||||
|
||||
user.Info.IncreaseSkillLevel(
|
||||
skill.Identifier,
|
||||
addedSkill,
|
||||
user.Position + Vector2.UnitY * 150.0f);
|
||||
addedSkill);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+27
-14
@@ -11,9 +11,12 @@ namespace Barotrauma.Items.Components
|
||||
private float generatedAmount;
|
||||
|
||||
//key = vent, float = total volume of the hull the vent is in and the hulls connected to it
|
||||
private Dictionary<Vent, float> ventList;
|
||||
private List<(Vent vent, float hullVolume)> ventList;
|
||||
|
||||
private float totalHullVolume;
|
||||
|
||||
private float ventUpdateTimer;
|
||||
const float VentUpdateInterval = 5.0f;
|
||||
|
||||
public float CurrFlow
|
||||
{
|
||||
@@ -64,7 +67,7 @@ namespace Barotrauma.Items.Components
|
||||
//20% condition = 4%
|
||||
CurrFlow *= conditionMult * conditionMult;
|
||||
|
||||
UpdateVents(CurrFlow);
|
||||
UpdateVents(CurrFlow, deltaTime);
|
||||
}
|
||||
|
||||
public override void UpdateBroken(float deltaTime, Camera cam)
|
||||
@@ -75,7 +78,8 @@ namespace Barotrauma.Items.Components
|
||||
|
||||
private void GetVents()
|
||||
{
|
||||
ventList = new Dictionary<Vent, float>();
|
||||
ventList ??= new List<(Vent vent, float hullVolume)>();
|
||||
ventList.Clear();
|
||||
foreach (MapEntity entity in item.linkedTo)
|
||||
{
|
||||
if (!(entity is Item linkedItem)) { continue; }
|
||||
@@ -83,30 +87,39 @@ namespace Barotrauma.Items.Components
|
||||
Vent vent = linkedItem.GetComponent<Vent>();
|
||||
if (vent?.Item.CurrentHull == null) { continue; }
|
||||
|
||||
ventList.Add(vent, 0.0f);
|
||||
foreach (Hull connectedHull in vent.Item.CurrentHull.GetConnectedHulls(includingThis: true, searchDepth: 10, ignoreClosedGaps: true))
|
||||
{
|
||||
ventList.Add((vent, vent.Item.CurrentHull.Volume));
|
||||
}
|
||||
|
||||
for (int i = 0; i < ventList.Count; i++)
|
||||
{
|
||||
Vent vent = ventList[i].vent;
|
||||
foreach (Hull connectedHull in vent.Item.CurrentHull.GetConnectedHulls(includingThis: false, searchDepth: 5, ignoreClosedGaps: true))
|
||||
{
|
||||
//another vent in the connected hull -> don't add it to this vent's total hull volume
|
||||
if (ventList.Any(v => v.vent != vent && v.vent.Item.CurrentHull == connectedHull)) { continue; }
|
||||
totalHullVolume += connectedHull.Volume;
|
||||
ventList[vent] += connectedHull.Volume;
|
||||
ventList[i] = (ventList[i].vent, ventList[i].hullVolume + connectedHull.Volume);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateVents(float deltaOxygen)
|
||||
|
||||
private void UpdateVents(float deltaOxygen, float deltaTime)
|
||||
{
|
||||
if (ventList == null)
|
||||
if (ventList == null || ventUpdateTimer < 0.0f)
|
||||
{
|
||||
GetVents();
|
||||
ventUpdateTimer = VentUpdateInterval;
|
||||
}
|
||||
ventUpdateTimer -= deltaTime;
|
||||
|
||||
if (!ventList.Any() || totalHullVolume <= 0.0f) { return; }
|
||||
|
||||
foreach (KeyValuePair<Vent, float> v in ventList)
|
||||
foreach ((Vent vent, float hullVolume) in ventList)
|
||||
{
|
||||
if (v.Key?.Item.CurrentHull == null) { continue; }
|
||||
if (vent.Item.CurrentHull == null) { continue; }
|
||||
|
||||
v.Key.OxygenFlow = deltaOxygen * (v.Value / totalHullVolume);
|
||||
v.Key.IsActive = true;
|
||||
vent.OxygenFlow = deltaOxygen * (hullVolume / totalHullVolume);
|
||||
vent.IsActive = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -392,8 +392,7 @@ namespace Barotrauma.Items.Components
|
||||
float userSkill = Math.Max(user.GetSkillLevel("helm"), 1.0f) / 100.0f;
|
||||
user.Info.IncreaseSkillLevel(
|
||||
"helm",
|
||||
SkillSettings.Current.SkillIncreasePerSecondWhenSteering / userSkill * deltaTime,
|
||||
user.Position + Vector2.UnitY * 150.0f);
|
||||
SkillSettings.Current.SkillIncreasePerSecondWhenSteering / userSkill * deltaTime);
|
||||
}
|
||||
|
||||
private void UpdateAutoPilot(float deltaTime)
|
||||
|
||||
Reference in New Issue
Block a user