All pastes #733848 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-10-12 03:45 UTC
rendered paste body
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