diff --git a/Content.Shared/Movement/Systems/SharedMoverController.Tailed.cs b/Content.Shared/Movement/Systems/SharedMoverController.Tailed.cs index e833e315628..ce4037060b2 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.Tailed.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.Tailed.cs @@ -2,6 +2,7 @@ // Authors: Lokilife using System.Numerics; using Content.Shared.Exodus.Tailed; +using Robust.Shared.Map; using Robust.Shared.Physics.Components; namespace Content.Shared.Movement.Systems; @@ -60,6 +61,10 @@ private void ApplySegmentVelocities( if (!TryComp(segment, out var physics)) continue; + var xform = Transform(segment); + if (!xform.ParentUid.IsValid()) + continue; + var currentPos = _transform.GetWorldPosition(segment); Vector2 desiredVelocity; @@ -129,6 +134,9 @@ private void UpdateSegmentRotation( { var segment = tail.TailSegments[i]; var segmentPos = _transform.GetWorldPosition(segment); + var segmentXform = Transform(segment); + if (!segmentXform.ParentUid.IsValid()) + continue; var direction = prevPos - segmentPos; diff --git a/Content.Shared/_Exodus/Tailed/TailedEntitySystem.cs b/Content.Shared/_Exodus/Tailed/TailedEntitySystem.cs index da8e67a0936..dbe7b49fc1f 100644 --- a/Content.Shared/_Exodus/Tailed/TailedEntitySystem.cs +++ b/Content.Shared/_Exodus/Tailed/TailedEntitySystem.cs @@ -49,6 +49,17 @@ private void OnComponentStartup(EntityUid uid, TailedEntityComponent component, private void OnComponentShutdown(EntityUid uid, TailedEntityComponent component, ComponentShutdown args) { + // CRITICAL: Remove joints before deleting entities + // This prevents physics from trying to update positions of entities being deleted + var prev = uid; + foreach (var segment in component.TailSegments) + { + // Remove the joint between prev and this segment + _joint.RemoveJoint(prev, $"TailJoint_{prev}_{segment}"); + prev = segment; + } + + // Now safe to queue deletion foreach (var segment in component.TailSegments) QueueDel(segment); @@ -59,8 +70,8 @@ private void InitializeTailSegments(Entity