mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
153 lines
4.5 KiB
Lua
153 lines
4.5 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
function SWEP:OnRestore()
|
|
end
|
|
|
|
function SWEP:GetHeadshotMultiplier(victim, dmginfo)
|
|
return 2.5 -- Hey hey hey, don't forget about me!!!
|
|
end
|
|
|
|
function SWEP:IsEquipment()
|
|
return WEPS.IsEquipment(self)
|
|
end
|
|
|
|
SWEP.IsSilent = false
|
|
|
|
-- The OnDrop() hook is useless for this as it happens AFTER the drop. OwnerChange
|
|
-- does not occur when a drop happens for some reason. Hence this thing.
|
|
function SWEP:PreDrop()
|
|
if self.Throwing then
|
|
if self:GetGrenadePrimed() then
|
|
self:Throw()
|
|
end
|
|
else
|
|
if SERVER and IsValid(self:GetOwner()) and self.Primary.Ammo != "none" then
|
|
local ammo = self:Ammo1()
|
|
|
|
-- Do not drop ammo if we have another gun that uses this type
|
|
for _, w in ipairs(self:GetOwner():GetWeapons()) do
|
|
if IsValid(w) and w != self and w:GetPrimaryAmmoType() == self:GetPrimaryAmmoType() then
|
|
ammo = 0
|
|
end
|
|
end
|
|
|
|
self.StoredAmmo = ammo
|
|
|
|
if ammo > 0 then
|
|
self:GetOwner():RemoveAmmo(ammo, self.Primary.Ammo)
|
|
end
|
|
end
|
|
end
|
|
|
|
net.Start("arccw_togglecustomize")
|
|
net.WriteBool(false)
|
|
net.Send(self:GetOwner())
|
|
self:ToggleCustomizeHUD(false)
|
|
end
|
|
|
|
function SWEP:DampenDrop()
|
|
-- For some reason gmod drops guns on death at a speed of 400 units, which
|
|
-- catapults them away from the body. Here we want people to actually be able
|
|
-- to find a given corpse's weapon, so we override the velocity here and call
|
|
-- this when dropping guns on death.
|
|
local phys = self:GetPhysicsObject()
|
|
if IsValid(phys) then
|
|
phys:SetVelocityInstantaneous(Vector(0,0,-75) + phys:GetVelocity() * 0.001)
|
|
phys:AddAngleVelocity(phys:GetAngleVelocity() * -0.99)
|
|
end
|
|
end
|
|
|
|
SWEP.StoredAmmo = 0
|
|
|
|
-- Picked up by player. Transfer of stored ammo and such.
|
|
function SWEP:Equip(newowner)
|
|
if SERVER then
|
|
if self:IsOnFire() then
|
|
self:Extinguish()
|
|
end
|
|
|
|
self.fingerprints = self.fingerprints or {}
|
|
|
|
if !table.HasValue(self.fingerprints, newowner) then
|
|
table.insert(self.fingerprints, newowner)
|
|
end
|
|
end
|
|
|
|
if SERVER and IsValid(newowner) and self.StoredAmmo > 0 and self.Primary.Ammo != "none" then
|
|
local ammo = newowner:GetAmmoCount(self.Primary.Ammo)
|
|
local given = math.min(self.StoredAmmo, self.Primary.ClipMax - ammo)
|
|
|
|
newowner:GiveAmmo( given, self.Primary.Ammo)
|
|
self.StoredAmmo = 0
|
|
end
|
|
end
|
|
|
|
function SWEP:WasBought(buyer)
|
|
if self.TTT_DoNotAttachOnBuy then return end
|
|
|
|
for i, k in pairs(self.Attachments) do
|
|
k.RandomChance = 100
|
|
end
|
|
-- if ArcCW.ConVars["ttt_atts"]:GetBool() then
|
|
-- self:NPC_SetupAttachments()
|
|
-- end
|
|
end
|
|
|
|
function SWEP:TTT_PostAttachments()
|
|
self.IsSilent = self:GetBuff_Override("Silencer")
|
|
|
|
if !self.IsSilent then
|
|
self.IsSilent = true
|
|
end
|
|
end
|
|
|
|
function SWEP:TTT_Init()
|
|
if engine.ActiveGamemode() != "terrortown" then return end
|
|
|
|
if SERVER then
|
|
self.fingerprints = {}
|
|
end
|
|
|
|
if self.Throwing then
|
|
self.Primary.ClipMax = 0
|
|
end
|
|
|
|
if ArcCW.ConVars["ttt_atts"]:GetBool() then
|
|
if SERVER then
|
|
self:NPC_SetupAttachments()
|
|
end
|
|
elseif !IsValid(self:GetOwner()) then
|
|
-- If attachments aren't randomized, client will not need to ask for att info.
|
|
self.CertainAboutAtts = true
|
|
end
|
|
|
|
if self.ForgetDefaultBehavior then return end
|
|
|
|
self.Primary.ClipMax = ArcCW.TTTAmmoToClipMax[self.Primary.Ammo] or self.RegularClipSize * 2 or self.Primary.ClipSize * 2
|
|
|
|
-- This will overwrite mag reducers, so give it a bit of time
|
|
timer.Simple(0.1, function()
|
|
if !IsValid(self) then return end
|
|
self:SetClip1(self:GetCapacity() or self.RegularClipSize or self.Primary.ClipSize)
|
|
self.Primary.DefaultClip = self.ForceDefaultAmmo or self.ForceDefaultClip or self:GetCapacity()
|
|
end)
|
|
|
|
if self.Throwing and self.Primary.Ammo and !self.ForceDefaultClip then
|
|
self.Primary.Ammo = "none"
|
|
self.Primary.DefaultClip = 0
|
|
self:SetClip1(-1)
|
|
self.Singleton = true
|
|
end
|
|
end
|
|
|
|
--- TTT2 uses this to populate custom convars in the equip menu
|
|
function SWEP:AddToSettingsMenu(parent)
|
|
end |