Module:DropsLineClue
Jump to navigation
Jump to search
Documentation for this module may be created at Module:DropsLineClue/doc
local p = {} local string = string local commas = require('Module:Addcommas')._add function p.main(frame) local args = frame:getParent().args local type = args.type local rarity = args.rarity local altrarity = args.altrarity local altraritydash = args.altraritydash local raritynotes = args.raritynotes ~= nil and args.raritynotes ~= '' and args.raritynotes or nil local f2p = args.f2p ~= nil and args.f2p ~= '' and frame:expandTemplate{ title='(m)' } or nil local skill = args.skill ~= nil and args.skill ~= '' and args.skill or nil local reward = args.reward ~= nil and args.reward ~= '' and args.reward or nil local noteoverride = args.noteoverride ~= nil and args.noteoverride ~= '' and args.noteoverride or nil local smw = args.smw local templateName local note if skill ~= nil then templateName = 'DropsLineSkill' elseif reward ~= nil then templateName = 'DropsLineReward' else templateName = 'DropsLine' end local adjusted = getAdjustedRarity(rarity, altrarity) local ret = mw.html.create('tr') local altnote = altrarity ~= nil and string.format('%s%s', altraritydash ~= nil and '–' or '; ', adjusted.alt) or '' if noteoverride ~= nil then note = noteoverride else note = string.format('The %s clue scroll drop rate increases to %s%s with the completion of the [[%s Combat Achievements|%s combat achievements]].', type, adjusted.original, altnote, type, type) end local refnote = frame:extensionTag{ name = 'ref', content = note, args = { group = 'd' } } if raritynotes ~= nil then refnote = refnote .. raritynotes end ret:wikitext(frame:expandTemplate{ title=templateName, args = { name = string.format('Clue scroll (%s)', type), quantity = 1, rarity = rarity, altrarity = altrarity, altraritydash = altraritydash, raritynotes = refnote, namenotes = f2p, gemw = 'no', smw = smw, skill = skill } }) return tostring(ret) end function getAdjustedRarity(rarity, altrarity) local modifier = 0.05 local rv1, rv2 = string.match(rarity, '([%d%.]+)/([%d%.]+)') local arv1, arv2 local adjustedrarity, adjustedaltrarity if altrarity then arv1, arv2 = string.match(altrarity, '([%d%.]+)/([%d%.]+)') if tonumber(arv1) > 1 then local reduced = arv2 / arv1 adjustedaltrarity = string.format('%s/%s', 1, commas(math.floor((reduced - (reduced * modifier))))) else adjustedaltrarity = string.format('%s/%s', arv1, commas(math.floor((arv2 - (arv2 * modifier))))) end end if tonumber(rv1) > 1 then local reduced = rv2 / rv1 adjustedrarity = string.format('%s/%s', 1, commas(math.floor((reduced - (reduced * modifier))))) else adjustedrarity = string.format('%s/%s', rv1, commas(math.floor((rv2 - (rv2 * modifier))))) end return { original = adjustedrarity, alt = adjustedaltrarity } end return p