From StrategyWiki, the video game walkthrough and strategy guide wiki
Jump to navigation Jump to search
(Adding in mid table headers for capture arena as the Pokémon are divided into different ranks)
(Don't need frame)
Tags: Mobile edit Mobile web edit
(2 intermediate revisions by the same user not shown)
Line 90: Line 90:
local challengeData = data[ "challenges" ][ v ]
local challengeData = data[ "challenges" ][ v ]
local row = root:tag( 'tr' )
local row = root:tag( 'tr' )
if monData == nil then
    root:tag( 'tr' )
:tag( 'td' )
:attr( 'colspan', 4 )
:css( 'text-align', 'center' )
:css( { ['background-color'] = '#317103', color = 'white' } )
:wikitext( v )
end
row:tag( 'td' ):wikitext( "[[File:" .. shortname[ guide ] .. ' ' .. monData.name .. ".png|" .. monData.name .. "]]" .. " " .. '[[' .. guide .. '/Browser#'.. monData.name .. '|' .. monData.name .. ']]' )
row:tag( 'td' ):wikitext( "[[File:" .. shortname[ guide ] .. ' ' .. monData.name .. ".png|" .. monData.name .. "]]" .. " " .. '[[' .. guide .. '/Browser#'.. monData.name .. '|' .. monData.name .. ']]' )
row:tag( 'td' ):wikitext( challengeData.requirement )
row:tag( 'td' ):wikitext( challengeData.requirement )
Line 156: Line 146:
end
end


return tostring( root )
end
function p.arena()
local guide = mw.title.getCurrentTitle().rootText
local data = mw.loadJsonData( 'Module:Pokemon/' .. string.sub( shortname[ guide ], 9 ) .. '.json' )
local root = mw.html.create( 'table' )
:addClass(  'wikitable mid-table'  )
:css( 'text-align', 'center' )
local row = root:tag( 'tr' )
row:tag( 'th' ):wikitext( "Pokémon" )
row:tag( 'th' ):wikitext( "Requirements" )
row:tag( 'th' ):wikitext( "Points" )
row:tag( 'th' ):wikitext( "Loops" )
local levels = {}
for k in pairs( data[ "arena" ] ) do
table.insert(levels, k)
end
table.sort(levels)
local resort = table.remove(levels, 2)
table.insert(levels,10,resort)
for i = 1, #levels do
local k = levels[ i ]
        local row = root:tag( 'tr' )
row:tag( 'td' )
:attr( 'colspan', 4 )
:css( 'text-align', 'center' )
:css( { ['background-color'] = '#317103', color = 'white' } )
:wikitext( k )
for j,v in pairs( data[ "arena" ][ k ] ) do
local monData = data[ "browser" ][ j ]
local row = root:tag( 'tr' )
row:tag( 'td' ):wikitext( "[[File:" .. shortname[ guide ] .. ' ' .. monData.name .. ".png|" .. monData.name .. "]]" .. " " .. '[[' .. guide .. '/Browser#'.. monData.name .. '|' .. monData.name .. ']]' )
if v.requirement then
row:tag( 'td' ):wikitext( v.requirement )
else
row:tag( 'td' ):wikitext( "None" )
end
row:tag( 'td' ):wikitext( v.points )
row:tag( 'td' ):wikitext( monData.loops )
end
end
return tostring( root )
return tostring( root )
end
end

Revision as of 21:52, 15 May 2024

Documentation for this module may be created at Module:Pokemon/Ranger/Documentation

local getArgs = require( 'Module:Arguments' ).getArgs

local p = {}
local shortname = {
	["Pokémon Ranger"] = "Pokemon Ranger",
	["Pokémon Ranger: Shadows of Almia"] = "Pokemon Ranger SoA",
	["Pokémon Ranger: Guardian Signs"] = "Pokemon Ranger GS",
}

local function _move( guide, move, rating )
	out = ""
	if guide == "Pokémon Ranger" then
		if move == "None" then
			return "None"
		else
			for j = 1, rating do
				out = out .. "[[File:" .. shortname[ guide ] .. ' ' .. move .. ' ' .. "Icon.png|" .. move .. "]] "
			end
		end
	else
		if rating == "-" then
			out = "[[File:Pokemon Ranger SoA " .. move .. " Icon.png|" .. move .. "]]"
		else
			out = "[[File:Pokemon Ranger SoA " .. move .. ' ' .. rating .. " Icon.png|" .. move .. ' ' .. rating .. "]]"
		end
	end
	
	return out
end

local function _capture( args )
	local guide = mw.title.getCurrentTitle().rootText
	local data = mw.loadJsonData( 'Module:Pokemon/' .. string.sub( shortname[ guide ], 9 ) .. '.json' )
	local root = mw.html.create( 'table' )
					:addClass( 'wikitable mid-table' )
					:css( 'text-align', 'center' )

	local row = root:tag( 'tr' )
	row:tag( 'th' ):wikitext( "Pokémon" )
	row:tag( 'th' ):wikitext( "Field Move" )
	row:tag( 'th' ):wikitext( "Poké Assist" )
	if guide == "Pokémon Ranger" then
		row:tag( 'th' ):wikitext( "Loops" )
	end
	for i, v in ipairs( args ) do
		local monData = {}
		if data["browser"][v] then
			monData = data["browser"][v]
		else
			monData = data["browser-past"][v]
		end
		local row = root:tag( 'tr' )
		if monData.filename then
			prefix = monData.filename
		else
			prefix = shortname[guide]
		end
		row:tag( 'td' ):wikitext( "[[File:" .. prefix .. ' ' .. monData.name .. ".png|" .. monData.name .. "]]" .. " " .. '[[' .. guide .. '/Browser#'.. monData.name .. '|' .. monData.name .. ']]' )
		move = _move( guide, monData.move, monData.rating )
		row:tag( 'td' ):wikitext( move )
		row:tag( 'td' ):wikitext( monData.assist )
		if guide == "Pokémon Ranger" then
			if monData.loops2page == mw.title.getCurrentTitle().text then
				loops = monData.loops2
			else
				loops = monData.loops
			end
			row:tag( 'td' ):wikitext ( loops )
		end
	end

	return tostring( root )
end

local function _challenge( args )
	local guide = mw.title.getCurrentTitle().rootText
	local data = mw.loadJsonData( 'Module:Pokemon/' .. string.sub( shortname[ guide ], 9 ) .. '.json' )
	local root = mw.html.create( 'table' )
					:addClass( 'wikitable mid-table' )
					:css( 'text-align', 'center' )

	local row = root:tag( 'tr' )
	row:tag( 'th' ):wikitext( "Pokémon" )
	row:tag( 'th' ):wikitext( "Requirements" )
	row:tag( 'th' ):wikitext( "Points" )
	row:tag( 'th' ):wikitext( "Loops" )

	for i, v in ipairs( args ) do
		local monData = data[ "browser" ][ v ]
		local challengeData = data[ "challenges" ][ v ]
		local row = root:tag( 'tr' )
		row:tag( 'td' ):wikitext( "[[File:" .. shortname[ guide ] .. ' ' .. monData.name .. ".png|" .. monData.name .. "]]" .. " " .. '[[' .. guide .. '/Browser#'.. monData.name .. '|' .. monData.name .. ']]' )
		row:tag( 'td' ):wikitext( challengeData.requirement )
		row:tag( 'td' ):wikitext( challengeData.points )
		row:tag( 'td' ):wikitext( monData.loops )
	end

	return tostring( root )
end

local function _browser( guide, section )
	local frame = mw.getCurrentFrame()
	local data = mw.loadJsonData( 'Module:Pokemon/' .. string.sub( shortname[ guide ], 9 ) .. '.json' )
	local root = mw.html.create( 'table' )
					:addClass( 'wikitable mid-table sortable' )
					:css( 'text-align', 'center' )

	local row = root:tag( 'tr' )
	row:tag( 'th' ):wikitext( "#" )
	row:tag( 'th' ):wikitext( "Image" )
	row:tag( 'th' ):wikitext( "Name" )
	row:tag( 'th' ):wikitext( "Group" )
	row:tag( 'th' ):wikitext( "Field Move" )
	row:tag( 'th' ):wikitext( "Poké Assist" )
	if guide == "Pokémon Ranger" then
		row:tag( 'th' ):wikitext( "Loops" )
	end

	local nums = {}

	for k in pairs( data[ section ] ) do
		table.insert( nums, k )
	end
	table.sort( nums )

	for i = 1, #nums do
		local k, v = nums[ i ], data[ section ][ nums[ i ] ]
		local row = root:tag( 'tr' )
		row:tag( 'td' ):wikitext( k ):css( 'line-height', '20px' )
		if v.filename then
			prefix = v.filename
		else
			prefix = shortname[guide]
		end
		row:tag( 'td' ):wikitext( "[[File:" .. prefix .. ' ' .. v.name .. ".png|" .. v.name .. "]]" )
		row:tag( 'td' )
			:wikitext( frame:expandTemplate{ title = 'a', args = { v.name, frame:expandTemplate{ title = 'bp', args = { v.name } } } } )
			:css( 'text-align', 'left' )
		row:tag( 'td' ):wikitext( v.group )
		move = _move( guide, v.move, v.rating )
		row:tag( 'td' ):wikitext( move )
		row:tag( 'td' ):wikitext( v.assist )
		if guide == "Pokémon Ranger" then
			row:tag( 'td' ):wikitext( v.loops )
		end
	end

	return tostring( root )
end

function p.arena()
	local guide = mw.title.getCurrentTitle().rootText
	local data = mw.loadJsonData( 'Module:Pokemon/' .. string.sub( shortname[ guide ], 9 ) .. '.json' )
	local root = mw.html.create( 'table' )
				:addClass(  'wikitable mid-table'  )
				:css( 'text-align', 'center' )
	
	local row = root:tag( 'tr' )
	row:tag( 'th' ):wikitext( "Pokémon" )
	row:tag( 'th' ):wikitext( "Requirements" )
	row:tag( 'th' ):wikitext( "Points" )
	row:tag( 'th' ):wikitext( "Loops" )
	
	local levels = {}

	for k in pairs( data[ "arena" ] ) do
		 table.insert(levels, k)
	end
	table.sort(levels)

	local resort = table.remove(levels, 2)
	table.insert(levels,10,resort)

	for i = 1, #levels do
		local k = levels[ i ]
        local row = root:tag( 'tr' )
		row:tag( 'td' )
			:attr( 'colspan', 4 )
			:css( 'text-align', 'center' )
			:css( { ['background-color'] = '#317103', color = 'white' } )
			:wikitext( k )
		for j,v in pairs( data[ "arena" ][ k ] ) do
			local monData = data[ "browser" ][ j ]
			local row = root:tag( 'tr' )
			row:tag( 'td' ):wikitext( "[[File:" .. shortname[ guide ] .. ' ' .. monData.name .. ".png|" .. monData.name .. "]]" .. " " .. '[[' .. guide .. '/Browser#'.. monData.name .. '|' .. monData.name .. ']]' )
	
			if v.requirement then
				row:tag( 'td' ):wikitext( v.requirement )
			else
				row:tag( 'td' ):wikitext( "None" )
			end

			row:tag( 'td' ):wikitext( v.points )
			row:tag( 'td' ):wikitext( monData.loops )
		end
	end
	return tostring( root )
end

function p.browser( frame )
	local args = getArgs( frame, { wrappers = 'Template:Pokemon Ranger/Browser' } )
	local guide = mw.title.getCurrentTitle().rootText
	local section = args[1] or "browser"

	return _browser( guide, section )
end

function p.capture( frame )
	local args = getArgs( frame, { wrappers = 'Template:Pokemon Ranger/Capture' } )

	return _capture( args )
end

function p.challenge( frame )
	local args = getArgs( frame, { wrappers = 'Template:Pokemon Ranger/Challenge' } )

	return _challenge( args )
end

return p