function EFFECT:Init(data) local pos = data:GetOrigin() pos = pos + Vector(0, 0, 48) sound.Play("ambient/explosions/explode_9.wav", pos, 90, math.Rand(85, 95)) local emitter = ParticleEmitter(pos) emitter:SetNearClip(40, 45) for i=1, math.random(12, 15) do local heading = VectorRand():GetNormalized() local particle = emitter:Add("particle/smokestack", pos + heading * 16) particle:SetVelocity(heading * 72) particle:SetDieTime(math.Rand(1.7, 2.0)) particle:SetStartAlpha(220) particle:SetEndAlpha(0) particle:SetStartSize(32) particle:SetEndSize(4) particle:SetColor(20, 100, 20) particle:SetRoll(math.Rand(0, 360)) particle:SetRollDelta(math.Rand(-1, 1)) end for i=1, math.random(5, 8) do local particle = emitter:Add("particle/smokestack", pos) particle:SetVelocity(VectorRand():GetNormalized() * math.Rand(48, 82)) particle:SetDieTime(math.Rand(2.2, 3.6)) particle:SetStartAlpha(220) particle:SetEndAlpha(0) particle:SetStartSize(8) particle:SetEndSize(100) particle:SetColor(0, 30, 0) particle:SetRoll(math.Rand(0, 360)) particle:SetRollDelta(math.Rand(-1, 1)) particle:SetAirResistance(10) end for i=1, math.random(17, 21) do local particle = emitter:Add("effects/fire_cloud1", pos + VectorRand() * 32) local dir = VectorRand():GetNormalized() particle:SetVelocity(dir * math.Rand(500, 600)) particle:SetDieTime(math.Rand(1.0, 1.25)) particle:SetStartAlpha(220) particle:SetEndAlpha(0) particle:SetStartSize(60) particle:SetEndSize(30) particle:SetRoll(math.Rand(0, 360)) particle:SetRollDelta(math.Rand(-3, 3)) particle:SetAirResistance(60) particle:SetGravity(dir * math.Rand(-600, -500)) end for i=1, 2 do local particle = emitter:Add("effects/fire_cloud1", pos) particle:SetDieTime(math.Rand(0.3, 0.35)) particle:SetStartAlpha(255) particle:SetEndAlpha(0) particle:SetStartSize(16) particle:SetEndSize(300) particle:SetRoll(math.Rand(0, 360)) particle:SetRollDelta(math.Rand(-30, 30)) end emitter:Finish() end function EFFECT:Think() return false end function EFFECT:Render() end