96 lines
2.3 KiB
Text
96 lines
2.3 KiB
Text
function normalize(val, min, max)
|
|
local d = 100*(val-min)/(max-min)
|
|
if d < 0 then
|
|
return 0
|
|
end
|
|
return d
|
|
|
|
--[[
|
|
if val > 100 then
|
|
val = 100
|
|
elseif val < 1 then
|
|
val = 1
|
|
end
|
|
|
|
return val
|
|
]]
|
|
end
|
|
|
|
function normalizeMP(val)
|
|
if val > 100 then
|
|
val = 100
|
|
elseif val < 1 then
|
|
val = 1
|
|
end
|
|
|
|
return val
|
|
end
|
|
|
|
function read_if_exist(section, value, default)
|
|
local ltx = system_ini()
|
|
if ltx:section_exist(section) and ltx:line_exist(section,value) then
|
|
return ltx:r_float(section,value)
|
|
else
|
|
return default
|
|
end
|
|
end
|
|
|
|
function read_float(wpn_section, upgr_sections, param)
|
|
local ltx = system_ini()
|
|
local res = ltx:r_float(wpn_section, param)
|
|
|
|
if upgr_sections == nil or upgr_sections == "" then
|
|
return res
|
|
end
|
|
|
|
for k, sect in pairs(parse_names(upgr_sections)) do
|
|
if param == "hit_power" then
|
|
if res < read_if_exist(sect, param, 0) then
|
|
res = read_if_exist(sect, param, 0)
|
|
end
|
|
else
|
|
res = res + read_if_exist(sect, param, 0)
|
|
end
|
|
end
|
|
|
|
return res
|
|
end
|
|
|
|
function GetRPM(wpn_section, upgr_sections) --' ñêîðîñòðåëüíîñòü
|
|
local rpm = read_float(wpn_section, upgr_sections, "rpm")
|
|
return normalize(rpm, 0, 1150)
|
|
end
|
|
|
|
function GetDamage(wpn_section, upgr_sections) --' ïîâðåæäåíèå
|
|
local hit_power = read_float(wpn_section, upgr_sections, "hit_power")
|
|
return normalize(hit_power, 0, 0.9)
|
|
end
|
|
|
|
function GetDamageMP(wpn_section, upgr_sections) -- ??? (ïîâðåæäåíèåMP)
|
|
local hit_power = read_float(wpn_section, upgr_sections, "hit_power")
|
|
hit_power = hit_power * 100
|
|
-- if val < 1.05 then
|
|
-- val = val*100-30
|
|
-- else
|
|
-- val = 75 + math.pow(val/4,2)*25
|
|
-- end
|
|
return normalizeMP(hit_power)
|
|
end
|
|
|
|
function GetHandling(wpn_section, upgr_sections) --' óäîáíîñòü
|
|
local ltx = system_ini()
|
|
-- local val
|
|
local crosshair_inertion = 1
|
|
if ltx:line_exist(wpn_section,"crosshair_inertion") then
|
|
crosshair_inertion = read_float(wpn_section, upgr_sections, "crosshair_inertion")
|
|
end
|
|
|
|
crosshair_inertion = 11.9 - crosshair_inertion
|
|
return normalize(crosshair_inertion, 0, 10.5)
|
|
end
|
|
|
|
function GetAccuracy(wpn_section, upgr_sections) --' òî÷íîñòü
|
|
local fire_dispersion_base = read_float(wpn_section, upgr_sections, "fire_dispersion_base")
|
|
fire_dispersion_base = 0.85 - fire_dispersion_base
|
|
return normalize(fire_dispersion_base, 0.375, 0.8)
|
|
end
|