Jump to content
Main menu
Main menu
move to sidebar
hide
Discord
PRO Wiki Discord
PRO Wiki
Main page
Rules
Recent changes
Random page
Help
Pokémon Revolution Online
About
Downloads
Events
FAQs
The Staff Team
Current Pokétime
Official PRO Resources
Website
Forums
PRO Discord
Twitter
Reddit
Instagram
YouTube
Search
Search
Appearance
Log in
Personal tools
Log in
View source for Module:Fossil
Module
Discussion
English
Read
View source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
View source
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
←
Module:Fossil
You do not have permission to edit this page.
You can view and copy the source of this page.
local p = {} local DATA_FORMAT = 'CSV with header' local function nonEmpty(s) if s == nil then return nil end s = mw.text.trim(tostring(s)) if s == '' then return nil end return s end -- Bulk fetch of the whole raw list, shared by every {{Fossil}}/{{FossilCombo}} -- call on a page instead of each one running its own filtered -- {{#get_file_data:}} query. local pokemonRowsCache = nil local function pokemonByName() if pokemonRowsCache then return pokemonRowsCache end local csvData = mw.ext.externalData.getExternalData{ url = 'https://wiki.pokemonrevolution.net/index.php?title=Special:GetData/PokemonRawList', format = DATA_FORMAT, data = { number = 'Pokedex Number', name = 'Name' }, } pokemonRowsCache = {} if csvData then for _, row in ipairs(csvData) do if nonEmpty(row.name) then pokemonRowsCache[row.name] = row end end end return pokemonRowsCache end -- Every fossil entry uses the same Ground color theme, computed once and -- reused instead of re-expanding the color templates on every call. local groundColors = nil local function colors(frame) if not groundColors then groundColors = { light = frame:expandTemplate{ title = 'Ground color light' }, base = frame:expandTemplate{ title = 'Ground color' }, dark = frame:expandTemplate{ title = 'Ground color dark' }, } end return groundColors end local function obtainabilityList(locationsText) local items = {} for _, part in ipairs(mw.text.split(locationsText or '', '\\', true)) do local trimmed = mw.text.trim(part) if trimmed ~= '' then items[#items + 1] = '<li style="margin-left: 50px;">' .. trimmed .. '</li>' end end return table.concat(items) end local function iconPill(fileName, label, dark) return '<table align="center"><tr><td style="background-color:#FFFFFF; border-radius: 25px; padding: 3px;">' .. '[[File:' .. fileName .. ']]</td><td>' .. label .. '</td></tr></table>' end local function pokemonCell(frame, pokemonName, dark) local row = pokemonByName()[pokemonName] local number = row and row.number or '' local link = '[[' .. pokemonName .. '|<span style="color:#' .. dark .. ';">' .. pokemonName .. '</span>]]' return '<table align="center"><tr><td style="background-color:#FFFFFF; border-radius: 25px; padding: 4px;">' .. '[[File:' .. number .. 'Icon.png]]</td><td>' .. link .. '</td></tr></table>' end local function wrap(frame, fromCellHtml, resultCellHtml, locationsText) local c = colors(frame) local buf = {} buf[#buf + 1] = '<table style="width:50%; background-color:#' .. c.base .. '; border: 5px solid #' .. c.dark .. '; font-weight: bold; color: #' .. c.dark .. '; border-radius: 25px; padding: 4px; text-align: center;">' buf[#buf + 1] = '<tr style="background-color:#' .. c.light .. ';">' .. '<td style="border-radius: 25px 1px 1px 25px; padding: 3px; border: 3px solid #' .. c.dark .. '; width: 33%;">' .. fromCellHtml .. '</td>' .. '<td style="border: 3px solid #' .. c.dark .. '; width: 33%;">Reanimates into ' .. '<span style="font-weight: bold; font-size: 25px;">→</span></td>' .. '<td style="border-radius: 1px 25px 25px 1px; border: 3px solid #' .. c.dark .. '; width: 33%;">' .. resultCellHtml .. '</td></tr>' buf[#buf + 1] = '<tr><td colspan="3" style="border-radius: 25px; border: 3px solid #' .. c.dark .. '; background-color:#' .. c.light .. '; padding: 3px;">' .. '<table class="collapsible collapsed" width="100%"><tr><th>Obtainability</th></tr>' .. '<tr><td style="padding: 10px;"><ul style="background-color:#FFFFFF; border-radius: 20px; border: 1px solid #' .. c.dark .. '; text-align: left; font-weight: normal; color:#000000;">' .. obtainabilityList(locationsText) .. '</ul></td></tr></table></td></tr>' buf[#buf + 1] = '</table>' return table.concat(buf) end function p.single(frame) local parent = frame:getParent() local args = (parent and parent.args) or frame.args local fossil = nonEmpty(args.Fossil) local pokemonName = nonEmpty(args.Pokemon) if not fossil or not pokemonName then return "<span style='color:red'>Usage: {{Fossil|Fossil=FossilName|Pokemon=PokemonName|Locations=...}}</span>" end local c = colors(frame) local fromCell = iconPill(fossil .. '.png', fossil, c.dark) local resultCell = pokemonCell(frame, pokemonName, c.dark) return wrap(frame, fromCell, resultCell, args.Locations) end function p.combo(frame) local parent = frame:getParent() local args = (parent and parent.args) or frame.args local fossil1 = nonEmpty(args.Fossil1) local fossil2 = nonEmpty(args.Fossil2) local pokemonName = nonEmpty(args.Pokemon) if not fossil1 or not fossil2 or not pokemonName then return "<span style='color:red'>Usage: {{FossilCombo|Fossil1=FossilName|Fossil2=FossilName|" .. "Pokemon=PokemonName|Locations=...}}</span>" end local c = colors(frame) local fromCell = '<table align="center"><tr>' .. '<td style="background-color:#FFFFFF; border-radius: 25px; padding: 3px;">[[File:' .. fossil1 .. '.png]]</td><td>' .. fossil1 .. '</td>' .. '<td style="font-weight: bold; font-size: 18px; padding: 0 6px;">+</td>' .. '<td style="background-color:#FFFFFF; border-radius: 25px; padding: 3px;">[[File:' .. fossil2 .. '.png]]</td><td>' .. fossil2 .. '</td></tr></table>' local resultCell = pokemonCell(frame, pokemonName, c.dark) return wrap(frame, fromCell, resultCell, args.Locations) end return p
Page included on this page:
Module:Fossil/doc
(
view source
)
Return to
Module:Fossil
.
Search
Search
View source for Module:Fossil
Add topic