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