nodecore-cd2025/mods/nc_player_setup/step_zoomfocus.lua
2020-06-22 22:47:33 -04:00

29 lines
1011 B
Lua

-- LUALOCALS < ---------------------------------------------------------
local nodecore
= nodecore
-- LUALOCALS > ---------------------------------------------------------
local zoom_base = 60 * nodecore.rate_adjustment("zoom", "base")
local zoom_ratio = 1 - 1 / (4 * nodecore.rate_adjustment("zoom", "ratio"))
local zoom_time = 2 * nodecore.rate_adjustment("zoom", "time")
nodecore.register_playerstep({
label = "zoom focus",
action = function(_, data)
local ctl = data.control
local focusing = ctl.sneak and (not ctl.jump) and (not ctl.up)
and (not ctl.down) and (not ctl.left) and (not ctl.right)
local zoom = zoom_base
if focusing and data.zoomfocus then
zoom = zoom_base - zoom_base * zoom_ratio * (1 - 1 /
((nodecore.gametime - data.zoomfocus) / zoom_time + 1))
else
data.zoomfocus = nodecore.gametime
end
local oldzoom = data.properties.zoom_fov or 0
if oldzoom > (zoom * 1.02) or oldzoom < zoom then
data.properties.zoom_fov = zoom
end
end
})