Module:Test

From Roat Pkz
Revision as of 16:27, 1 May 2024 by Hefner (talk | contribs)
Jump to navigation Jump to search

Documentation for this module may be created at Module:Test/doc

-- This is a Lua module for MediaWiki
-- It provides functionality to calculate percentages of a number

-- Create a table to hold the functions
local Test = {}

-- Function to calculate percentages
function Test.calculatePercentages(frame)
    local args = frame.args
    local dropRate = args[1] or "0/1" -- Extract the drop rate from the args, default to "0/1"
    
    -- Parsing the drop rate
    local numerator, denominator = dropRate:match("(%d+)/(%d+)")
    denominator = tonumber(denominator) or 1 -- Convert denominator to a number or default to 1
    
    local percentages = frame:expandTemplate{ title = 'var', args = {'percentages'} } -- Get existing percentages or empty string if not defined
    if percentages == "" then
        percentages = "|-\n" -- Start a new table row if no existing percentages
    else
        percentages = percentages .. "\n|-\n" -- Append to existing table row
    end
    
    -- Original number
    percentages = percentages .. "| " .. dropRate
    
    -- Donator (85% of original drop rate)
    local donatorDenominator = math.floor(denominator * 0.85)
    local donator = string.format(" || %d/%d", numerator, donatorDenominator)
    percentages = percentages .. donator
    
    -- Super donator (75% of original drop rate)
    local superDonatorDenominator = math.floor(denominator * 0.75)
    local superDonator = string.format(" || %d/%d", numerator, superDonatorDenominator)
    percentages = percentages .. superDonator
    
    -- Extreme donator (70% of original drop rate)
    local extremeDonatorDenominator = math.floor(denominator * 0.70)
    local extremeDonator = string.format(" || %d/%d", numerator, extremeDonatorDenominator)
    percentages = percentages .. extremeDonator
    
    -- Legendary donator (65% of original drop rate)
    local legendaryDonatorDenominator = math.floor(denominator * 0.65)
    local legendaryDonator = string.format(" || %d/%d", numerator, legendaryDonatorDenominator)
    percentages = percentages .. legendaryDonator
    
    -- Royal donator (60% of original drop rate)
    local royalDonatorDenominator = math.floor(denominator * 0.60)
    local royalDonator = string.format(" || %d/%d", numerator, royalDonatorDenominator)
    percentages = percentages .. royalDonator
    
    frame:preprocess('{{#vardefine:percentages|' .. percentages .. '}}') -- Save the updated percentages
    
    return frame:expandTemplate{ title = 'var', args = {'percentages'} } -- Return the updated percentages
end

-- Export the module
return Test