Characters can't hold things in severed hands, limb bodies are re-enabled when reviving a character. Closes #529

This commit is contained in:
Joonas Rikkonen
2018-08-15 11:46:43 +03:00
parent 4866a89253
commit fe8a22a4f8
3 changed files with 12 additions and 6 deletions
@@ -1220,25 +1220,29 @@ namespace Barotrauma
if (itemPos == Vector2.Zero || Anim == Animation.Climbing || usingController) 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 (character.SelectedItems[0] == item)
{ {
if (rightHand.IsSevered) return;
transformedHoldPos = rightHand.pullJoint.WorldAnchorA - transformedHandlePos[0]; transformedHoldPos = rightHand.pullJoint.WorldAnchorA - transformedHandlePos[0];
itemAngle = (rightHand.Rotation + (holdAngle - MathHelper.PiOver2) * Dir); 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 else
{ {
if (character.SelectedItems[0] == item) if (character.SelectedItems[0] == item)
{ {
if (rightHand.IsSevered) return;
rightHand.Disabled = true; rightHand.Disabled = true;
} }
if (character.SelectedItems[1] == item) if (character.SelectedItems[1] == item)
{ {
if (leftHand.IsSevered) return;
leftHand.Disabled = true; leftHand.Disabled = true;
} }
@@ -2022,6 +2022,7 @@ namespace Barotrauma
foreach (Limb limb in AnimController.Limbs) foreach (Limb limb in AnimController.Limbs)
{ {
limb.body.Enabled = true;
limb.IsSevered = false; limb.IsSevered = false;
} }
@@ -85,9 +85,10 @@ namespace Barotrauma
set set
{ {
isSevered = value; isSevered = value;
if (!isSevered) severedFadeOutTimer = 0.0f;
#if CLIENT #if CLIENT
if (isSevered) damage = 100.0f; if (isSevered) damage = 100.0f;
#endif #endif
} }
} }