When I equip it a few times, it decides to rotate my character. Anyone know why this won't work?

Heres the glitch: Video

local tool = script.Parent

function Weld(par)
	for _,v in pairs(par:GetChildren()) do
		Weld(v)
		if v:IsA("BasePart") and v.Name ~= "Handle" then
			local weld = Instance.new("Weld", tool)
			weld.Part0 = tool.Handle
			weld.Part1 = v
			weld.C0 = tool.Handle.CFrame:inverse() * tool.Handle.CFrame
			weld.C1 = v.CFrame:inverse() * tool.Handle.CFrame
			v.Anchored = false
		end
	end
end

function Unweld(par)
	for _,v in pairs(par:GetChildren()) do
		if v:IsA("BasePart") then
			v.Anchored = true
		end
		
		if v:IsA("Weld") then
			v:Destroy()
		end
	end
end

function equipped(mouse)
	Weld(tool)
	script.Parent.Handle.Anchored = false
end

function unequipped(mouse)
	Unweld(tool)
end

script.Parent.Equipped:connect(function(mouse)
	Spawn(function() equipped(mouse) end)
end)

script.Parent.Unequipped:connect(function(mouse)
	Spawn(function() unequipped(mouse) end)
end)