From fe8a22a4f89f6916853b75c375b2be8baab5a081 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Wed, 15 Aug 2018 11:46:43 +0300 Subject: [PATCH] Characters can't hold things in severed hands, limb bodies are re-enabled when reviving a character. Closes #529 --- .../Characters/Animation/HumanoidAnimController.cs | 14 +++++++++----- .../Source/Characters/Character.cs | 1 + .../BarotraumaShared/Source/Characters/Limb.cs | 3 ++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Animation/HumanoidAnimController.cs b/Barotrauma/BarotraumaShared/Source/Characters/Animation/HumanoidAnimController.cs index 5d2842fbb..04875d727 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Animation/HumanoidAnimController.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Animation/HumanoidAnimController.cs @@ -1220,25 +1220,29 @@ namespace Barotrauma if (itemPos == Vector2.Zero || Anim == Animation.Climbing || usingController) { - if (character.SelectedItems[1] == item) - { - transformedHoldPos = leftHand.pullJoint.WorldAnchorA - transformedHandlePos[1]; - itemAngle = (leftHand.Rotation + (holdAngle - MathHelper.PiOver2) * Dir); - } if (character.SelectedItems[0] == item) { + if (rightHand.IsSevered) return; transformedHoldPos = rightHand.pullJoint.WorldAnchorA - transformedHandlePos[0]; itemAngle = (rightHand.Rotation + (holdAngle - MathHelper.PiOver2) * Dir); } + if (character.SelectedItems[1] == item) + { + if (leftHand.IsSevered) return; + transformedHoldPos = leftHand.pullJoint.WorldAnchorA - transformedHandlePos[1]; + itemAngle = (leftHand.Rotation + (holdAngle - MathHelper.PiOver2) * Dir); + } } else { if (character.SelectedItems[0] == item) { + if (rightHand.IsSevered) return; rightHand.Disabled = true; } if (character.SelectedItems[1] == item) { + if (leftHand.IsSevered) return; leftHand.Disabled = true; } diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs index 2448c2439..b2ac6999c 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs @@ -2022,6 +2022,7 @@ namespace Barotrauma foreach (Limb limb in AnimController.Limbs) { + limb.body.Enabled = true; limb.IsSevered = false; } diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Limb.cs b/Barotrauma/BarotraumaShared/Source/Characters/Limb.cs index 4507569c1..9893615e0 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Limb.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Limb.cs @@ -85,9 +85,10 @@ namespace Barotrauma set { isSevered = value; + if (!isSevered) severedFadeOutTimer = 0.0f; #if CLIENT if (isSevered) damage = 100.0f; -#endif +#endif } }