Jump to content
Toggle menu
  • 3.1K articles
  • 4.4K files
  • 18 users
  • 91.5K edits
Ashenzari's Archive
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Failure rate table

From Ashenzari's Archive
Revision as of 02:54, 1 July 2015 by imported>Edsrzf (Edsrzf moved page Module:Success rate table to Module:Failure rate table without leaving a redirect)

local table = require("Module:Calculated table")

local p = {}

-- translated from spl-cast.cc local function tetrahedral_number(n)

 return math.floor(n * (n+1) * (n+2) / 6)

end

-- translated from spl-cast.cc local function true_fail_rate(raw_fail)

 local outcomes = 101 * 101 * 100
 local target = raw_fail * 3
 if target <= 100 then
   return tetrahedral_number(target) / outcomes
 elseif target <= 200 then
   return (tetrahedral_number(target) - 2 * tetrahedral_number(target - 101) - tetrahedral_number(target - 100)) / outcomes
 end
 return (outcomes - tetrahedral_number(300 - target)) / outcomes

end

local function success_func(base_fail, scale)

 return function(env)
   local skill = env.x
   local fail = base_fail - scale*skill
   if fail <= 0 then
     return 0
   end
   return true_fail_rate(base_fail - scale*skill)
 end

end

local function format(n)

 return ("%.2f%%"):format(100*n)

end

function p.table(frame)

 return table._table(frame.args[1], 27, {format = format}, "Failure rate(%)", success_func(frame.args[2], frame.args[3]))

end

return p