We're currently working on updating the Wiki content for the August 2024 Closed Playtest. All this information is subject to change in the final release.
Find us in the Wishes Unlimited Discord in the "Beastiepedia (Beastieball Wiki)" thread under #beastieball-spoilers!
Module:PlayList: Difference between revisions
From Beastiepedia: The Beastieball Wiki
(Created page with "local p = {} local cargo = mw.ext.cargo local getArgs = require('Module:Arguments').getArgs local typeFormat = { Body={value="frameless|20x20pxBody", bg="#f3c18c"}, Spirit={value="frameless|20x20pxSpirit", bg="#f5abab"}, Mind={value="frameless|20x20pxMind", bg="#60c0f3"}, Volley={value="frameless|20x20pxVolley", bg="#ebcdff"}, Support={value="[[File:Support.pn...") |
No edit summary |
||
Line 66: | Line 66: | ||
end | end | ||
end | end | ||
if #names == 0 then | if #names == 0 and where == nil then | ||
return "No moves specified" | return "No moves specified" | ||
end | end | ||
Line 75: | Line 75: | ||
if where then | if where then | ||
args.where = where | args.where = where | ||
names = {} | |||
end | end | ||
local results = cargo.query( tables, table.concat(fields, ","), args ) | local results = cargo.query( tables, table.concat(fields, ","), args ) | ||
Line 91: | Line 92: | ||
for r = 1, #results do | for r = 1, #results do | ||
namedResults[results[r].Name] = results[r] | namedResults[results[r].Name] = results[r] | ||
if where then | |||
table.insert(names, results[r].Name) | |||
end | |||
end | end | ||
for _, name in ipairs(names) do | for _, name in ipairs(names) do |
Revision as of 06:00, 6 July 2024
Documentation for this module may be created at Module:PlayList/doc
local p = {} local cargo = mw.ext.cargo local getArgs = require('Module:Arguments').getArgs local typeFormat = { Body={value="[[File:Body.png|frameless|20x20px]][[Body]]", bg="#f3c18c"}, Spirit={value="[[File:Spirit.png|frameless|20x20px]][[Spirit]]", bg="#f5abab"}, Mind={value="[[File:Mind.png|frameless|20x20px]][[Mind]]", bg="#60c0f3"}, Volley={value="[[File:Volley.png|frameless|20x20px]][[Volley]]", bg="#ebcdff"}, Support={value="[[File:Support.png|frameless|20x20px]][[Support]]", bg="#99ecaa"}, Defence={value="[[File:Defence.png|frameless|20x20px]][[Defence]]", bg="#b3b3b3"}, Move={value="[[File:Move.png|frameless|20x20px]][[Move]]", bg=nil}, } local hasPow = { Body=true, Spirit=true, Mind=true, Volley=false, Support=false, Defence=false, Move=false, } local fieldTransform = {} function fieldTransform.Name(content) return "[[" .. content .. "]]" end function p.Main( frame ) local names = {} local where = nil local args = getArgs(frame) local extraHeader = nil local sortable = false local displayFields = {"Name", "Description", "Pow", "Type"} local fields = {"Name", "Description", "Pow", "Type"} local levelEnabled = false local lookingForLevel = false local levels = {} local lastPlay = nil for k, v in pairs(args) do if k == "header" then extraHeader = v elseif k == "where" then where = v elseif v == "?sortable" then sortable = true elseif v == "?level" then levelEnabled = true table.insert(displayFields, "Level") elseif v == "?favors" then table.insert(displayFields, "Favors") table.insert(fields, "Favors") elseif v[1] ~= "?" then if lookingForLevel then levels[lastPlay] = v else lastPlay = v table.insert(names, v) end if levelEnabled then lookingForLevel = lookingForLevel == false end end end if #names == 0 and where == nil then return "No moves specified" end local tables = 'Plays' local args = { where = "Name IN ('" .. table.concat(names, "','") .. "')", } if where then args.where = where names = {} end local results = cargo.query( tables, table.concat(fields, ","), args ) local tbl = mw.html.create('table'):addClass('wikitable') if sortable then tbl:addClass('sortable') end if extraHeader then tbl:tag('tr'):tag('th'):attr("colspan", #displayFields):wikitext(extraHeader) end local header = tbl:tag('tr') for k = 1, #displayFields do header:tag('th'):wikitext(displayFields[k]) end local namedResults = {} for r = 1, #results do namedResults[results[r].Name] = results[r] if where then table.insert(names, results[r].Name) end end for _, name in ipairs(names) do local row = namedResults[name] if row then local tr = tbl:tag('tr') for k = 1, #displayFields do if displayFields[k] == "Type" then local format = typeFormat[row[displayFields[k]]] local td = tr:tag('td'):wikitext(format.value) if format.bg then td:attr("bgcolor", format.bg) end elseif displayFields[k] == "Level" then tr:tag('td'):wikitext(levels[name]) else local content = row[displayFields[k]] if fieldTransform[displayFields[k]] then content = fieldTransform[displayFields[k]](content) end if not content then content = "--" end if displayFields[k] == "Pow" and not hasPow[row["Type"]] then content = "--" end tr:tag('td'):wikitext(frame:preprocess(content)) end end end end return tbl end return p