Files
wnsrc/lua/weapons/arccw_base/sh_ttt.lua
lifestorm 94063e4369 Upload
2024-08-04 22:55:00 +03:00

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