Fixed password box not working, connecting powered items with multiple parallel wires works, velocity/depth indicators on nav, stuff

This commit is contained in:
Regalis
2016-02-18 21:09:10 +02:00
parent 4ad8105cd6
commit cd4e3a3d2a
20 changed files with 182 additions and 82 deletions

View File

@@ -79,28 +79,8 @@ namespace Barotrauma
if (force == 0.0f && attack.Stun == 0.0f && attack.GetDamage(1.0f) == 0.0f) return;
foreach (Character c in Character.CharacterList)
{
ApplyExplosionForces(worldPosition, attack.Range, force, attack.GetDamage(1.0f), attack.Stun);
foreach (Limb limb in c.AnimController.Limbs)
{
float dist = Vector2.Distance(limb.WorldPosition, worldPosition);
if (dist > attack.Range) continue;
float distFactor = 1.0f - dist / attack.Range;
if (limb.WorldPosition == worldPosition) continue;
c.AddDamage(limb.SimPosition, DamageType.None,
attack.GetDamage(1.0f) / c.AnimController.Limbs.Length * distFactor, 0.0f, attack.Stun * distFactor, false);
if (force > 0.0f)
{
limb.body.ApplyLinearImpulse(Vector2.Normalize(limb.WorldPosition - worldPosition) * distFactor * force);
}
}
}
}
private IEnumerable<object> DimLight()
@@ -123,6 +103,32 @@ namespace Barotrauma
yield return CoroutineStatus.Success;
}
public static void ApplyExplosionForces(Vector2 worldPosition, float range, float force, float damage = 0.0f, float stun = 0.0f)
{
if (range <= 0.0f) return;
foreach (Character c in Character.CharacterList)
{
foreach (Limb limb in c.AnimController.Limbs)
{
float dist = Vector2.Distance(limb.WorldPosition, worldPosition);
if (dist > range) continue;
float distFactor = 1.0f - dist / range;
if (limb.WorldPosition == worldPosition) continue;
c.AddDamage(limb.SimPosition, DamageType.None,
damage / c.AnimController.Limbs.Length * distFactor, 0.0f, stun * distFactor, false);
if (force > 0.0f)
{
limb.body.ApplyLinearImpulse(Vector2.Normalize(limb.WorldPosition - worldPosition) * distFactor * force);
}
}
}
}
public static void RangedStructureDamage(Vector2 worldPosition, float worldRange, float damage)
{
List<Structure> structureList = new List<Structure>();

View File

@@ -208,7 +208,11 @@ namespace Barotrauma
{
flowForce = Vector2.Zero;
if (open == 0.0f) return;
if (open == 0.0f)
{
lerpedFlowForce = Vector2.Zero;
return;
}
UpdateOxygen();

View File

@@ -518,7 +518,11 @@ namespace Barotrauma
bool hasHole = SectionHasHole(sectionIndex);
if (hadHole != hasHole) UpdateSections();
if (hadHole != hasHole)
{
if (hasHole) Explosion.ApplyExplosionForces(sections[sectionIndex].gap.WorldPosition, 500.0f, 5.0f, 0.0f, 0.0f);
UpdateSections();
}
}