local PLUGIN = PLUGIN

AddCSLuaFile()

ENT.Base              = "tacrp_proj_base"
ENT.PrintName         = "40mm Beanbag"
ENT.Spawnable         = false

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

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

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

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

ENT.Delay             = 0

ENT.SmokeTrail        = false
ENT.BounceSounds      = {
  "TacRP/weapons/grenade/flashbang_bounce-1.wav",
  "TacRP/weapons/grenade/flashbang_bounce-2.wav",
  "TacRP/weapons/grenade/flashbang_bounce-3.wav",
}


function ENT:Impact(data, collider)
  self:EmitSound("weapons/rpg/shotdown.wav", 90, 115)

  if IsValid(data.HitEntity) then
    local attacker = self.Attacker or self:GetOwner() or self
    local dmg = DamageInfo()
    dmg:SetAttacker(attacker)
    dmg:SetInflictor(self)
    dmg:SetDamage(Lerp((data.OurOldVelocity:Length() - 1000) / 4000, 0, 100))
    dmg:SetDamageType(DMG_CRUSH)
    dmg:SetDamageForce(data.OurOldVelocity:GetNormalized() * 5000)
    dmg:SetDamagePosition(data.HitPos)
    data.HitEntity:TakeDamageInfo(dmg)
  end

  local ang = data.OurOldVelocity:Angle()
  local fx = EffectData()
  fx:SetOrigin(data.HitPos)
  fx:SetNormal(-ang:Forward())
  fx:SetAngles(-ang)
  util.Effect("ManhackSparks", fx)

  SafeRemoveEntityDelayed(self, 3)
  return true
end
