rendered paste body
AddCSLuaFile( "cl_init.lua" )
AddCSLuaFile( "shared.lua" )
include( 'shared.lua' )
function ENT:SpawnFunction( ply, tr )
if ( !tr.Hit ) then return end
local SpawnPos = tr.HitPos + tr.HitNormal * 16
local ent = ents.Create( "sla_shell" )
ent:SetPos( SpawnPos )
ent:Spawn()
ent:Activate()
self.Spawner = ply
return ent
end
/*---------------------------------------------------------
Name: Initialize
---------------------------------------------------------*/
function ENT:Initialize( )
self.Entity:SetModel( "models/props/de_nuke/light_red2.mdl" )
self.Entity:PhysicsInit( SOLID_VPHYSICS )
self.Entity:SetMoveType( MOVETYPE_VPHYSICS )
self.Entity:SetSolid( SOLID_VPHYSICS )
local phys = self.Entity:GetPhysicsObject()
if (phys:IsValid()) then
phys:Wake()
end
self.Active = false
self.Drop = false
self.Smoke = ents.Create("env_smoketrail")
self.Smoke:SetPos(self.Entity:GetPos())
self.Smoke:SetParent(self.Entity)
self.Smoke:SetKeyValue("self.Smokesprite","sprites/whitepuff.spr" )
self.Smoke:SetKeyValue("spawnrate","25")
self.Smoke:SetKeyValue("spawnradius","5" )
self.Smoke:SetKeyValue("opacity","0.5" )
self.Smoke:SetKeyValue("endsize","10" )
self.Smoke:SetKeyValue("startcolor","100 100 100" )
self.Smoke:SetKeyValue("endcolor","255 255 255" )
self.Smoke:SetKeyValue("lifetime","1" )
self.Smoke:Spawn()
end
/*---------------------------------------------------------
Name: PhysicsCollide
---------------------------------------------------------*/
function ENT:PhysicsCollide()
end
/*---------------------------------------------------------
Name: OnTakeDamage
---------------------------------------------------------*/
function ENT:OnTakeDamage( dmginfo )
self.Entity:TakePhysicsDamage( dmginfo )
end
/*---------------------------------------------------------
Name: Use
---------------------------------------------------------*/
function ENT:Use( activator )
end
function ENT:Detonate()
self.explode = ents.Create("env_explosion")
self.explode:SetPos(self.Entity:GetPos())
self.explode:SetOwner(self.Entity:GetOwner())
self.explode:SetKeyValue("iMagnitude", "200")
self.explode:Spawn()
self.explode:Fire("explode", "", 0)
self.explode:Fire("kill", "", 0)
local tr = util.QuickTrace(self.Entity:GetPos(), Vector(0,0,-4096), self.Entity)
self.beamTarg = ents.Create("info_target")
self.beamTarg:SetKeyValue("targetname", "NULL" .. beamTarg)
self.beamTarg:SetPos(self.Entity:GetPos())
self.beamTarg:Spawn()
self.entBeam = ents.Create("env_laser")
self.entBeam:SetPos(tr.HitPos)
self.entBeam:SetKeyValue("renderamt", "255")
self.entBeam:SetKeyValue( "rendercolor", "255 100 0")
self.entBeam:SetKeyValue( "texture", "sprites/plasmabeam.spr")
self.entBeam:SetKeyValue( "TextureScroll", "55")
self.entBeam:SetKeyValue( "targetname", "laser" .. entBeam)
self.entBeam:SetKeyValue( "parentname", "")
self.entBeam:SetKeyValue( "damage", "5")
self.entBeam:SetKeyValue( "spawnflags", "1 + 16 + 32")
self.entBeam:SetKeyValue( "width", "15")
self.entBeam:SetKeyValue( "dissolvetype", "1")
self.entBeam:SetKeyValue( "LaserTarget", "NULL" .. beamTarg)
self.entBeam:SetKeyValue( "TouchType", "1")
self.entBeam:Spawn()
self.entBeam:Fire("kill", "", 2)
self.beamTarg:Fire("kill", "", 2)
self.effect = EffectData()
self.effect:SetOrigin(tr.HitPos)
util.Effect("thumperdust", self.effect)
util.Effect("manhacksparks", self.effect)
self.phys = ents.Create("env_physexplosion")
self.phys:SetPos(tr.HitPos)
self.phys:SetKeyValue("magnitude", "300")
self.phys:SetKeyValue("radius", "250")
self.phys:SetOwner(self.Entity:GetOwner())
self.phys:SetPhysicsAttacker(self.Entity:GetOwner())
self.phys:Spawn()
self.phys:Fire("explode", "", 0)
self.phys:Fire("kill", "", 0)
self.pobj = self.Entity:GetPhysicsObject()
self.pobj:EnableMotion(false)
timer.Simple(3, function() self:DropIt() end)
end
function ENT:DropIt()
self.pobj = self.Entity:GetPhysicsObject()
self.pobj:EnableMotion(true)
self.pobj:ApplyForceCenter(Vector(0,0,-1))
self.Smoke:Fire("kill", "", 0)
self.Drop = true
end
function ENT:SetLaunch( ply )
self.Active = true
self.Launcher = ply
self:SetAngles(ply:GetAimVector())
end
function ENT:Explode()
-- self.explode = ents.Create("env_explosion")
-- explode:SetPos(self.Entity:GetPos())
-- explode:SetOwner(self.Entity:GetOwner())
-- explode:SetKeyValue("iMagnitude", "200")
explode:Spawn()
explode:Fire("explode", "", 0)
explode:Fire("kill", "", 0)
self.Drop = false
self.Entity:Fire("kill", "", 0)
end
/*---------------------------------------------------------
Name: Think
----------------------------------------------------------*/
function ENT:Think( )
self.LastHeight = self.LastHeight or self:GetPos().z
if self:GetPos().z < self.LastHeight then
self:Detonate()
end
self.LastHeight = self:GetPos().z
if self.Drop then
local entC = ents.FindInSphere(self.Entity:GetPos(), 300)
for k, v in pairs(entC) do
if v and v:IsValid() then
if v:IsPlayer() && v:IsNPC() then
if self.Entity:IsOnGround() then
self:Explode()
end
end
end
end
end
end