AddCSLuaFile() ENT.Base = "tacrp_proj_gyrojet" ENT.PrintName = "Gyrojet Pipe Grenade" ENT.Spawnable = false ENT.Model = "models/Items/AR2_Grenade.mdl" ENT.CollisionSphere = false ENT.SmokeTrail = true ENT.FlareColor = Color(255, 200, 128, 100) ENT.FlareLife = 0.1 ENT.IsRocket = false ENT.InstantFuse = true ENT.ImpactFuse = false ENT.Delay = 1.5 ENT.AudioLoop = false function ENT:Impact(data, collider) if IsValid(data.HitEntity) and (data.HitEntity:IsPlayer() or data.HitEntity:IsNPC() or data.HitEntity:IsNextBot()) then self:Detonate() end end function ENT:Detonate() local attacker = self.Attacker or self:GetOwner() or self local inflictor = attacker.GetWeapon and attacker:GetWeapon("tacrp_sd_gyrojet") local dmg = inflictor and inflictor.GetValue and inflictor:GetValue("Damage_Max") or 75 if attacker:IsNPC() and !TacRP.ConVars["npc_equality"]:GetBool() then dmg = dmg * 0.25 end util.BlastDamage(self, attacker, self:GetPos(), 150, dmg) local fx = EffectData() fx:SetOrigin(self:GetPos()) fx:SetNormal(self:GetForward()) if self:WaterLevel() > 0 then util.Effect("WaterSurfaceExplosion", fx) else util.Effect("HelicopterMegaBomb", fx) end self:EmitSound(table.Random(self.ExplodeSounds), 80, 110, 0.75) self:Remove() end function ENT:PhysicsUpdate(phys) end local smokeimages = {"particle/smokesprites_0001", "particle/smokesprites_0002", "particle/smokesprites_0003", "particle/smokesprites_0004", "particle/smokesprites_0005", "particle/smokesprites_0006", "particle/smokesprites_0007", "particle/smokesprites_0008", "particle/smokesprites_0009", "particle/smokesprites_0010", "particle/smokesprites_0011", "particle/smokesprites_0012", "particle/smokesprites_0013", "particle/smokesprites_0014", "particle/smokesprites_0015", "particle/smokesprites_0016"} local function GetSmokeImage() return smokeimages[math.random(#smokeimages)] end function ENT:MakeSmoke() local emitter = ParticleEmitter(self:GetPos()) local smoke = emitter:Add(GetSmokeImage(), self:GetPos()) smoke:SetStartAlpha(2) smoke:SetEndAlpha(0) smoke:SetStartSize(4) smoke:SetEndSize(math.Rand(10, 12)) smoke:SetRoll(math.Rand(-180, 180)) smoke:SetRollDelta(math.Rand(-1, 1)) smoke:SetPos(self:GetPos()) smoke:SetVelocity(VectorRand() * 25) smoke:SetColor(255, 255, 255) smoke:SetLighting(false) smoke:SetDieTime(math.Rand(0.6, 0.8)) smoke:SetGravity(Vector(0, 0, 256)) emitter:Finish() end