Module:WillpowerCooldownTable: Difference between revisions

From Caves of Qud Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(One intermediate revision by the same user not shown)
Line 16: Line 16:
     local baseCooldown = args.basecooldown
     local baseCooldown = args.basecooldown


     local result = "<table class=\"willpower-cooldown-table\"><tbody><tr>"
     local result = "<table class=\"willpower-cooldown-table\"><tr>"


     for c=0,3 do  --header row
     for c=0,3 do  --header row
Line 31: Line 31:
             local wp = rowWP + (c * 6)
             local wp = rowWP + (c * 6)
             local cd = WillpowerCooldownTable.calcCooldown(wp, baseCooldown)
             local cd = WillpowerCooldownTable.calcCooldown(wp, baseCooldown)
             result = result .. "<td class=\"cd-wi-cell\">" .. wp .. "</td>"
            local wiClass = "cd-wi-cell"
            if wp == 32 then
            wiClass = wiClass .. " cd-wi-32-cell"
            end
             result = result .. "<td class=\"" .. wiClass .. "\">" .. wp .. "</td>"
             result = result .. "<td class=\"cd-cd-cell\">" .. cd .. "</td>"
             result = result .. "<td class=\"cd-cd-cell\">" .. cd .. "</td>"
         end
         end
Line 38: Line 42:
     end
     end


     result = result .. "</tbody></table>"
     result = result .. "</table>"


     return result
     return result

Latest revision as of 16:15, 19 January 2021

Creates a willpower-to-cooldown table, given a base cooldown value. For more information, refer to Template:Willpower_cooldown_table.


local WillpowerCooldownTable = {}

local ProcessArgs = require'Module:ProcessArgs'

function WillpowerCooldownTable.calcCooldown(willpower, basecooldown)
    local internalCooldown = basecooldown * 10.0
    local wpAdjustedCooldown = math.floor((internalCooldown * (100.0 - ((willpower - 16.0) * 5.0))) / 100.0)
    local minimumCooldown = math.max(math.floor(internalCooldown * 0.2 + 0.5), math.min(50.0, internalCooldown))
    local calculatedCooldown = math.max(wpAdjustedCooldown, minimumCooldown)
    local finalCooldown = math.ceil(calculatedCooldown / 10.0)
    return finalCooldown
end

function WillpowerCooldownTable.makeTable(frame)
    local args = ProcessArgs.merge(true)
    local baseCooldown = args.basecooldown

    local result = "<table class=\"willpower-cooldown-table\"><tr>"

    for c=0,3 do  --header row
        result = result .. "<th class=\"cd-wi-header\">WI</th>"
        result = result .. "<th class=\"cd-cd-header\">CD</th>"
    end

    result = result .. "</tr>"

    local rowWP = 9
    for r=0,5 do  --rows
        result = result .. "<tr>"
        for c=0,3 do  --column groups
            local wp = rowWP + (c * 6)
            local cd = WillpowerCooldownTable.calcCooldown(wp, baseCooldown)
            local wiClass = "cd-wi-cell"
            if wp == 32 then
            	wiClass = wiClass .. " cd-wi-32-cell"
            end
            result = result .. "<td class=\"" .. wiClass .. "\">" .. wp .. "</td>"
            result = result .. "<td class=\"cd-cd-cell\">" .. cd .. "</td>"
        end
        result = result .. "</tr>"
        rowWP = rowWP + 1
    end

    result = result .. "</table>"

    return result
end

return WillpowerCooldownTable