Characters don't attempt to grab grab severed limbs when dragging dead bodies
This commit is contained in:
@@ -52,7 +52,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public virtual void HoldItem(float deltaTime, Item item, Vector2[] handlePos, Vector2 holdPos, Vector2 aimPos, bool aim, float holdAngle) { }
|
public virtual void HoldItem(float deltaTime, Item item, Vector2[] handlePos, Vector2 holdPos, Vector2 aimPos, bool aim, float holdAngle) { }
|
||||||
|
|
||||||
public virtual void DragCharacter(Character target, LimbType rightHandTarget = LimbType.RightHand, LimbType leftHandTarget = LimbType.LeftHand) { }
|
public virtual void DragCharacter(Character target) { }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -882,23 +882,48 @@ namespace Barotrauma
|
|||||||
head.pullJoint.WorldAnchorB = new Vector2(targetHead.SimPosition.X, targetHead.SimPosition.Y + 0.6f + yPos);
|
head.pullJoint.WorldAnchorB = new Vector2(targetHead.SimPosition.X, targetHead.SimPosition.Y + 0.6f + yPos);
|
||||||
head.pullJoint.Enabled = true;
|
head.pullJoint.Enabled = true;
|
||||||
}
|
}
|
||||||
public override void DragCharacter(Character target, LimbType rightHandTarget = LimbType.RightHand, LimbType leftHandTarget = LimbType.LeftHand)
|
public override void DragCharacter(Character target)
|
||||||
{
|
{
|
||||||
if (target == null) return;
|
if (target == null) return;
|
||||||
|
|
||||||
Limb leftHand = GetLimb(LimbType.LeftHand);
|
Limb leftHand = GetLimb(LimbType.LeftHand);
|
||||||
Limb rightHand = GetLimb(LimbType.RightHand);
|
Limb rightHand = GetLimb(LimbType.RightHand);
|
||||||
|
|
||||||
|
Limb targetLeftHand = target.AnimController.GetLimb(LimbType.LeftHand);
|
||||||
|
Limb targetRightHand = target.AnimController.GetLimb(LimbType.RightHand);
|
||||||
|
|
||||||
//only grab with one hand when swimming
|
//only grab with one hand when swimming
|
||||||
leftHand.Disabled = true;
|
leftHand.Disabled = true;
|
||||||
if (!inWater) rightHand.Disabled = true;
|
if (!inWater) rightHand.Disabled = true;
|
||||||
|
|
||||||
for (int i = 0; i < 2; i++)
|
for (int i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
LimbType type = i == 0 ? leftHandTarget : rightHandTarget;
|
Limb targetLimb = target.AnimController.GetLimb(LimbType.Torso);
|
||||||
Limb targetLimb = target.AnimController.GetLimb(type);
|
|
||||||
|
|
||||||
Limb pullLimb = GetLimb(i == 0 ? LimbType.LeftHand : LimbType.RightHand);
|
if (i == 0)
|
||||||
|
{
|
||||||
|
if (!targetLeftHand.IsSevered)
|
||||||
|
{
|
||||||
|
targetLimb = targetLeftHand;
|
||||||
|
}
|
||||||
|
else if (!targetRightHand.IsSevered)
|
||||||
|
{
|
||||||
|
targetLimb = targetRightHand;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!targetRightHand.IsSevered)
|
||||||
|
{
|
||||||
|
targetLimb = targetRightHand;
|
||||||
|
}
|
||||||
|
else if (!targetLeftHand.IsSevered)
|
||||||
|
{
|
||||||
|
targetLimb = targetLeftHand;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Limb pullLimb = i == 0 ? leftHand : rightHand;
|
||||||
|
|
||||||
if (i == 1 && inWater)
|
if (i == 1 && inWater)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user