Well then that’s the problem. It’s been this way since 2016.
I’ve found @POOPENGUIN solution works which does it by reparenting the character children on death.
However you need an additional basepart check since now in 2022 WrapTarget is added which is named head as well and errors.
server script w/ small update
game.Players.PlayerAdded:Connect(function(Player)
Player.CharacterAdded:Connect(function(Char)
print("Ragdoll added")
Char:WaitForChild("Humanoid").BreakJointsOnDeath = false
Char.Humanoid.Died:Connect(function()
local charModelClone = Instance.new("Model")
charModelClone.Parent = game.Workspace
local charChildren = Char:GetChildren()
Char.HumanoidRootPart.CanCollide = false
for i = 1,#charChildren do
charChildren[i].Parent = charModelClone
end
for _, v in pairs(charModelClone:GetDescendants()) do
if v:IsA("BasePart") then
v:SetNetworkOwner(Player)
if v.Name == "Head" then
v.CanCollide = true
end
end
if v:IsA("Motor6D") then
local Att0, Att1 = Instance.new("Attachment"), Instance.new("Attachment")
Att0.CFrame = v.C0
Att1.CFrame = v.C1
Att0.Parent = v.Part0
Att1.Parent = v.Part1
local BSC = Instance.new("BallSocketConstraint")
BSC.Attachment0 = Att0
BSC.Attachment1 = Att1
BSC.Parent = v.Part0
if v.Part1.Name == "Head" then
BSC.LimitsEnabled = true
BSC.TwistLimitsEnabled = true
end
v.Enabled = false
end
if v.Name == "AccessoryWeld" then
local WC = Instance.new("WeldConstraint")
WC.Part0 = v.Part0
WC.Part1 = v.Part1
WC.Parent = v.Parent
v.Enabled = false
end
end
end)
end)
end)
me when exam
