38 lines
1,017 B
Lua
38 lines
1,017 B
Lua
|
function EFFECT:Init(data)
|
||
|
local pos = data:GetOrigin()
|
||
|
local norm = data:GetNormal() * -1
|
||
|
|
||
|
sound.Play("ambient/materials/rock4.wav", pos, 77, math.Rand(65, 85))
|
||
|
sound.Play("physics/concrete/boulder_impact_hard" .. math.random(1,4) .. ".wav", pos, 77, math.Rand(85, 95))
|
||
|
|
||
|
local maxbound = Vector(3, 3, 3)
|
||
|
local minbound = maxbound * -1
|
||
|
for i=1, 8 do
|
||
|
local dir = (norm * 2 + VectorRand()) / 3
|
||
|
dir:Normalize()
|
||
|
|
||
|
local ent = ClientsideModel("models/props_junk/Rock001a.mdl", RENDERGROUP_OPAQUE)
|
||
|
if ent:IsValid() then
|
||
|
ent:SetModelScale(math.Rand(0.5, 0.9), 0)
|
||
|
ent:SetPos(pos + dir * 6)
|
||
|
ent:PhysicsInitBox(minbound, maxbound)
|
||
|
ent:SetCollisionBounds(minbound, maxbound)
|
||
|
|
||
|
local phys = ent:GetPhysicsObject()
|
||
|
if phys:IsValid() then
|
||
|
phys:SetMaterial("rock")
|
||
|
phys:ApplyForceOffset(ent:GetPos() + VectorRand() * 5, dir * math.Rand(-600, 600))
|
||
|
end
|
||
|
|
||
|
SafeRemoveEntityDelayed(ent, math.Rand(4, 8))
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function EFFECT:Think()
|
||
|
return false
|
||
|
end
|
||
|
|
||
|
function EFFECT:Render()
|
||
|
end
|