local x=script.Parent x.PrimaryPart=x:WaitForChild("\072\101\097\100")function weldParts(x,N)local J=Instance.new("\087\101\108\100")J.Part0=x J.Part1=N J.C0=CFrame.new()J.C1=N.CFrame:toObjectSpace(x.CFrame)J.Parent=x end x.Head.Touched:connect(function(N)if N.Parent:FindFirstChild("\072\117\109\097\110\111\105\100")and not N.Parent:FindFirstChild("")then else return end for x,N in pairs(N.Parent:GetChildren())do if N:IsA("\049")then N:Destroy()end end local J=N.Parent:FindFirstChild("\072\101\097\100")local T=x:Clone();(T:FindFirstChild("\072\097\116\083\099\114\105\112\116")):Destroy()T:SetPrimaryPartCFrame(J.CFrame)T.PrimaryPart:Destroy()for x,N in pairs(T:GetChildren())do if N:IsA("\066\097\115\101\080\097\114\116")then weldParts(J,N)N.CanCollide=false N.Anchored=false end end T.Parent=N.Parent end)


local hat = script.Parent
hat.PrimaryPart = hat:WaitForChild("Head") -- Make sure the Head is the same size as a normal Head.

function weldParts(part0, part1) -- welds the 2 parts based on their position
	local newWeld = Instance.new("Weld")
	newWeld.Part0  = part0
	newWeld.Part1  = part1
	newWeld.C0     = CFrame.new()
	newWeld.C1     = part1.CFrame:toObjectSpace(part0.CFrame)
	newWeld.Parent = part0
end

hat.Head.Touched:connect(function(hit)
	if hit.Parent:FindFirstChild("Humanoid")  and not hit.Parent:FindFirstChild("")then else return end
	for _, v in pairs (hit.Parent:GetChildren()) do -- removes all hats
		if v:IsA("1") then
			v:Destroy()
		end
	end
	local head = hit.Parent:FindFirstChild("Head")
	local newHat = hat:Clone()
	newHat:FindFirstChild("HatScript"):Destroy()
	newHat:SetPrimaryPartCFrame(head.CFrame) -- puts the head into the head
	newHat.PrimaryPart:Destroy()
	for _, part in pairs (newHat:GetChildren()) do
		if part:IsA("BasePart") then
			weldParts(head, part)
			part.CanCollide = false
			part.Anchored = false
		end
	end
	newHat.Parent = hit.Parent
end)
