summaryrefslogtreecommitdiff
path: root/entities/effects/gore_explosion/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'entities/effects/gore_explosion/init.lua')
-rw-r--r--entities/effects/gore_explosion/init.lua64
1 files changed, 32 insertions, 32 deletions
diff --git a/entities/effects/gore_explosion/init.lua b/entities/effects/gore_explosion/init.lua
index e4406a1..66a8641 100644
--- a/entities/effects/gore_explosion/init.lua
+++ b/entities/effects/gore_explosion/init.lua
@@ -3,10 +3,10 @@
function EFFECT:Init( data )
self.DieTime = CurTime() + 1.5
-
+
local pos = data:GetOrigin() + Vector(0,0,50)
local emitter = ParticleEmitter( pos )
-
+
local particle = emitter:Add( "effects/blood_core", pos )
particle:SetDieTime( math.Rand( 0.5, 1.0 ) )
particle:SetStartAlpha( 255 )
@@ -15,7 +15,7 @@ function EFFECT:Init( data )
particle:SetEndSize( math.random( 150, 200 ) )
particle:SetRoll( math.Rand( -360, 360 ) )
particle:SetColor( 50, 0, 0 )
-
+
local particle = emitter:Add( "effects/blood_core", pos )
particle:SetDieTime( math.Rand( 6.0, 8.0 ) )
particle:SetStartAlpha( 50 )
@@ -25,9 +25,9 @@ function EFFECT:Init( data )
particle:SetRoll( math.Rand( -360, 360 ) )
particle:SetColor( 50, 0, 0 )
particle:SetGravity( Vector( 0, 0, -5 ) )
-
+
for i=1, math.random(4,8) do
-
+
local particle = emitter:Add( "effects/blood", pos )
particle:SetVelocity( VectorRand() * 100 + Vector(0,math.random(-25,25),50) )
particle:SetDieTime( 1.0 )
@@ -38,14 +38,14 @@ function EFFECT:Init( data )
particle:SetRoll( math.Rand( -360, 360 ) )
particle:SetColor( 50, 0, 0 )
particle:SetGravity( Vector( 0, 0, -300 ) )
-
+
end
-
+
for i=1, 12 do
-
+
local vec = VectorRand()
vec.z = math.Rand( -0.2, 1.0 )
-
+
local particle = emitter:Add( "nuke/gore" .. math.random(1,2), pos )
particle:SetVelocity( vec * 250 + Vector(0,0,50) )
particle:SetDieTime( math.Rand( 0.8, 1.0 ) )
@@ -56,14 +56,14 @@ function EFFECT:Init( data )
particle:SetRoll( math.Rand( -360, 360 ) )
particle:SetColor( 50, 0, 0 )
particle:SetGravity( Vector( 0, 0, -300 ) )
-
+
end
-
+
for i=1, math.random(3,6) do
-
+
local vec = VectorRand()
vec.z = math.Rand( -0.2, 1.0 )
-
+
local particle = emitter:Add( "nuke/gore" .. math.random(1,2), pos + Vector(0,0,math.random(-10,10)) )
particle:SetVelocity( vec * 300 )
particle:SetLifeTime( 0 )
@@ -74,56 +74,56 @@ function EFFECT:Init( data )
particle:SetEndSize( 1 )
particle:SetRoll( math.Rand( -360, 360 ) )
particle:SetColor( 40, 0, 0 )
-
+
particle:SetGravity( Vector( 0, 0, -500 ) )
particle:SetCollide( true )
particle:SetBounce( 0.5 )
-
+
particle:SetCollideCallback( function( part, pos, normal )
-
+
util.Decal( "Blood", pos + normal, pos - normal )
-
+
end )
-
+
end
emitter:Finish()
-
+
for i=1, 15 do
-
+
local ed = EffectData()
ed:SetOrigin( pos + Vector(0,0,math.random(0,30)) )
-
+
if i < 5 then
ed:SetScale( 1 )
else
ed:SetScale( 2 )
end
-
+
util.Effect( "player_gib", ed, true, true )
-
+
end
-
+
if LocalPlayer():GetPos():Distance( pos ) <= 300 then
-
+
local frac = 1 - ( LocalPlayer():GetPos():Distance( pos ) / 300 )
-
+
for i=1, math.Round( frac * 12 ) do
-
+
AddStain()
-
+
end
-
+
end
-
+
end
function EFFECT:Think( )
return self.DieTime > CurTime()
-
+
end
function EFFECT:Render()
-
+
end