Explosions Exhibit Odd Behaviors with Welds and Motor6Ds

Hello!

Over the past few weeks (or months), I’ve been running into some really strange issues with welds (and their siblings). Whenever an explosion interacts with any unanchored and welded parts, the welds simply vanish.

This is what the rig looks like. This is correct.

Here are the instances inside the rig. Everything looks normal here too.

However, when an explosion goes off, everything breaks apart. From my testing, it seems like the DestroyJointRadiusPercent property controls whether the joints will break. Normally this wouldn’t be an issue, but in this case, the rig has a ForceField instance inside of it.

I have multiple scripts that create explosions (and it would be a pain to replace them all), so I tried writing a simple global fix:

local hb = game:GetService('RunService').Heartbeat
local pcall = pcall

workspace.DescendantAdded:Connect(function(c)
    if c.ClassName == 'Explosion' then
        for i = 1, 1000 do
            pcall(function()
                c.DestroyJointRadiusPercent = 0
                hb:Wait()
            end)
        end
    end
end)

Despite this, the explosions still destroy joints and welds, even when a ForceField is present.

Does anyone know what I might be doing wrong, or what I could do to properly prevent explosions from breaking welds?

you should set the explosion properties before you add it to workspace.

DescendantAdded isn’t the right choice in this case because you check everything that’s added to workspace, then Luau has to find the directories and pointers to that object, then run the code. i might be wrong tho