c7ca128f3f
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.
85 lines
1.7 KiB
Lua
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
|