Module:WillpowerCooldownTable: Difference between revisions

From Caves of Qud Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(2 intermediate revisions by the same user not shown)
Line 9: Line 9:
     local calculatedCooldown = math.max(wpAdjustedCooldown, minimumCooldown)
     local calculatedCooldown = math.max(wpAdjustedCooldown, minimumCooldown)
     local finalCooldown = math.ceil(calculatedCooldown / 10.0)
     local finalCooldown = math.ceil(calculatedCooldown / 10.0)
    return finalCooldown
end
end


Line 15: 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 30: 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 37: 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