StardustLabs>Catter1 No edit summary |
m (1 revision imported) |
(No difference)
|
Latest revision as of 01:50, 27 May 2024
Documentation for this module may be created at Module:DPSCalculator/doc
-- damage * attackspeed local p = {} function Round(val) return math.floor(val*100)/100 end function Calculate(Damage, DamageMin, DamageMax, Speed, SpeedMin, SpeedMax) local bitval = 0 if Damage ~= 0 then bitval = bitval + 1 end if DamageMin ~= 0 then bitval = bitval + 2 end if DamageMax ~= 0 then bitval = bitval + 4 end if Speed ~= 0 then bitval = bitval + 8 end if SpeedMin ~= 0 then bitval = bitval + 16 end if SpeedMax ~= 0 then bitval = bitval + 32 end -- Single damage and single speed if bitval == 9 then local dps = Damage * Speed return Round(dps) -- Single damage, range speed elseif bitval == 49 then local dps1 = Damage * SpeedMin local dps2 = Damage * SpeedMax return Round(dps1), Round(dps2) -- Range damage, single speed elseif bitval == 14 then local dps1 = DamageMin * Speed local dps2 = DamageMax * Speed return Round(dps1), Round(dps2) -- Range damage, range speed elseif bitval == 54 then local dps1 = DamageMin * SpeedMin local dps2 = DamageMax * SpeedMax return Round(dps1), Round(dps2) -- Bruh else return nil end end p.Calculate = function(frame) local clean_args = {} for k, v in pairs(frame.args) do if k > 0 then table.insert(clean_args, k, tonumber(v)) end end local dps1, dps2 = Calculate(unpack(clean_args)) --Getting an error here? change table.unpack to unpack! if not dps1 then return "Invalid input!" elseif dps2 then return string.format("%s - %s", frame:expandTemplate{title="Health", args = {dps1}}, frame:expandTemplate{title="Health", args = {dps2}}) else return frame:expandTemplate{title="Health", args = {dps1}} end end return p -- print(p.Calculate(arg)) -- print(Calculate(tonumber(arg[1]), tonumber(arg[2]), tonumber(arg[3]), tonumber(arg[4]), tonumber(arg[5]), tonumber(arg[6])))