zombiesurvival-evolved/gamemodes/zombiesurvival/entities/weapons/weapon_zs_detpack/init.lua

85 lines
1.7 KiB
Lua
Raw Normal View History

INC_SERVER()
2014-10-02 08:49:54 +08:00
function SWEP:Deploy()
gamemode.Call("WeaponDeployed", self:GetOwner(), self)
2014-10-02 08:49:54 +08:00
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:GetOwner()
2014-10-02 08:49:54 +08:00
if owner and owner:IsValid() then
owner:GiveStatus("ghost_detpack")
end
end
function SWEP:RemoveGhost()
local owner = self:GetOwner()
2014-10-02 08:49:54 +08:00
if owner and owner:IsValid() then
owner:RemoveStatus("ghost_detpack", false, true)
end
end
function SWEP:PrimaryAttack()
if not self:CanPrimaryAttack() then return end
local owner = self:GetOwner()
2014-10-02 08:49:54 +08:00
local status = owner.status_ghost_detpack
if not (status and status:IsValid()) then return end
status:RecalculateValidity()
if not status:GetValidPlacement() then return end
local pos, ang, entity = status:RecalculateValidity()
if not pos or not ang then return end
self:SetNextPrimaryAttack(CurTime() + 1)
2014-10-02 08:49:54 +08:00
local ent = ents.Create("prop_detpack")
if ent:IsValid() then
ent:SetPos(pos)
ent:SetAngles(ang)
ent:Spawn()
if entity and entity:IsValid() then
ent:SetParent(entity)
end
ent:EmitSound("weapons/c4/c4_plant.wav")
self:TakePrimaryAmmo(1)
ent:SetOwner(self:GetOwner())
2014-10-02 08:49:54 +08:00
if self:GetPrimaryAmmoCount() <= 0 then
owner:StripWeapon(self:GetClass())
end
if not owner:HasWeapon("weapon_zs_detpackremote") then
owner:Give("weapon_zs_detpackremote")
end
owner:SelectWeapon("weapon_zs_detpackremote")
end
end
function SWEP:SecondaryAttack()
end
function SWEP:Think()
local count = self:GetPrimaryAmmoCount()
if count ~= self:GetReplicatedAmmo() then
self:SetReplicatedAmmo(count)
self:GetOwner():ResetSpeed()
2014-10-02 08:49:54 +08:00
end
end