diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs index 9f78e2aff..a9d4da231 100644 --- a/Subsurface/Source/Characters/Character.cs +++ b/Subsurface/Source/Characters/Character.cs @@ -2028,9 +2028,15 @@ namespace Barotrauma AnimController.Teleport(pos - SimPosition, Vector2.Zero); } + if ((pos-SimPosition).Length()>600.0f) + { + AnimController.Teleport(pos - SimPosition, -AnimController.RefLimb.LinearVelocity); + } + if (inSub) { //AnimController.FindHull(ConvertUnits.ToDisplayUnits(pos) - Submarine.Loaded.WorldPosition); + Submarine prevSub = Submarine; Hull newHull = Hull.FindHull(ConvertUnits.ToDisplayUnits(pos), AnimController.CurrentHull, false); if (newHull != null) @@ -2038,6 +2044,11 @@ namespace Barotrauma AnimController.CurrentHull = newHull; Submarine = newHull.Submarine; } + + if (prevSub != null && Submarine != null && prevSub!=Submarine) + { + AnimController.Teleport(pos - SimPosition, Vector2.Zero); + } } else {