Files
wnsrc/lua/arccw/client/cl_sway.lua
lifestorm 9c918c46e5 Upload
2024-08-04 23:12:27 +03:00

47 lines
1.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/
--]]
local enabled = ArcCW.ConVars["enable_sway"]
local mult = ArcCW.ConVars["mult_sway"]
ArcCW.SwayDir = 0
function ArcCW.Sway(cmd)
local ply = LocalPlayer()
local wpn = ply:GetActiveWeapon()
if !wpn.ArcCW then return end
local ang = cmd:GetViewAngles()
if wpn:GetState() == ArcCW.STATE_SIGHTS and !wpn.NoSway and enabled:GetBool() then
local sway = mult:GetFloat() * wpn:GetBuff("Sway")
--sway = sway * math.Clamp(1 / (wpn:GetActiveSights().ScopeMagnification or 1), 0.1, 1)
if wpn:InBipod() then
sway = sway * (wpn.BipodDispersion * wpn:GetBuff_Mult("Mult_BipodDispersion"))
end
if sway > 0.05 then
ang.p = math.Clamp(ang.p + math.sin(CurTime() * 1.25) * FrameTime() * sway, -89, 89)
ArcCW.SwayDir = ArcCW.SwayDir + math.Rand(-360, 360) * FrameTime() / math.min(sway, 1)
ang.p = ang.p + math.sin(ArcCW.SwayDir) * FrameTime() * sway
ang.y = ang.y + math.cos(ArcCW.SwayDir) * FrameTime() * sway
-- ang.p = ang.p + math.Rand(-1, 1) * FrameTime() * sway
-- ang.y = ang.y + math.Rand(-1, 1) * FrameTime() * sway
cmd:SetViewAngles(ang)
end
end
end
hook.Add("CreateMove", "ArcCW_Sway", ArcCW.Sway)