Explosive blowing through welded props

So I have this explosive addon and whenever I detonate the explosive, if it is on another players props, whether the props are welded or not, the explosion unwelds the props and makes them fly everywhere. Basically what I need help with is I want to be able to know how to make the props stay welded and not effected by the explosion. Can anyone help me here?
Here is the code for the explosive:

util.AddNetworkString( “rphone_ied_copynumber” )

AddCSLuaFile( “cl_init.lua” )
AddCSLuaFile( “shared.lua” )

include( “shared.lua” )

local ieds = {}

hook.Add( “Initialize”, “rphone_ied_init”, function()
rPhone.RegisterEventCallback( “PHONE_DIALED”, function( num )
local ied = ieds[num]

	if ied then
		if IsValid( ied ) then
			ied:Detonate()
		end

		return false, "Detonation successful."
	end
end )

end )

function ENT:Initialize()
self:SetModel( “models/weapons/w_c4_planted.mdl” )

self:PhysicsInit( SOLID_VPHYSICS )
self:SetMoveType( MOVETYPE_VPHYSICS )
self:SetSolid( SOLID_VPHYSICS )

self:SetCollisionGroup( COLLISION_GROUP_WEAPON )

self:SetUseType( SIMPLE_USE )

local phys = self:GetPhysicsObject()

if IsValid( phys ) then
	phys:Wake()
end

self.number = rPhone.FindUnusedNumber()

rPhone.ReserveNumber( self.number )

ieds[self.number] = self

end

function ENT:Use( ply )
net.Start( “rphone_ied_copynumber” )
net.WriteString( self.number )
net.Send( ply )
end

function ENT:Think()
if not IsValid(self) then return end
if not IsValid(self.Entity) then return end

if (self.Entity.HitWeld) then  
	self.HitWeld = false  
	constraint.Weld(self.Entity.HitEnt, self.Entity, 0, 0, 0, true)  
end 

end

function ENT:Detonate()
local pos = self:GetPos()

local expl = ents.Create( "env_explosion" )
	expl:SetOwner( self.Owner )
	expl:SetPos( pos )
	expl:SetKeyValue( "iMagnitude", self.Magnitude )
	expl:Spawn()
	expl:Activate()
	expl:Fire( "Explode", "", 0 )

local shake = ents.Create( "env_shake" )
	shake:SetOwner( self.Owner )
	shake:SetPos( pos )
	shake:SetKeyValue( "amplitude", "16.0" )
	shake:SetKeyValue( "radius", self.ShakeRadius )
	shake:SetKeyValue( "duration", self.ShakeDuration )
	shake:SetKeyValue( "frequency", self.ShakeFrequency )
	shake:SetKeyValue( "spawnflags", "4" )
	shake:Spawn()
	shake:Activate()
	shake:Fire( "StartShake", "", 0 )

local ar2expl = ents.Create( "env_ar2explosion" )
	ar2expl:SetOwner( self.Owner )
	ar2expl:SetPos( pos )
	ar2expl:Spawn()
	ar2expl:Activate()
	ar2expl:Fire( "Explode", "", 0 )

local effdata = EffectData()
	effdata:SetOrigin( pos )

util.Effect( "HelicopterMegaBomb", effdata )

for _, ent in pairs( ents.FindInSphere( self:GetPos(), self.PropAffectRadius ) ) do
	if ent:GetClass() != "prop_physics" then continue end
	
	local phys = ent:GetPhysicsObject()

	if IsValid( phys ) then
		constraint.RemoveAll( ent )

		phys:EnableMotion( true )
	end
end

self:Remove()

end

function ENT:OnRemove()
rPhone.UnreserveNumber( self.number )

ieds[self.number] = nil

end

function ENT:CanTool( ply )
if IsValid( ply ) and ply:IsSuperAdmin() then
return true
end

return false

end

Remove this part near the end



for _, ent in pairs( ents.FindInSphere( self:GetPos(), self.PropAffectRadius ) ) do
if ent:GetClass() != "prop_physics" then continue end

local phys = ent:GetPhysicsObject()

if IsValid( phys ) then
constraint.RemoveAll( ent )

phys:EnableMotion( true )
end
end


Also, use code tags next time.

omg, i’m an idiot. thanks so much!