AddCSLuaFile() SWEP.PrintName = "Elder Ghoul" SWEP.Base = "weapon_zs_zombie" SWEP.MeleeDamage = 26 SWEP.MeleeDamageVsProps = 22 SWEP.MeleeForceScale = 0.5 SWEP.SlowDownScale = 0.25 function SWEP:ApplyMeleeDamage(ent, trace, damage) ent:PoisonDamage(damage, self:GetOwner(), self, trace.HitPos) end function SWEP:MeleeHit(ent, trace, damage, forcescale) if not ent:IsPlayer() then damage = self.MeleeDamageVsProps end self.BaseClass.MeleeHit(self, ent, trace, damage, forcescale) end function SWEP:Reload() self.BaseClass.SecondaryAttack(self) end function SWEP:PlayAlertSound() self:GetOwner():EmitSound("npc/fast_zombie/fz_alert_close1.wav", 75, math.Rand(70, 80)) end SWEP.PlayIdleSound = SWEP.PlayAlertSound function SWEP:PlayAttackSound() self:EmitSound("npc/fast_zombie/leap1.wav", 74, math.Rand(110, 130)) end local PoisonPatterns = { Angle(0, 0, 0), Angle(8, 0, 0), Angle(-8, 8, 0), Angle(-8, -8, 0) } local function DoFleshThrow(pl, wep) if pl:IsValid() and pl:Alive() and wep:IsValid() then pl.LastRangedAttack = CurTime() if SERVER then local startpos = pl:GetShootPos() local aimang = pl:EyeAngles() for i, pattern in pairs(PoisonPatterns) do local ang = Angle(aimang.p, aimang.y, aimang.r) ang:RotateAroundAxis(ang:Up(), pattern.yaw) ang:RotateAroundAxis(ang:Right(), pattern.pitch) local ent = ents.Create("projectile_poisonflesh") if ent:IsValid() then ent:SetPos(startpos) ent:SetOwner(pl) ent:Spawn() local phys = ent:GetPhysicsObject() if phys:IsValid() then phys:SetVelocityInstantaneous(ang:Forward() * 350) end end end pl:EmitSound("physics/body/body_medium_break"..math.random(2, 4)..".wav", 72, math.Rand(85, 95)) 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) self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) self:GetOwner():DoZombieEvent() self:EmitSound("npc/fast_zombie/leap1.wav", 74, math.Rand(110, 130)) self:EmitSound(string.format("physics/body/body_medium_break%d.wav", math.random(2, 4)), 72, math.Rand(85, 95)) self:SendWeaponAnim(ACT_VM_HITCENTER) self.IdleAnimation = CurTime() + self:SequenceDuration() timer.Simple(0.7, function() DoFleshThrow(owner, self) end) end if not CLIENT then return end function SWEP:ViewModelDrawn() render.ModelMaterialOverride(0) render.SetColorModulation(1, 1, 1) end local matSheet = Material("models/weapons/v_zombiearms/ghoulsheet") function SWEP:PreDrawViewModel(vm) render.ModelMaterialOverride(matSheet) render.SetColorModulation(0.66, 0.86, 0) end