mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
47 lines
1.5 KiB
Lua
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) |