Module:GolbinRaid: Difference between revisions
From Melvor Idle
(getCrateContents: Initial implementation) |
(getRaidModifierList: Initial implementation) |
||
Line 77: | Line 77: | ||
resultTable:node(tr) | resultTable:node(tr) | ||
end | end | ||
end | |||
return tostring(resultTable) | |||
end | |||
function p.getRaidModifierList() | |||
local resultTable = mw.html.create('table') | |||
resultTable:addClass('wikitable'):addClass('stickyHeader'):addClass('sortable') | |||
resultTable:tag('tr'):addClass('headerRow-0') | |||
:tag('th'):wikitext('Modifier'):done() | |||
for i, modDet in ipairs(RaidData.PossibleModifiers) do | |||
local modVal = {1, 5} | |||
local mult = modDet.multiplier | |||
if mult ~= nil then | |||
modVal = {modVal[1] * mult, modVal[2] * mult} | |||
end | |||
resultTable:tag('tr') | |||
:tag('td'):wikitext(Constants._getModifierText(modDet.key, modVal, true)):done() | |||
end | end | ||
return tostring(resultTable) | return tostring(resultTable) |
Revision as of 22:28, 22 February 2022
Documentation for this module may be created at Module:GolbinRaid/doc
local p = {}
local RaidData = mw.loadData('Module:GolbinRaid/data')
local Constants = require('Module:Constants')
local Shared = require('Module:Shared')
local Icons = require('Module:Icons')
local Items = require('Module:Items')
function p.getCrateContents(frame)
local weightDesc = {
[1] = 'Bugged Rare',
[4] = 'Ultra Rare',
[10] = 'Rare',
[20] = 'Uncommon',
[35] = 'Common'
}
local crateContents = RaidData.GolbinCrate
local resultTable = mw.html.create('table')
resultTable:addClass('wikitable'):addClass('stickyHeader'):addClass('sortable')
resultTable:tag('tr'):addClass('headerRow-0')
:tag('th'):attr('colspan', 2):wikitext('Item'):done()
:tag('th'):attr('colspan', 2):wikitext('Rarity'):done()
:tag('th'):wikitext('Slots'):done()
:tag('th'):wikitext('Description'):done()
local sortFunc = function(t, a, b)
if t[a].weight == t[b].weight then
return t[a].itemID < t[b].itemID
else
return t[a].weight > t[b].weight
end
end
for i, crateEntry in Shared.spairs(RaidData.GolbinCrate, sortFunc) do
local item = Items.getItemByID(crateEntry.itemID)
if item ~= nil then
-- Generate slot list text
local slotText = {}
for j, slot in ipairs(item.validSlots) do
if slot == 'Weapon' and item.attackType ~= nil then
local iconType = nil
if item.attackType ~= 'melee' then
iconType = 'skill'
end
table.insert(slotText, slot .. ' (' .. Icons.Icon({Shared.titleCase(item.attackType), type=iconType, notext=true}) .. ')')
else
table.insert(slotText, slot)
end
end
-- Generate description text
local descText = ''
if item.description ~= nil then
-- If the item has a description, simply use that
descText = item.description
elseif type(item.specialAttacks) == 'table' then
-- If the item has special attacks, use those
local spAttText = {}
for j, spAtt in ipairs(item.specialAttacks) do
table.insert(spAttText, '<b>' .. spAtt.name .. ' (' .. Shared.round(spAtt.defaultChance, 2, 0) .. '%)</b> - ' .. spAtt.description)
end
descText = table.concat(spAttText, '<br/>')
end
-- Build row & append to table
local tr = mw.html.create('tr')
tr:tag('td'):wikitext(Icons.Icon({item.name, type='item', notext=true}))
tr:tag('td'):wikitext(Icons.Link({item.name, type='item'}))
tr:tag('td')
:attr('data-sort-value', crateEntry.weight)
:wikitext(weightDesc[crateEntry.weight] or '')
tr:tag('td'):wikitext(crateEntry.weight)
tr:tag('td'):wikitext(table.concat(slotText, ', '))
tr:tag('td'):wikitext(descText)
resultTable:node(tr)
end
end
return tostring(resultTable)
end
function p.getRaidModifierList()
local resultTable = mw.html.create('table')
resultTable:addClass('wikitable'):addClass('stickyHeader'):addClass('sortable')
resultTable:tag('tr'):addClass('headerRow-0')
:tag('th'):wikitext('Modifier'):done()
for i, modDet in ipairs(RaidData.PossibleModifiers) do
local modVal = {1, 5}
local mult = modDet.multiplier
if mult ~= nil then
modVal = {modVal[1] * mult, modVal[2] * mult}
end
resultTable:tag('tr')
:tag('td'):wikitext(Constants._getModifierText(modDet.key, modVal, true)):done()
end
return tostring(resultTable)
end
return p