Files
wnsrc/lua/weapons/weapon_flechettegun.lua

128 lines
2.4 KiB
Lua
Raw Normal View History

2024-08-04 22:55:00 +03:00
--[[
| 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 ( !IsMounted( "ep2" ) ) then return end
AddCSLuaFile()
SWEP.PrintName = "#GMOD_FlechetteGun"
SWEP.Author = "garry"
SWEP.Purpose = "Shoot flechettes with primary attack."
SWEP.Slot = 1
SWEP.SlotPos = 2
SWEP.Spawnable = true
SWEP.ViewModel = Model( "models/weapons/c_smg1.mdl" )
SWEP.WorldModel = Model( "models/weapons/w_smg1.mdl" )
SWEP.ViewModelFOV = 54
SWEP.UseHands = true
SWEP.Primary.ClipSize = -1
SWEP.Primary.DefaultClip = -1
SWEP.Primary.Automatic = true
SWEP.Primary.Ammo = "none"
SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = -1
SWEP.Secondary.Automatic = false
SWEP.Secondary.Ammo = "none"
SWEP.DrawAmmo = false
SWEP.AdminOnly = true
game.AddParticles( "particles/hunter_flechette.pcf" )
game.AddParticles( "particles/hunter_projectile.pcf" )
local ShootSound = Sound( "NPC_Hunter.FlechetteShoot" )
function SWEP:Initialize()
self:SetHoldType( "smg" )
end
function SWEP:Reload()
end
function SWEP:CanBePickedUpByNPCs()
return true
end
function SWEP:PrimaryAttack()
self:SetNextPrimaryFire( CurTime() + 0.1 )
self:EmitSound( ShootSound )
self:ShootEffects()
if ( CLIENT ) then return end
SuppressHostEvents( NULL ) -- Do not suppress the flechette effects
local ent = ents.Create( "hunter_flechette" )
if ( !IsValid( ent ) ) then return end
local owner = self:GetOwner()
local Forward = owner:GetAimVector()
ent:SetPos( owner:GetShootPos() + Forward * 32 )
ent:SetAngles( owner:EyeAngles() )
ent:SetOwner( owner )
ent:Spawn()
ent:Activate()
ent:SetVelocity( Forward * 2000 )
end
function SWEP:SecondaryAttack()
-- TODO: Reimplement the old rollermine secondary attack?
end
function SWEP:ShouldDropOnDie()
return false
end
function SWEP:GetNPCRestTimes()
-- Handles the time between bursts
-- Min rest time in seconds, max rest time in seconds
return 0.3, 0.6
end
function SWEP:GetNPCBurstSettings()
-- Handles the burst settings
-- Minimum amount of shots, maximum amount of shots, and the delay between each shot
-- The amount of shots can end up lower than specificed
return 1, 6, 0.1
end
function SWEP:GetNPCBulletSpread( proficiency )
-- Handles the bullet spread based on the given proficiency
-- return value is in degrees
return 1
end