All pastes #733843 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-10-12 03:40 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
	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()
		
		for j, n in pairs( GibTable ) do 
			if v != n 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