mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
153
lua/weapons/arccw_base/sh_ttt.lua
Normal file
153
lua/weapons/arccw_base/sh_ttt.lua
Normal file
@@ -0,0 +1,153 @@
|
||||
--[[
|
||||
| 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
|
||||
Reference in New Issue
Block a user