local GibTable = {"models/Gibs/Scanner_gib05.mdl", "models/Gibs/Scanner_gib04.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, h, l, i local jibs = {} for k, v in pairs(GibTable) do util.PrecacheModel(v) self.gib = ents.Create("prop_physics") self.gib:SetModel(v) self.gib:SetPos(self.Entity:GetPos()) self.gib:Spawn() table.insert(jibs, self.gib) end for i = 1, #jibs do timer.Simple(30, ClearEnt, self.gib, i, jibs) end for j, n in pairs( jibs ) do for h, l in pairs( jibs ) do if l != n then constraint.NoCollide( n, l, 0, 0 ) end end constraint.NoCollide(n, self.Entity, 0, 0) end self.Entity:Fire("kill", "", 0) end function ClearEnt(ent, entindex, tab) table.remove(tab, entindex) ent:Fire("kill", "", 0) end function ENT:OnTakeDamage( dmginfo ) self.Entity:TakePhysicsDamage( dmginfo ) if self.NextDet < CurTime() then if self.Entity:Health() <= 0 then self:ExplodeAndGib(dmginfo:GetInflictor()) else self.Entity:SetHealth(self.Entity:Health() - dmginfo:GetDamage()) end self.NextDet = CurTime() + .5 end end