All pastes #733869 Raw Edit

Mine

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