Module:MonsterVariantsTable: Difference between revisions

Jump to navigation Jump to search
Content added Content deleted
(Fix unlock_level logic for when it's N/A. Use plinkt styling. Align levels to the right.)
m (Spaces to tabs)
Line 19: Line 19:


function p._main(variant)
function p._main(variant)
local results = mw.smw.ask{
local results = mw.smw.ask{
('[[Variant of::%s]]'):format(variant),
('[[Variant of::%s]]'):format(variant),
'?Image#64px;x64px = img',
'?Image#64px;x64px = img',
'?Name = name',
'?Name = name',
'?= page',
'?= page',
'?Unlock_level = unlock_lvl',
'?Unlock_level = unlock_lvl',
'?Unlock profession # = unlock_profession',
'?Unlock profession # = unlock_profession',
'?Profession_Level_A = combat',
'?Profession_Level_A = combat',
'?Profession A # = profession',
'?Profession A # = profession',
'?Version default = default',
'?Version default = default',
'?Variant name = variant',
'?Variant name = variant',
'?Version anchor = version',
'?Version anchor = version',
'?-Has subobject#- = subobject',
'?-Has subobject#- = subobject',
'sort=Profession Level A',
'sort=Profession Level A',
'order=asc'
'order=asc'
}
}
mw.logObject(results)
mw.logObject(results)
if results == nil or results[1] == nil then
if results == nil or results[1] == nil then
return ":''No variants found for "..variant.."''"
return ":''No variants found for "..variant.."''"
end
end


local filtered = p.filter_versions(results)
local filtered = p.filter_versions(results)
local sorted = p.sort_by_combat(filtered)
local sorted = p.sort_by_combat(filtered)


return p.create_table(sorted)
return p.create_table(sorted)
end
end


Line 60: Line 60:


function p.sort_by_combat(data)
function p.sort_by_combat(data)
table.sort(data, function(a, b)
table.sort(data, function(a, b)
-- Determine combat values
-- Determine combat values
local combatA = a.combat or a.unlock_lvl or math.huge
local combatA = a.combat or a.unlock_lvl or math.huge
local combatB = b.combat or b.unlock_lvl or math.huge
local combatB = b.combat or b.unlock_lvl or math.huge
-- Sort in ascending order
-- Sort in ascending order
return combatA < combatB
return combatA < combatB
end)
end)
return data
return data
end
end


Line 87: Line 87:
:done()
:done()
:done()
:done()

return tbl
return tbl
end
end
Line 99: Line 99:
:th('Combat level'):done()
:th('Combat level'):done()
:done()
:done()

for _, entry in ipairs(results) do
for _, entry in ipairs(results) do
out = p.insert_row(out, entry)
out = p.insert_row(out, entry)
end
end

return out
return out
end
end