Hello. I have a faulty ragdoll script that doesn't return any errors, but does not do what it's intended to do. Every time I activate it, it always seems to remove the player's arms and legs instead, and I have no idea on why this is happening. I am using ball socket constraints. This ragdoll script is for R6, and all of the ball socket constraints are enabled at all times btw.

local function returnMotor(joint, part, motors)
	if motors:FindFirstChild(joint) then
		motors[joint].Parent = part
	end
end

script.Ragdoll.Event:Connect(function(bool)
	if tick() - LAST_RAG < 2 then
		return
	end
	LAST_RAG = tick()
	
	local torso = character:WaitForChild("Torso")
	local motors = ReplicatedStorage.Motors:FindFirstChild(player.Name, true)
	
	if bool then
		if knocked then
			return
		end
		
		dis = create("Disable", nil, character)
		
		humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
		humanoid:SetStateEnabled(Enum.HumanoidStateType.GettingUp, false)
		
		humanoid:ChangeState(Enum.HumanoidStateType.Physics)
		root.CanCollide = false
		root.Massless = true
		
		for _, bodyPart in pairs(character:GetChildren()) do
			if bodyPart:IsA("BasePart") then
				for _, motor in pairs(bodyPart:GetChildren()) do
					if motor:IsA("Motor6D") and motor.Name ~= "Neck" then
						motor.Parent = motors
					end
				end
			end
		end
		
		humanoid.PlatformStand = true
		
		root.OOF:Play()
		root.OOF.TimePosition = .5
			
		humanoid.AutoRotate = false
		humanoid:UnequipTools()
		
		con2 = character.ChildAdded:Connect(function(child)
			if child:IsA("Tool") then
				humanoid:UnequipTools()
			end
		end)
		
		knocked = true
	elseif not bool then
		if not knocked then
			return
		end
		
		if con2 then
			con2:Disconnect()
		end
		
		if dis then
			dis:Destroy()
		end
		
		humanoid.PlatformStand = false
		humanoid.Jump = true
		humanoid.AutoRotate = true
		humanoid:ChangeState(Enum.HumanoidStateType.GettingUp)
		
		root.CanCollide = true
		root.Massless = false
		
		local rightArm = character["Right Arm"]
		local leftArm = character["Left Arm"]
		local rightLeg = character["Right Leg"]
		local leftLeg = character["Left Leg"]
		
		returnMotor("RootJoint", root, motors)
		returnMotor("Left Shoulder", leftArm, motors)
		returnMotor("Right Shoulder", rightArm, motors)
		returnMotor("Left Hip", leftLeg, motors)
		returnMotor("Right Hip", rightLeg, motors)
		
		knocked = false
	end
end)