(db4f4a55b) HasRequiredItems method is used for different purposes. Thus we shouldn't return true if the door is damaged but not broken, because it would cause issues for example in steering. Similarly I don't think we should use the canBePicked here, because it could be possible that the door should be interactable but not pickable.

This commit is contained in:
Joonas Rikkonen
2019-05-06 11:22:20 +03:00
parent e4adc47dad
commit b797d112b7
13 changed files with 133 additions and 261 deletions
@@ -674,6 +674,8 @@ namespace Barotrauma
velocity -= ((Submarine)f2.Body.UserData).Velocity;
}
if (character.Submarine == null && f2.Body.UserData is Submarine) velocity -= ((Submarine)f2.Body.UserData).Velocity;
float impact = Vector2.Dot(velocity, -normal);
if (f1.Body == Collider.FarseerBody || !Collider.Enabled)
{
@@ -692,11 +694,6 @@ namespace Barotrauma
character.AddDamage(impactPos, new List<Affliction>() { AfflictionPrefab.InternalDamage.Instantiate((impact - ImpactTolerance) * 10.0f) }, 0.0f, true);
strongestImpact = Math.Max(strongestImpact, impact - ImpactTolerance);
character.ApplyStatusEffects(ActionType.OnImpact, 1.0f);
//briefly disable impact damage
//otherwise the character will take damage multiple times when for example falling,
//because we use the velocity of the collider to determine the impact
//(i.e. the character would take damage until the collider hits the floor and stops)
character.DisableImpactDamageTimer = 0.25f;
}
}
}