AddCSLuaFile()

ENT.Base                     = "tacrp_proj_base"
ENT.PrintName                = "Thermite Grenade"
ENT.Spawnable                = false

ENT.Model                    = "models/weapons/tacint/smoke.mdl"

ENT.Material = "models/tacint/weapons/w_models/smoke/thermite-1"

ENT.IsRocket = false // projectile has a booster and will not drop.

ENT.InstantFuse = true // projectile is armed immediately after firing.
ENT.RemoteFuse = false // allow this projectile to be triggered by remote detonator.
ENT.ImpactFuse = false // projectile explodes on impact.

ENT.ExplodeOnDamage = false // projectile explodes when it takes damage.
ENT.ExplodeUnderwater = true
ENT.DefuseOnDamage = true

ENT.ImpactDamage = 1

ENT.Delay = 3


ENT.SoundHint = true
ENT.SoundHintDelay = 1.5
ENT.SoundHintRadius = 328
ENT.SoundHintDuration = 1.5

ENT.Sticky = true

ENT.ExplodeSounds = {
    "^TacRP/weapons/grenade/frag_explode-1.wav",
    "^TacRP/weapons/grenade/frag_explode-2.wav",
    "^TacRP/weapons/grenade/frag_explode-3.wav",
}

function ENT:Detonate()
    if self:WaterLevel() > 0 then self:Remove() return end
    local attacker = self.Attacker or self:GetOwner() or self

    -- local dmg = 50
    -- if self.ImpactFuse then dmg = dmg * 0.5 end
    -- util.BlastDamage(self, attacker, self:GetPos(), 350, dmg)

    self:EmitSound("ambient/fire/gascan_ignite1.wav", 80, 110)

    local cloud = ents.Create( "TacRP_fire_cloud" )

    if !IsValid(cloud) then return end

    local t = 8
    if self.ImpactFuse then t = t * 0.5 end

    cloud.FireTime = t
    cloud:SetPos(self:GetPos())
    cloud:SetAngles(self:GetAngles())
    cloud:SetOwner(attacker)
    cloud:Spawn()
    if IsValid(self:GetParent()) then
        cloud:SetParent(self:GetParent())
    elseif self:GetMoveType() == MOVETYPE_NONE then
        cloud:SetMoveType(MOVETYPE_NONE)
    end

    self:Remove()
end

ENT.NextDamageTick = 0

ENT.SmokeTrail = true
function ENT:DoSmokeTrail()
    if CLIENT and self.SmokeTrail then
        local pos = self:GetPos() + self:GetUp() * 4
        local emitter = ParticleEmitter(pos)

        local smoke = emitter:Add("particles/smokey", pos)

        smoke:SetStartAlpha(30)
        smoke:SetEndAlpha(0)

        smoke:SetStartSize(2)
        smoke:SetEndSize(math.Rand(16, 24))

        smoke:SetRoll(math.Rand(-180, 180))
        smoke:SetRollDelta(math.Rand(-1, 1))

        smoke:SetVelocity(VectorRand() * 16 + Vector(0, 0, 64))
        smoke:SetColor(200, 200, 200)
        smoke:SetLighting(false)

        smoke:SetDieTime(math.Rand(0.5, 1))
        smoke:SetGravity(Vector(0, 0, -100))
        smoke:SetNextThink( CurTime() + FrameTime() )
        smoke:SetThinkFunction( function(pa)
            if !pa then return end
            local col1 = Color(255, 135, 0)
            local col2 = Color(255, 255, 255)

            local col3 = col1
            local d = pa:GetLifeTime() / pa:GetDieTime()
            col3.r = Lerp(d, col1.r, col2.r)
            col3.g = Lerp(d, col1.g, col2.g)
            col3.b = Lerp(d, col1.b, col2.b)

            pa:SetColor(col3.r, col3.g, col3.b)
            pa:SetNextThink( CurTime() + FrameTime() )
        end )

        emitter:Finish()
    end
end
