Module:Weapon Calculation: Difference between revisions
From HorizonXI Wiki
Starfox9507 (talk | contribs) No edit summary |
Starfox9507 (talk | contribs) No edit summary |
||
| Line 18: | Line 18: | ||
dps = round( ( damage * 60 ) / delay, 2 ) | dps = round( ( damage * 60 ) / delay, 2 ) | ||
else | else | ||
dps = round( (( damage * 60 ) / ( 480 + delay) * 2 ), 2 | dps = round( (( damage * 60 ) / ( 480 + delay) * 2 ), 2 ) | ||
dps = "+" .. dps | dps = "+" .. dps | ||
end | end | ||
| Line 34: | Line 34: | ||
if not ( weapontype == "hand-to-hand" ) then | if not ( weapontype == "hand-to-hand" ) then | ||
if ( delay > 530) then tpph = round( (14.5 + ((( delay - 530) * 3.5) / 470) - 0.05 ) | if ( delay > 530) then tpph = round( (14.5 + ((( delay - 530) * 3.5) / 470) - 0.05 ), 1) | ||
elseif ( delay >= 480 ) then tpph = round( (13.0 + ((( delay - 480) * 1.5) / 50) - 0.05) | elseif ( delay >= 480 ) then tpph = round( (13.0 + ((( delay - 480) * 1.5) / 50) - 0.05) , 1) * 10 | ||
elseif ( delay >= 450 ) then tpph = round( (11.5 + ((( delay - 450) * 1.5) / 30) - 0.05) | elseif ( delay >= 450 ) then tpph = round( (11.5 + ((( delay - 450) * 1.5) / 30) - 0.05) , 1) * 10 | ||
elseif ( delay >= 180 ) then tpph = round( (5.0 + ((( delay - 180) * 6.5) / 270) - 0.05) | elseif ( delay >= 180 ) then tpph = round( (5.0 + ((( delay - 180) * 6.5) / 270) - 0.05) , 1) * 10 | ||
else tpph = round( (5.0 + ((( delay - 180) * 1.5) / 180) - 0.05) | else tpph = round( (5.0 + ((( delay - 180) * 1.5) / 180) - 0.05) , 1) * 10 | ||
end | end | ||
else | else | ||
delay = delay + 480 | delay = delay + 480 | ||
if ( delay >= 530 ) then | if ( delay >= 530 ) then | ||
tpph = round( (14.5 + ((( delay - 50) * 3.5) / 470) - 14.18) | tpph = round( (14.5 + ((( delay - 50) * 3.5) / 470) - 14.18) , 1)* 10 | ||
else | else | ||
if ( delay > 480 ) then | if ( delay > 480 ) then | ||
tpph = round( (13.0 + ((delay * 1.5) / 50) - 13.05) | tpph = round( (13.0 + ((delay * 1.5) / 50) - 13.05) , 1) * 10 | ||
else | else | ||
tpph = 0 | tpph = 0 | ||
Revision as of 09:49, 3 July 2025
Documentation for this module may be created at Module:Weapon Calculation/doc
local p = {}
-- http://lua-users.org/wiki/SimpleRound
function round(num, numDecimalPlaces)
local mult = 10^(numDecimalPlaces or 0)
return math.floor(num * mult + 0.5) / mult
end
function p.dmg (frame)
local damage = tonumber(frame.args.dmg)
local delay = tonumber(frame.args.delay)
local weapontype = frame.args.type or nil
local changes = frame.args.changes or nil
local dps;
if not ( weapontype == "hand-to-hand" ) then
dps = round( ( damage * 60 ) / delay, 2 )
else
dps = round( (( damage * 60 ) / ( 480 + delay) * 2 ), 2 )
dps = "+" .. dps
end
return dps
end
function p.tphit (frame)
-- local damage = tonumber(frame.args.dmg)
local delay = tonumber(frame.args.delay)
local weapontype = frame.args.type or nil
local changes = frame.args.changes or nil
local tpph;
if not ( weapontype == "hand-to-hand" ) then
if ( delay > 530) then tpph = round( (14.5 + ((( delay - 530) * 3.5) / 470) - 0.05 ), 1)
elseif ( delay >= 480 ) then tpph = round( (13.0 + ((( delay - 480) * 1.5) / 50) - 0.05) , 1) * 10
elseif ( delay >= 450 ) then tpph = round( (11.5 + ((( delay - 450) * 1.5) / 30) - 0.05) , 1) * 10
elseif ( delay >= 180 ) then tpph = round( (5.0 + ((( delay - 180) * 6.5) / 270) - 0.05) , 1) * 10
else tpph = round( (5.0 + ((( delay - 180) * 1.5) / 180) - 0.05) , 1) * 10
end
else
delay = delay + 480
if ( delay >= 530 ) then
tpph = round( (14.5 + ((( delay - 50) * 3.5) / 470) - 14.18) , 1)* 10
else
if ( delay > 480 ) then
tpph = round( (13.0 + ((delay * 1.5) / 50) - 13.05) , 1) * 10
else
tpph = 0
end
end
tpph = "+" .. tpph
end
return tpph
end
return p
