local GibTable = {"models/Gibs/Scanner_gib05.mdl", "models/Gibs/Scanner_gib04.mdl", "models/Gibs/Scanner_gib03.mdl", "models/Gibs/Scanner_gib02.mdl", "models/Gibs/Scanner_gib02.mdl", "models/Gibs/Scanner_gib01.mdl"} function ENT:ExplodeAndGib(dmgEnt) local explosion = ents.Create("env_explosion") explosion:SetPos(self.Entity:GetPos()) explosion:SetKeyValue("iMagnitude", "75") explosion:SetOwner(dmgEnt) explosion:Spawn() explosion:Fire("explode", "", 0) explosion:Fire("kill", "", 0) local k, v, j, n local jibs = { } for k, v in pairs(GibTable) do util.PrecacheModel(v) local gib = ents.Create("prop_physics") gib:SetModel(v) gib:SetPos(self.Entity:GetPos()) gib:Spawn() table.insert( jibs, gib ) end for k,v in pairs( jibs ) do local j,n for j, n in pairs( jibs ) do if n ~= v then constraint.NoCollide( v, n, 0, 0 ) end end end self.Entity:Fire("kill", "", 0) end function ENT:OnTakeDamage( dmginfo ) self.Entity:TakePhysicsDamage( dmginfo ) if self.Entity:Health() <= 0 then self:ExplodeAndGib(dmginfo:GetInflictor()) else self.Entity:SetHealth(self.Entity:Health() - dmginfo:GetDamage()) end end