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()
self.gib:Fire( "kill", "", 30 )
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