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

72 lines
1.8 KiB
Lua
Raw Permalink Normal View History

SWEP.PrintName = "Vile Bloated Zombie"
SWEP.Base = "weapon_zs_zombie"
SWEP.MeleeDamage = 32
SWEP.PoisonDmgMul = 0.5
SWEP.MeleeForceScale = 1.25
SWEP.Primary.Delay = 1.4
SWEP.NextPuke = 0
SWEP.PukeLeft = 0
function SWEP:ApplyMeleeDamage(ent, trace, damage)
if ent:IsPlayer() then
ent:PoisonDamage(damage / 2, self:GetOwner(), self, trace.HitPos)
self.BaseClass.ApplyMeleeDamage(self, ent, trace, damage / 2)
else
self.BaseClass.ApplyMeleeDamage(self, ent, trace, damage)
end
end
function SWEP:Reload()
self.BaseClass.SecondaryAttack(self)
end
function SWEP:PlayAlertSound()
self:PlayAttackSound()
end
function SWEP:PlayIdleSound()
self:GetOwner():EmitSound("npc/barnacle/barnacle_tongue_pull"..math.random(3)..".wav")
end
function SWEP:PlayAttackSound()
if SERVER then
local owner = self:GetOwner()
local sndname = "npc/ichthyosaur/attack_growl"..math.random(3)..".wav"
for i = 1, 4 do
timer.Simple(0.04 * i,
function() if owner:IsValid() then owner:EmitSound(sndname, 75, 170 + i*8, 0.4, CHAN_AUTO) end
end)
end
end
end
function SWEP:SecondaryAttack()
local owner = self:GetOwner()
if CurTime() < self:GetNextPrimaryFire() or CurTime() < self:GetNextSecondaryFire() or IsValid(owner.FeignDeath) then return end
self:SetNextSecondaryFire(CurTime() + 3.5)
self:SetNextPrimaryFire(CurTime() + self.Primary.Delay)
owner:DoReloadEvent()
self:PlayAttackSound()
self:EmitSound(string.format("physics/body/body_medium_break%d.wav", math.random(2, 4)), 72, math.random(70, 83))
if SERVER then
timer.Simple(0.8, function()
if self:IsValid() then
self.PukeLeft = 4
if owner:IsValidLivingZombie() then
owner:EmitSound("npc/barnacle/barnacle_die2.wav")
owner:EmitSound("npc/barnacle/barnacle_digesting1.wav")
owner:EmitSound("npc/barnacle/barnacle_digesting2.wav")
end
end
end)
end
end