zombiesurvival-evolved/gamemodes/zombiesurvival/entities/weapons/weapon_zs_grenade/shared.lua

113 lines
2.3 KiB
Lua
Raw Normal View History

2014-10-02 08:49:54 +08:00
SWEP.ViewModel = "models/weapons/c_grenade.mdl"
SWEP.WorldModel = "models/weapons/w_grenade.mdl"
SWEP.UseHands = true
SWEP.AmmoIfHas = true
SWEP.Primary.ClipSize = 1
SWEP.Primary.Automatic = false
SWEP.Primary.Ammo = "grenade"
SWEP.Primary.Delay = 1.25
SWEP.Primary.DefaultClip = 1
SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = -1
SWEP.Secondary.Automatic = false
SWEP.Secondary.Ammo = "none"
SWEP.WalkSpeed = SPEED_FAST
function SWEP:Initialize()
self:SetWeaponHoldType("grenade")
2014-10-02 08:49:54 +08:00
self:SetDeploySpeed(1.1)
end
function SWEP:Precache()
util.PrecacheSound("WeaponFrag.Throw")
end
function SWEP:CanPrimaryAttack()
if self.Owner:IsHolding() or self.Owner:GetBarricadeGhosting() then return false end
if self:GetPrimaryAmmoCount() <= 0 then
self:SetNextPrimaryFire(CurTime() + self.Primary.Delay)
return false
end
return true
end
function SWEP:PrimaryAttack()
if not self:CanPrimaryAttack() then return end
self:SetNextPrimaryFire(CurTime() + self.Primary.Delay)
local owner = self.Owner
self:SendWeaponAnim(ACT_VM_THROW)
owner:DoAttackEvent()
self:TakePrimaryAmmo(1)
self.NextDeploy = CurTime() + 1
if SERVER then
local ent = ents.Create("projectile_zsgrenade")
if ent:IsValid() then
ent:SetPos(owner:GetShootPos())
ent:SetOwner(owner)
ent:Spawn()
ent.GrenadeDamage = self.GrenadeDamage
ent.GrenadeRadius = self.GrenadeRadius
ent:EmitSound("WeaponFrag.Throw")
local phys = ent:GetPhysicsObject()
if phys:IsValid() then
phys:Wake()
phys:AddAngleVelocity(VectorRand() * 5)
phys:SetVelocityInstantaneous(self.Owner:GetAimVector() * 800)
end
end
end
end
function SWEP:SecondaryAttack()
end
function SWEP:CanSecondaryAttack()
return false
end
function SWEP:Reload()
return false
end
function SWEP:Deploy()
GAMEMODE:WeaponDeployed(self.Owner, self)
if self:GetPrimaryAmmoCount() <= 0 then
self:SendWeaponAnim(ACT_VM_SECONDARYATTACK)
end
return true
end
function SWEP:Holster()
self.NextDeploy = nil
return true
end
function SWEP:Think()
if self.NextDeploy and self.NextDeploy <= CurTime() then
self.NextDeploy = nil
if 0 < self:GetPrimaryAmmoCount() then
self:SendWeaponAnim(ACT_VM_DRAW)
else
self:SendWeaponAnim(ACT_VM_SECONDARYATTACK)
if SERVER then
self:Remove()
end
end
elseif SERVER and self:GetPrimaryAmmoCount() <= 0 then
self:Remove()
end
end