Keeping body after death, body resurrects when destroying a joint

I’ve made a weapon that dismembers body parts by destroy their joints (Motor6D and BallSocketConstraint only). I’m using the R15 body type and the players ragdoll on death or when their health is bellow 40%.

I don’t want people to know whether someone is dead or still alive when ragdolled. I’m able to acheive that but, when a body is dismembered (before and after death), the limbs are re-attached to their body: the BallSocketConstraint for the ragdoll and the disabled Motor6D (disabled to allow unragdolling) re-appear when they were supposed to be destroyed by the weapon. You can destroy the joints again, but, at some point, the body resurrects.

I’ve tried fixing this problem by setting the humanoid’s health to 100 and then killing it again with humanoid:TakeDamage(100). It works, but not when a body is dismembered.

The dismemberment system:

if dismembermentPower > 0 then  -- [DISMEMBERMENT]
			if model.Humanoid.Health <= maxHealthForDismember then
				if dismembermentPower >= 2 then
					-- handle handling
					if hitPart.Name == "HeadHitBox" and model:FindFirstChild("Head") and model.Head:FindFirstChild("Neck") then
						model.Head.Neck:Destroy()
					end
					-- handle handling end
				end
				for _,joint in pairs(hitPart:GetChildren()) do
					if joint:IsA("BallSocketConstraint") or joint:IsA("Motor6D") then
						if dismembermentPower >= 2 and hitPart.Name ~= "UpperTorso" and hitPart.Name ~= "LowerTorso" and hitPart.Name ~= "LeftUpperLeg" and hitPart.Name ~= "RightUpperLeg" and hitPart.Name ~= "LeftUpperArm" and hitPart.Name ~= "RightUpperArm" then
							joint:Destroy()
						end
						if dismembermentPower >= 1 and (hitPart.Name == "RightHand" or hitPart.Name == "LeftHand" or hitPart.Name == "RightFoot" or hitPart.Name == "LeftFoot") then
							joint:Destroy()
						end
						if dismembermentPower >= 3 then
							if joint.Name ~= "Root" then
								joint:Destroy()
							else
								if model.UpperTorso:FindFirstChild("Waist") then
									model.UpperTorso.Waist:Destroy()
								end
								if model.UpperTorso:FindFirstChild("Waist2") then
									model.UpperTorso.Waist2:Destroy()
								end
							end
						end
					end
				end
			end
		end -- [Dismemberment end]

The body-keeping script:

local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function(character)
		character.Archivable = true

		local Humanoid = character:WaitForChild("Humanoid")
		Humanoid.BreakJointsOnDeath = false
	end)

	player.CharacterRemoving:Connect(function(character)
		if character.Humanoid.Health == 0 then
			
			local corpse = character:Clone()
			corpse.Parent = workspace.DismemberedParts
			
			for _,child in pairs(corpse:GetDescendants()) do
				if child:IsA("Script") or child:IsA("LocalScript") or child:IsA("Folder") then
					child:Destroy()
				end
			end
			
			corpse.Humanoid.Health = 100
			corpse.Name = character.Name .. "Corpse"
			
			wait(.1)
			corpse.Humanoid:TakeDamage(100)
		end
	end)
end)