From 29ad3d25555fc74767c698fa0cfe5a013fb44f55 Mon Sep 17 00:00:00 2001 From: Regalis Date: Wed, 26 Oct 2016 20:20:42 +0300 Subject: [PATCH] Removed limb impact tolerances from creature configs & added ragdoll-specific impact tolerance --- .../Content/Characters/Charybdis/charybdis.xml | 2 +- .../Content/Characters/Coelanth/coelanth.xml | 4 ++-- Subsurface/Content/Characters/Crawler/crawler.xml | 10 +++++----- Subsurface/Content/Characters/Endworm/endworm.xml | 4 ++-- .../Fractalguardian/fractalguardian.xml | 12 ++++++------ .../Fractalguardian2/fractalguardian2.xml | 10 +++++----- Subsurface/Content/Characters/Human/human.xml | 9 +++++---- Subsurface/Content/Characters/Human/humanhusk.xml | 8 ++++---- .../Content/Characters/Human/huskappendage.xml | 2 +- Subsurface/Content/Characters/Husk/husk.xml | 8 ++++---- Subsurface/Content/Characters/Moloch/moloch.xml | 2 +- .../Characters/TigerThresher/tigerthresher.xml | 4 ++-- .../Characters/AI/IndoorsSteeringManager.cs | 2 +- .../Source/Characters/Animation/AnimController.cs | 12 +----------- Subsurface/Source/Characters/Animation/Ragdoll.cs | 15 +++++++++++---- Subsurface/Source/Characters/Limb.cs | 4 +--- 16 files changed, 52 insertions(+), 56 deletions(-) diff --git a/Subsurface/Content/Characters/Charybdis/charybdis.xml b/Subsurface/Content/Characters/Charybdis/charybdis.xml index fa5caf861..86ef15d62 100644 --- a/Subsurface/Content/Characters/Charybdis/charybdis.xml +++ b/Subsurface/Content/Characters/Charybdis/charybdis.xml @@ -13,7 +13,7 @@ - + diff --git a/Subsurface/Content/Characters/Coelanth/coelanth.xml b/Subsurface/Content/Characters/Coelanth/coelanth.xml index d32181c38..ce223ad49 100644 --- a/Subsurface/Content/Characters/Coelanth/coelanth.xml +++ b/Subsurface/Content/Characters/Coelanth/coelanth.xml @@ -10,12 +10,12 @@ - + - + diff --git a/Subsurface/Content/Characters/Crawler/crawler.xml b/Subsurface/Content/Characters/Crawler/crawler.xml index d2a2dbab5..de3270ce2 100644 --- a/Subsurface/Content/Characters/Crawler/crawler.xml +++ b/Subsurface/Content/Characters/Crawler/crawler.xml @@ -16,7 +16,7 @@ - + @@ -30,7 +30,7 @@ - + @@ -38,7 +38,7 @@ - + @@ -46,7 +46,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/Subsurface/Content/Characters/Endworm/endworm.xml b/Subsurface/Content/Characters/Endworm/endworm.xml index 8090dd20d..1ed66da24 100644 --- a/Subsurface/Content/Characters/Endworm/endworm.xml +++ b/Subsurface/Content/Characters/Endworm/endworm.xml @@ -44,12 +44,12 @@ - + - + diff --git a/Subsurface/Content/Characters/Fractalguardian/fractalguardian.xml b/Subsurface/Content/Characters/Fractalguardian/fractalguardian.xml index ee99fe1d0..86c561a70 100644 --- a/Subsurface/Content/Characters/Fractalguardian/fractalguardian.xml +++ b/Subsurface/Content/Characters/Fractalguardian/fractalguardian.xml @@ -8,31 +8,31 @@ - + - + - + - + - + - + diff --git a/Subsurface/Content/Characters/Fractalguardian2/fractalguardian2.xml b/Subsurface/Content/Characters/Fractalguardian2/fractalguardian2.xml index c772e9b69..e1d743557 100644 --- a/Subsurface/Content/Characters/Fractalguardian2/fractalguardian2.xml +++ b/Subsurface/Content/Characters/Fractalguardian2/fractalguardian2.xml @@ -9,25 +9,25 @@ - + - + - + - + - + diff --git a/Subsurface/Content/Characters/Human/human.xml b/Subsurface/Content/Characters/Human/human.xml index 3731b78be..6b70f9857 100644 --- a/Subsurface/Content/Characters/Human/human.xml +++ b/Subsurface/Content/Characters/Human/human.xml @@ -10,21 +10,22 @@ legtorque="15.0" thightorque="-5.0" walkspeed="1.5" - swimspeed="2.0"> + swimspeed="2.0" + impacttolerance="7.5"> - + - + - + diff --git a/Subsurface/Content/Characters/Human/humanhusk.xml b/Subsurface/Content/Characters/Human/humanhusk.xml index 6e8779705..fc593f3ad 100644 --- a/Subsurface/Content/Characters/Human/humanhusk.xml +++ b/Subsurface/Content/Characters/Human/humanhusk.xml @@ -13,16 +13,16 @@ swimspeed="2.0"> - + - + - + @@ -78,7 +78,7 @@ - + diff --git a/Subsurface/Content/Characters/Human/huskappendage.xml b/Subsurface/Content/Characters/Human/huskappendage.xml index 4a8a23841..f388a1ba8 100644 --- a/Subsurface/Content/Characters/Human/huskappendage.xml +++ b/Subsurface/Content/Characters/Human/huskappendage.xml @@ -1,7 +1,7 @@  - + diff --git a/Subsurface/Content/Characters/Husk/husk.xml b/Subsurface/Content/Characters/Husk/husk.xml index d7ba207a7..177bd1407 100644 --- a/Subsurface/Content/Characters/Husk/husk.xml +++ b/Subsurface/Content/Characters/Husk/husk.xml @@ -17,13 +17,13 @@ - + - + @@ -32,10 +32,10 @@ - + - + diff --git a/Subsurface/Content/Characters/Moloch/moloch.xml b/Subsurface/Content/Characters/Moloch/moloch.xml index 9a9b66030..12c85dc13 100644 --- a/Subsurface/Content/Characters/Moloch/moloch.xml +++ b/Subsurface/Content/Characters/Moloch/moloch.xml @@ -11,7 +11,7 @@ - + diff --git a/Subsurface/Content/Characters/TigerThresher/tigerthresher.xml b/Subsurface/Content/Characters/TigerThresher/tigerthresher.xml index 0284b6405..30083658c 100644 --- a/Subsurface/Content/Characters/TigerThresher/tigerthresher.xml +++ b/Subsurface/Content/Characters/TigerThresher/tigerthresher.xml @@ -10,13 +10,13 @@ - + - + diff --git a/Subsurface/Source/Characters/AI/IndoorsSteeringManager.cs b/Subsurface/Source/Characters/AI/IndoorsSteeringManager.cs index a377b7ca9..3d3320bcc 100644 --- a/Subsurface/Source/Characters/AI/IndoorsSteeringManager.cs +++ b/Subsurface/Source/Characters/AI/IndoorsSteeringManager.cs @@ -97,7 +97,7 @@ namespace Barotrauma diff.Y = 0.0f; } - if (diff == Vector2.Zero) return -host.Steering; + if (diff.Length() < 0.01) return -host.Steering; return Vector2.Normalize(diff) * speed; } diff --git a/Subsurface/Source/Characters/Animation/AnimController.cs b/Subsurface/Source/Characters/Animation/AnimController.cs index 5b9ebc1cc..f49af7369 100644 --- a/Subsurface/Source/Characters/Animation/AnimController.cs +++ b/Subsurface/Source/Characters/Animation/AnimController.cs @@ -13,10 +13,7 @@ namespace Barotrauma protected Character character; protected float walkSpeed, swimSpeed; - - //how large impacts the Character can take before being stunned - //protected float impactTolerance; - + protected float stunTimer; protected float walkPos; @@ -47,14 +44,7 @@ namespace Barotrauma walkSpeed = ToolBox.GetAttributeFloat(element, "walkspeed", 1.0f); swimSpeed = ToolBox.GetAttributeFloat(element, "swimspeed", 1.0f); - //stepOffset = ToolBox.GetAttributeVector2(element, "stepoffset", Vector2.One); - //stepOffset = ConvertUnits.ToSimUnits(stepOffset); - - //impactTolerance = ToolBox.GetAttributeFloat(element, "impacttolerance", 10.0f); - legTorque = ToolBox.GetAttributeFloat(element, "legtorque", 0.0f); - - } public virtual void UpdateAnim(float deltaTime) { } diff --git a/Subsurface/Source/Characters/Animation/Ragdoll.cs b/Subsurface/Source/Characters/Animation/Ragdoll.cs index 939d8a15d..6b3cdf192 100644 --- a/Subsurface/Source/Characters/Animation/Ragdoll.cs +++ b/Subsurface/Source/Characters/Animation/Ragdoll.cs @@ -224,6 +224,12 @@ namespace Barotrauma } } + public float ImpactTolerance + { + get; + private set; + } + public float StrongestImpact { get { return strongestImpact; } @@ -257,6 +263,8 @@ namespace Barotrauma torsoPosition = ConvertUnits.ToSimUnits(torsoPosition); torsoAngle = MathHelper.ToRadians(ToolBox.GetAttributeFloat(element, "torsoangle", 0.0f)); + ImpactTolerance = ToolBox.GetAttributeFloat(element, "impacttolerance", 50.0f); + CanEnterSubmarine = ToolBox.GetAttributeBool(element, "canentersubmarine", true); foreach (XElement subElement in element.Elements()) @@ -471,11 +479,11 @@ namespace Barotrauma { if (!character.IsRemotePlayer || GameMain.Server != null) { - if (impact > 8.0f) + if (impact > ImpactTolerance) { - character.AddDamage(CauseOfDeath.Damage, impact - 8.0f, null); + character.AddDamage(CauseOfDeath.Damage, impact - ImpactTolerance, null); SoundPlayer.PlayDamageSound(DamageSoundType.LimbBlunt, strongestImpact, collider); - strongestImpact = Math.Max(strongestImpact, impact - 8.0f); + strongestImpact = Math.Max(strongestImpact, impact - ImpactTolerance); } } @@ -852,7 +860,6 @@ namespace Barotrauma //limb.body.ApplyLinearImpulse(impulse); int n = (int)((limb.Position.X - limbHull.Rect.X) / Hull.WaveWidth); limbHull.WaveVel[n] = Math.Min(impulse.Y * 1.0f, 5.0f); - StrongestImpact = ((impulse.Length() * 0.5f) - limb.impactTolerance); } } } diff --git a/Subsurface/Source/Characters/Limb.cs b/Subsurface/Source/Characters/Limb.cs index 05e254bb6..4532a846a 100644 --- a/Subsurface/Source/Characters/Limb.cs +++ b/Subsurface/Source/Characters/Limb.cs @@ -212,9 +212,7 @@ namespace Barotrauma body.CollisionCategories = Physics.CollisionCharacter; body.CollidesWith = Physics.CollisionAll & ~Physics.CollisionCharacter & ~Physics.CollisionItem; } - - impactTolerance = ToolBox.GetAttributeFloat(element, "impacttolerance", 10.0f); - + body.UserData = this; refJointIndex = -1;