diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Controller.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Controller.cs index 10109f431..0118c74ba 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Controller.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Controller.cs @@ -142,15 +142,16 @@ namespace Barotrauma.Items.Components foreach (LimbPos lb in limbPositions) { Limb limb = character.AnimController.GetLimb(lb.limbType); - if (limb == null) continue; + if (limb == null || !limb.body.Enabled) continue; limb.Disabled = true; - Vector2 position = ConvertUnits.ToSimUnits(lb.position + new Vector2(item.Rect.X, item.Rect.Y)); + Vector2 worldPosition = lb.position + new Vector2(item.WorldRect.X, item.WorldRect.Y); + Vector2 diff = worldPosition - limb.WorldPosition; + limb.PullJointEnabled = true; - limb.PullJointWorldAnchorB = position; - } - + limb.PullJointWorldAnchorB = limb.SimPosition + ConvertUnits.ToSimUnits(diff); + } } public override bool Use(float deltaTime, Character activator = null)