--[[ | 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/ --]] if (!file.Exists("autorun/vj_base_autorun.lua","LUA")) then return end --------------------------------------------------------------------------------------------------------------------------------------------- SWEP.Base = "weapon_vj_base" SWEP.PrintName = "Combine Reager" SWEP.Author = "DrVrej" SWEP.Contact = "http://steamcommunity.com/groups/vrejgaming" SWEP.Purpose = "This weapon is made for Players and NPCs" SWEP.Instructions = "Controls are like a regular weapon." -- Main Settings --------------------------------------------------------------------------------------------------------------------------------------------- SWEP.WorldModel = "models/vj_hlr/hl2/weapons/combine_reager.mdl" SWEP.HoldType = "ar2" SWEP.MadeForNPCsOnly = true -- NPC Settings --------------------------------------------------------------------------------------------------------------------------------------------- SWEP.NPC_NextPrimaryFire = 0.1 -- Next time it can use primary fire SWEP.NPC_TimeUntilFire = 0 -- How much time until the bullet/projectile is fired? SWEP.NPC_FiringDistanceScale = 0.15 -- Changes how far the NPC can fire | 1 = No change, x < 1 = closer, x > 1 = farther SWEP.NPC_ReloadSound = {"weapons/physgun_off.wav"} -- Primary Fire --------------------------------------------------------------------------------------------------------------------------------------------- SWEP.Primary.ClipSize = 200 -- Max amount of bullets per clip SWEP.Primary.Ammo = "CrossbowBolt" -- Ammo type SWEP.Primary.Sound = {} SWEP.Primary.DisableBulletCode = true -- The bullet won't spawn, this can be used when creating a projectile-based weapon SWEP.PrimaryEffects_MuzzleParticles = {"vj_rifle_full_blue"} SWEP.PrimaryEffects_SpawnShells = false SWEP.PrimaryEffects_DynamicLightColor = Color(0, 31, 225) -- World Model --------------------------------------------------------------------------------------------------------------------------------------------- SWEP.WorldModel_UseCustomPosition = true -- Should the gun use custom position? This can be used to fix guns that are in the crotch SWEP.WorldModel_CustomPositionAngle = Vector(-10, 0, 180) SWEP.WorldModel_CustomPositionOrigin = Vector(-1, 15, 0.5) --------------------------------------------------------------------------------------------------------------------------------------------- function SWEP:CustomOnInitialize() -- Initialize the firing loop sounds that will be used later self.NextStopFireLoop = CurTime() self.FireLoop1 = CreateSound(self, "ambient/levels/citadel/zapper_loop2.wav") self.FireLoop1:SetSoundLevel(80) self.FireLoop2 = CreateSound(self, "ambient/levels/citadel/zapper_ambient_loop1.wav") self.FireLoop2:SetSoundLevel(70) end --------------------------------------------------------------------------------------------------------------------------------------------- function SWEP:CustomOnThink() -- Stop the firing loop sound if we are no longer firing! if CurTime() > self.NextStopFireLoop then VJ_STOPSOUND(self.FireLoop1) if self.FireLoop2:IsPlaying() then self.FireLoop2:Stop() VJ_EmitSound(self, "ambient/levels/citadel/weapon_disintegrate1.wav", 75, 100) end end end --------------------------------------------------------------------------------------------------------------------------------------------- function SWEP:CustomOnHolster(newWep) VJ_STOPSOUND(self.FireLoop1) VJ_STOPSOUND(self.FireLoop2) return true end -- Return false to disallow the weapon from switching --------------------------------------------------------------------------------------------------------------------------------------------- function SWEP:CustomOnPrimaryAttack_BeforeShoot() if CLIENT then return end local ene = self.Owner:GetEnemy() if !IsValid(ene) then return end -- Play the firing sound self.NextStopFireLoop = CurTime() + 0.2 self.FireLoop1:Play() self.FireLoop2:Play() -- Create electrical particle and deal radius shock damage local randPos = (ene:GetPos() + ene:OBBCenter()) + Vector(math.Rand(-10, 10), math.Rand(-10, 10), math.Rand(-10, 10)) util.ParticleTracerEx("electrical_arc_01", self:GetAttachment(1).Pos, randPos, false, self:EntIndex(), 1) util.VJ_SphereDamage(self.Owner, self.Owner, randPos, 20, math.random(2,5), DMG_SHOCK, true, true) end --------------------------------------------------------------------------------------------------------------------------------------------- function SWEP:CustomOnRemove() VJ_STOPSOUND(self.FireLoop1) VJ_STOPSOUND(self.FireLoop2) end