diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Animation/Ragdoll.cs b/Barotrauma/BarotraumaShared/Source/Characters/Animation/Ragdoll.cs
index 46ff1d502..52d84e829 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/Animation/Ragdoll.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/Animation/Ragdoll.cs
@@ -17,6 +17,12 @@ namespace Barotrauma
{
public abstract RagdollParams RagdollParams { get; protected set; }
+ const float ImpactDamageMultiplayer = 10.0f;
+ ///
+ /// Maximum damage per impact (0.1 = 10% of the character's maximum health)
+ ///
+ const float MaxImpactDamage = 0.1f;
+
private static List list = new List();
protected Hull currentHull;
@@ -688,8 +694,10 @@ namespace Barotrauma
Vector2 impactPos = ConvertUnits.ToDisplayUnits(points[0]);
if (character.Submarine != null) impactPos += character.Submarine.Position;
+ float impactDamage = Math.Min((impact - ImpactTolerance) * ImpactDamageMultiplayer, character.MaxVitality * MaxImpactDamage);
+
character.LastDamageSource = null;
- character.AddDamage(impactPos, new List() { AfflictionPrefab.InternalDamage.Instantiate((impact - ImpactTolerance) * 10.0f) }, 0.0f, true);
+ character.AddDamage(impactPos, new List() { AfflictionPrefab.InternalDamage.Instantiate(impactDamage) }, 0.0f, true);
strongestImpact = Math.Max(strongestImpact, impact - ImpactTolerance);
character.ApplyStatusEffects(ActionType.OnImpact, 1.0f);
//briefly disable impact damage