zombiesurvival-evolved/gamemodes/zombiesurvival/entities/weapons/weapon_zs_boardpack/shared.lua
William Moodhe e9da54c2f9 ZS updates for 2014-2018
Too many changes to list.
2018-05-01 18:32:59 -04:00

131 lines
3.7 KiB
Lua

SWEP.Base = "weapon_zs_basemelee"
SWEP.PrintName = "Junk Pack"
SWEP.Description = "It's simply a pack of wooden junk kept together with some duct tape.\nVery useful for making barricades when no materials are around.\nNeeds something like a hammer and nails to keep the things in place."
SWEP.ViewModel = "models/weapons/c_aegiskit.mdl"
SWEP.WorldModel = "models/props_debris/wood_board06a.mdl"
SWEP.UseHands = true
SWEP.AmmoIfHas = true
SWEP.AllowEmpty = true
SWEP.Primary.ClipSize = 1
SWEP.Primary.Automatic = false
SWEP.Primary.Ammo = "SniperRound"
SWEP.Primary.Delay = 1
SWEP.Primary.DefaultClip = 4
SWEP.Secondary.ClipSize = 1
SWEP.Secondary.DefaultClip = 1
SWEP.Secondary.Ammo = "dummy"
SWEP.Secondary.Automatic = true
SWEP.Secondary.Delay = 0.15
SWEP.WalkSpeed = SPEED_NORMAL
SWEP.FullWalkSpeed = SPEED_SLOWEST
SWEP.JunkModels = {
Model("models/props_debris/wood_board04a.mdl"),
Model("models/props_debris/wood_board06a.mdl"),
Model("models/props_debris/wood_board02a.mdl"),
Model("models/props_debris/wood_board01a.mdl"),
Model("models/props_debris/wood_board07a.mdl"),
Model("models/props_c17/furnituredrawer002a.mdl"),
Model("models/props_c17/furnituredrawer003a.mdl"),
Model("models/props_c17/furnituredrawer001a_chunk01.mdl"),
Model("models/props_c17/furniturechair001a_chunk01.mdl"),
Model("models/props_c17/furnituredrawer001a_chunk02.mdl"),
Model("models/props_c17/furnituretable003a.mdl"),
Model("models/props_c17/furniturechair001a.mdl")
}
SWEP.HoldType = "physgun"
function SWEP:SetReplicatedAmmo(count)
self:SetDTInt(0, count)
end
function SWEP:GetReplicatedAmmo()
return self:GetDTInt(0)
end
function SWEP:GetWalkSpeed()
if self:GetPrimaryAmmoCount() > 0 then
return self.FullWalkSpeed
end
end
function SWEP:PrimaryAttack()
if not self:CanPrimaryAttack() then return end
local aimvec = self:GetOwner():GetAimVector()
local shootpos = self:GetOwner():GetShootPos()
local tr = util.TraceLine({start = shootpos, endpos = shootpos + aimvec * 32, filter = self:GetOwner()})
self:SetNextPrimaryAttack(CurTime() + self.Primary.Delay)
self:EmitSound("weapons/iceaxe/iceaxe_swing1.wav", 75, math.random(75, 80))
self:SendWeaponAnim(ACT_VM_PRIMARYATTACK)
self.IdleAnimation = CurTime() + math.min(self.Primary.Delay, self:SequenceDuration())
if SERVER then
self:GetOwner():RestartGesture(ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE)
local ent = ents.Create("prop_physics")
if ent:IsValid() then
local ang = aimvec:Angle()
ang:RotateAroundAxis(ang:Forward(), 90)
ent:SetPos(tr.HitPos)
ent:SetAngles(ang)
ent:SetModel(self.JunkModels[math.random(#self.JunkModels)])
ent:Spawn()
ent:SetHealth(350)
ent.NoVolumeCarryCheck = true
ent.NoDisTime = CurTime() + 15
ent.NoDisOwner = self:GetOwner()
local phys = ent:GetPhysicsObject()
if phys:IsValid() then
phys:SetMass(math.min(phys:GetMass(), 50))
phys:SetVelocityInstantaneous(self:GetOwner():GetVelocity())
end
ent:SetPhysicsAttacker(self:GetOwner())
self:TakePrimaryAmmo(1)
end
end
end
function SWEP:SecondaryAttack()
end
function SWEP:Reload()
end
function SWEP:CanPrimaryAttack()
if self:GetOwner():IsHolding() or self:GetOwner():GetBarricadeGhosting() then return false end
if math.abs(self:GetOwner():GetVelocity().z) >= 256 then return false end
if self:GetPrimaryAmmoCount() <= 0 then
self:SetNextPrimaryFire(CurTime() + self.Primary.Delay)
return false
end
return true
end
function SWEP:Think()
if self.IdleAnimation and self.IdleAnimation <= CurTime() then
self.IdleAnimation = nil
self:SendWeaponAnim(ACT_VM_IDLE)
end
if SERVER then
local count = self:GetPrimaryAmmoCount()
if count ~= self:GetReplicatedAmmo() then
self:SetReplicatedAmmo(count)
self:GetOwner():ResetSpeed()
end
end
end