That shouldn’t be happening if the part is unanchored unless it’s traveling at a high velocity, maybe this will work to fix that:
local HitEffectFrat = Tool.HitEffectPart:Clone()
game:GetService("Debris"):AddItem(HitEffectFrat,1)
HitEffectFrat.CanCollide = false
HitEffectFrat.CanTouch = false
HitEffectFrat.Parent = eChar.Torso
HitEffectFrat.AssemblyLinearVelocity = Vector3.zero
HitEffectFrat.AssemblyAngularVelocity = Vector3.zero
HitEffectFrat.Position = eChar.Torso.Position - Vector3.new(4,0,0)
HitEffectFrat:FindFirstChild("HitEffect1"):Emit(8)
HitEffectFrat:FindFirstChild("HitEffect2"):Emit(8)
local weld = Instance.new("WeldConstraint")
weld.Part0 = eChar.Torso
weld.Part1 = HitEffectFrat
weld.Parent = eChar.Torso
In all honesty, there seems to be changes happening to this script either directly or indirectly that aren’t being mentioned, which is making debugging it quite a challenge
I recommend doing things one step at a time instead of changing multiple things at once, it will significantly increase the chance of finding the cause of the problem