--[[ | This file was obtained through the combined efforts | of Madbluntz & Plymouth Antiquarian Society. | | Credits: lifestorm, Gregory Wayne Rossel JR., | Maloy, DrPepper10 @ RIP, Atle! | | Visit for more: https://plymouth.thetwilightzone.ru/ --]] /*-------------------------------------------------- *** Copyright (c) 2012-2023 by DrVrej, All rights reserved. *** No parts of this code or any of its contents may be reproduced, copied, modified or adapted, without the prior written consent of the author, unless otherwise indicated for stand-alone materials. --------------------------------------------------*/ AddCSLuaFile() ENT.Type = "anim" ENT.Base = "obj_vj_grenade" ENT.PrintName = "Pit Spike" ENT.Author = "DrVrej" ENT.Contact = "http://steamcommunity.com/groups/vrejgaming" ENT.Information = "Projectiles for my addons" ENT.Category = "Projectiles" if CLIENT then local Name = "Grenade" local LangName = "obj_vj_hlr1_grenade" language.Add(LangName, Name) killicon.Add(LangName,"HUD/killicons/default",Color(255,80,0,255)) language.Add("#"..LangName, Name) killicon.Add("#"..LangName,"HUD/killicons/default",Color(255,80,0,255)) end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ if !SERVER then return end ENT.Model = {"models/vj_hlr/weapons/w_grenade.mdl"} -- The models it should spawn with | Picks a random one from the table ENT.DecalTbl_DeathDecals = {"VJ_HLR_Scorch"} ENT.SoundTbl_OnCollide = {"vj_hlr/hl1_weapon/grenade/grenade_hit1.wav","vj_hlr/hl1_weapon/grenade/grenade_hit2.wav","vj_hlr/hl1_weapon/grenade/grenade_hit3.wav"} ENT.SoundTbl_OnRemove = {"vj_hlr/hl1_weapon/explosion/explode3.wav","vj_hlr/hl1_weapon/explosion/explode4.wav","vj_hlr/hl1_weapon/explosion/explode5.wav"} ENT.OnRemoveSoundLevel = 100 --------------------------------------------------------------------------------------------------------------------------------------------- function ENT:CustomOnPreInitialize() if GetConVar("vj_hlr_hd"):GetInt() == 1 && VJ.HLR_HD_INSTALLED && self:GetClass() == "obj_vj_hlr1_grenade" then self.Model = "models/vj_hlr/weapons/w_grenade_hd.mdl" end end --------------------------------------------------------------------------------------------------------------------------------------------- function ENT:CustomOnPhysicsCollide(data, phys) local getVel = phys:GetVelocity() local curVelSpeed = getVel:Length() phys:SetVelocity(getVel * 0.5) if curVelSpeed > 100 then -- If the grenade is going faster than 100, then play the touch sound self:OnCollideSoundCode() end end --------------------------------------------------------------------------------------------------------------------------------------------- local vezZ90 = Vector(0, 0, 90) local vecZ4 = Vector(0, 0, 4) local vezZ100 = Vector(0, 0, 100) -- function ENT:DeathEffects() local selfPos = self:GetPos() local spr = ents.Create("env_sprite") spr:SetKeyValue("model","vj_hl/sprites/zerogxplode.vmt") spr:SetKeyValue("GlowProxySize","2.0") spr:SetKeyValue("HDRColorScale","1.0") spr:SetKeyValue("renderfx","14") spr:SetKeyValue("rendermode","5") spr:SetKeyValue("renderamt","255") spr:SetKeyValue("disablereceiveshadows","0") spr:SetKeyValue("mindxlevel","0") spr:SetKeyValue("maxdxlevel","0") spr:SetKeyValue("framerate","15.0") spr:SetKeyValue("spawnflags","0") spr:SetKeyValue("scale","4") spr:SetPos(selfPos + vezZ90) spr:Spawn() spr:Fire("Kill", "", 0.9) timer.Simple(0.9,function() if IsValid(spr) then spr:Remove() end end) local expLight = ents.Create("light_dynamic") expLight:SetKeyValue("brightness", "4") expLight:SetKeyValue("distance", "300") expLight:SetLocalPos(selfPos) expLight:SetLocalAngles(self:GetAngles()) expLight:Fire("Color", "255 150 0") expLight:SetParent(self) expLight:Spawn() expLight:Activate() expLight:Fire("TurnOn", "", 0) self:DeleteOnRemove(expLight) util.ScreenShake(self:GetPos(), 100, 200, 1, 2500) self:SetLocalPos(selfPos + vecZ4) -- Because the entity is too close to the ground local tr = util.TraceLine({ start = self:GetPos(), endpos = self:GetPos() - vezZ100, filter = self }) util.Decal(VJ_PICK(self.DecalTbl_DeathDecals), tr.HitPos + tr.HitNormal, tr.HitPos - tr.HitNormal) self:DoDamageCode() self:SetDeathVariablesTrue(nil, nil, false) VJ_EmitSound(self, "vj_hlr/hl1_weapon/explosion/debris"..math.random(1,3)..".wav", 80, 100) VJ_EmitSound(self, "vj_hlr/hl1_weapon/explosion/explode"..math.random(3,5).."_dist.wav", 140, 100) self:Remove() end