e9da54c2f9
Too many changes to list.
104 lines
2.5 KiB
Lua
104 lines
2.5 KiB
Lua
AddCSLuaFile()
|
|
DEFINE_BASECLASS("weapon_zs_base")
|
|
|
|
SWEP.PrintName = "'Tosser' SMG"
|
|
SWEP.Description = "A relatively simple SMG with a decent fire rate and reload speed."
|
|
|
|
SWEP.Slot = 2
|
|
SWEP.SlotPos = 0
|
|
|
|
if CLIENT then
|
|
SWEP.HUD3DBone = "ValveBiped.base"
|
|
SWEP.HUD3DPos = Vector(1.5, 0.25, -2)
|
|
SWEP.HUD3DScale = 0.02
|
|
|
|
SWEP.ViewModelFlip = false
|
|
SWEP.ViewModelFOV = 60
|
|
end
|
|
|
|
SWEP.Base = "weapon_zs_base"
|
|
|
|
SWEP.HoldType = "smg"
|
|
|
|
SWEP.ViewModel = "models/weapons/c_smg1.mdl"
|
|
SWEP.WorldModel = "models/weapons/w_smg1.mdl"
|
|
SWEP.UseHands = true
|
|
|
|
SWEP.CSMuzzleFlashes = false
|
|
|
|
SWEP.ReloadSound = Sound("Weapon_SMG1.Reload")
|
|
SWEP.Primary.Sound = Sound("Weapon_AR2.NPC_Single")
|
|
SWEP.Primary.Damage = 14
|
|
SWEP.Primary.NumShots = 1
|
|
SWEP.Primary.Delay = 0.15
|
|
|
|
SWEP.Primary.ClipSize = 24
|
|
SWEP.Primary.Automatic = true
|
|
SWEP.Primary.Ammo = "smg1"
|
|
GAMEMODE:SetupDefaultClip(SWEP.Primary)
|
|
|
|
SWEP.Primary.Gesture = ACT_HL2MP_GESTURE_RANGE_ATTACK_SMG1
|
|
SWEP.ReloadGesture = ACT_HL2MP_GESTURE_RELOAD_SMG1
|
|
|
|
SWEP.ReloadSpeed = 0.78
|
|
SWEP.FireAnimSpeed = 0.55
|
|
|
|
SWEP.ConeMax = 4.5
|
|
SWEP.ConeMin = 2.5
|
|
|
|
SWEP.IronSightsPos = Vector(-6.425, 5, 1.02)
|
|
|
|
GAMEMODE:AttachWeaponModifier(SWEP, WEAPON_MODIFIER_FIRE_DELAY, -0.015)
|
|
GAMEMODE:AddNewRemantleBranch(SWEP, 1, "'Thrower' Burst SMG", "Increased damage but makes the tosser burst fire", function(wept)
|
|
wept.Primary.Damage = wept.Primary.Damage * 1.1
|
|
wept.Primary.Delay = wept.Primary.Delay * 3.9
|
|
wept.Primary.BurstShots = 3
|
|
|
|
wept.PrimaryAttack = function(self)
|
|
if not self:CanPrimaryAttack() then return end
|
|
|
|
self:SetNextPrimaryFire(CurTime() + self:GetFireDelay())
|
|
self:EmitFireSound()
|
|
|
|
self:SetNextShot(CurTime())
|
|
self:SetShotsLeft(self.Primary.BurstShots)
|
|
|
|
self.IdleAnimation = CurTime() + self:SequenceDuration()
|
|
end
|
|
|
|
wept.Think = function(self)
|
|
BaseClass.Think(self)
|
|
|
|
local shotsleft = self:GetShotsLeft()
|
|
if shotsleft > 0 and CurTime() >= self:GetNextShot() then
|
|
self:SetShotsLeft(shotsleft - 1)
|
|
self:SetNextShot(CurTime() + self:GetFireDelay()/6)
|
|
|
|
if self:Clip1() > 0 and self:GetReloadFinish() == 0 then
|
|
self:EmitFireSound()
|
|
self:TakeAmmo()
|
|
self:ShootBullets(self.Primary.Damage, self.Primary.NumShots, self:GetCone())
|
|
|
|
self.IdleAnimation = CurTime() + self:SequenceDuration()
|
|
else
|
|
self:SetShotsLeft(0)
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
function SWEP:SetNextShot(nextshot)
|
|
self:SetDTFloat(5, nextshot)
|
|
end
|
|
|
|
function SWEP:GetNextShot()
|
|
return self:GetDTFloat(5)
|
|
end
|
|
|
|
function SWEP:SetShotsLeft(shotsleft)
|
|
self:SetDTInt(1, shotsleft)
|
|
end
|
|
|
|
function SWEP:GetShotsLeft()
|
|
return self:GetDTInt(1)
|
|
end
|