zombiesurvival-evolved/gamemodes/zombiesurvival/entities/weapons/weapon_zs_gunturret/init.lua
JetBoom c7ca128f3f Gun turret ammo fix.
Gun turrets no longer store their ammo in a separate table. Instead, the
user gets 250 SMG ammo when they buy it. The turret then removed 250 (or
less) from the player when it is placed.
2014-12-19 00:52:29 -05:00

85 lines
1.7 KiB
Lua

AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include("shared.lua")
function SWEP:Deploy()
gamemode.Call("WeaponDeployed", self.Owner, self)
self.IdleAnimation = CurTime() + self:SequenceDuration()
self:SpawnGhost()
return true
end
function SWEP:OnRemove()
self:RemoveGhost()
end
function SWEP:Holster()
self:RemoveGhost()
return true
end
function SWEP:SpawnGhost()
local owner = self.Owner
if owner and owner:IsValid() then
owner:GiveStatus("ghost_gunturret")
end
end
function SWEP:RemoveGhost()
local owner = self.Owner
if owner and owner:IsValid() then
owner:RemoveStatus("ghost_gunturret", false, true)
end
end
function SWEP:PrimaryAttack()
if not self:CanPrimaryAttack() then return end
local owner = self.Owner
local status = owner.status_ghost_gunturret
if not (status and status:IsValid()) then return end
status:RecalculateValidity()
if not status:GetValidPlacement() then return end
local pos, ang = status:RecalculateValidity()
if not pos or not ang then return end
self:SetNextPrimaryAttack(CurTime() + self.Primary.Delay)
local ent = ents.Create("prop_gunturret")
if ent:IsValid() then
ent:SetPos(pos)
ent:SetAngles(ang)
ent:Spawn()
ent:SetObjectOwner(owner)
ent:EmitSound("npc/dog/dog_servo12.wav")
ent:GhostAllPlayersInMe(5)
self:TakePrimaryAmmo(1)
local stored = owner:PopPackedItem(ent:GetClass())
if stored then
ent:SetObjectHealth(stored[1])
end
local ammo = math.min(owner:GetAmmoCount("smg1"), 250)
ent:SetAmmo(ammo)
owner:RemoveAmmo(ammo, "smg1")
if not owner:HasWeapon("weapon_zs_gunturretcontrol") then
owner:Give("weapon_zs_gunturretcontrol")
end
if self:GetPrimaryAmmoCount() <= 0 then
owner:StripWeapon(self:GetClass())
end
end
end