dev

This module was made as a sandbox for the user User:Hakazumi. This documentation is kept to prevent redlinks.


local p = {}

function p.main(frame)
	local args = require("Module:Arguments").getArgs(frame)
	return p._main(args, frame)
end

function p._main(args, frame)
	local variant = args.variant
	local stat = args.stat
	local awakeningNodes = tonumber(args.awakeningNodes)
	local basepagename = mw.title.getCurrentTitle().text

	local function currency(icon, amount)
		return frame:expandTemplate{ title = "Icon/Currency", args = { icon } } .. " " .. amount
	end

	local function statIncrease(value)
		return string.format("%s Increase %s", stat, value)
	end

	local rows = {}

	-- Acquired Hero (exclude for "The Knight")
	if variant ~= "The Knight" then
		if variant == "Collab" then
			table.insert(rows, { "'''Acquired Hero'''", currency("Diamond", 60) })
		else
			table.insert(rows, { "'''Acquired Hero'''", statIncrease("+0.2%") or "???" })
		end
		table.insert(rows, { "Acquire the hero " .. basepagename .. ".", "" })
	end

	-- 2-Star Evolve (Normal and The Knight only)
	if variant == "The Knight" then
		table.insert(rows, { "'''2-Star Evolve'''", statIncrease("+0.4%") })
		table.insert(rows, { "Evolve the hero " .. basepagename .. " to 2 stars.", "" })
	elseif variant == "Normal" then
		table.insert(rows, { "'''2-Star Evolve'''", currency("Diamond", 20) })
		table.insert(rows, { "Evolve the hero " .. basepagename .. " to 2 stars.", "" })
	end

	-- 3-Star Evolve
	local star3 = {
		Normal = 30,
		Rare = 20,
		["The Knight"] = 20,
	}
	if variant == "Normal" or variant == "Rare" or variant == "The Knight" then
		table.insert(rows, { "'''3-Star Evolve'''", currency("Diamond", star3[variant] or "???") })
		table.insert(rows, { "Evolve the hero " .. basepagename .. " to 3 stars.", "" })
	end
	
	-- 4-Star Evolve
	local star4 = {}
	for _, v in ipairs({ "Normal", "Rare", "The Knight", "Myth (Rare)" }) do
		star4[v] = 40
	end
	for _, v in ipairs({ "Collab", "Unique", "Myth" }) do
		star4[v] = 60
	end
	table.insert(rows, { "'''4-Star Evolve'''", currency("Diamond", star4[variant] or "???") })
	table.insert(rows, { "Evolve the hero " .. basepagename .. " to 4 stars.", "" })

	-- 5-Star Evolve
	local star5 = {
		Normal = "+0.1%",
		["The Knight"] = "+0.6%",
	}
	for _, v in ipairs({ "Rare", "Myth (Rare)", "Unique", "Myth" }) do
		star5[v] = "+0.3%"
	end
	if variant == "Collab" then
		table.insert(rows, { "'''5-Star Evolve'''", currency("Diamond", 80) })
	else
		table.insert(rows, { "'''5-Star Evolve'''", statIncrease(star5[variant] or "???") })
	end
	table.insert(rows, { "Evolve the hero " .. basepagename .. " to 5 stars.", "" })

	-- Level Up
	if variant == "Collab" or variant == "Unique" or variant == "Myth" then
		table.insert(rows, { "'''Level Up'''", currency("Diamond", 80) })
	else
		table.insert(rows, { "'''Level Up'''", currency("Diamond", 60) })
	end
	table.insert(rows, { "Level the hero " .. basepagename .. " up to 60.", "" })

	-- Hero Limit Break
	if variant == "Collab" or variant == "Unique" or variant == "Myth" then
		table.insert(rows, { "'''Hero Limit Break'''", currency("Diamond", 100) })
	else
		table.insert(rows, { "'''Hero Limit Break'''", currency("Diamond", 80) })
	end
	table.insert(rows, { "Limit break the hero " .. basepagename .. " 5 times.", "" })

	-- Acquired Awakening Node
	local awakenVal = {
		Normal = "+0.3%",
		["The Knight"] = "+1.0%",
	}
	for _, v in ipairs({ "Rare", "Myth (Rare)", "Unique", "Myth" }) do
		awakenVal[v] = "+0.5%"
	end
	if variant == "Collab" then
		table.insert(rows, { "'''Acquired Awakening Node'''", currency("Diamond", 100) })
	else
		table.insert(rows, { "'''Acquired Awakening Node'''", statIncrease(awakenVal[variant]) })
	end
	table.insert(rows, {
		string.format("Unlock %d of the hero %s's Awakening Nodes.", awakeningNodes or "???", basepagename),
		""
	})

	-- Hero Blessing (only if NOT Normal)
	if variant ~= "Normal" then
		table.insert(rows, { "'''Hero Blessing'''", currency("Diamond", 50) })
		table.insert(rows, { "Bless the hero " .. basepagename .. " 3 times.", "" })
	end

	-- Hero Ascent
	if variant == "The Knight" then
		table.insert(rows, { "'''Ascent'''", statIncrease("+1.0%") or "???" })
		table.insert(rows, { "Ascent the hero " .. basepagename .. ".", "" })
	elseif variant == "Ascent" then
		table.insert(rows, { "'''Ascent'''", statIncrease("+0.5%") or "???" })
		table.insert(rows, { "Ascent the hero " .. basepagename .. ".", "" })
	end

	-- Hero Myth
	if variant == "The Knight" or variant == "Myth" or variant == "Myth (Rare)" then
		table.insert(rows, { "'''Hero Myth'''", currency("Diamond", 50) })
		table.insert(rows, { "Myth the hero " .. basepagename .. ".", "" })
	end

	-- Build HTML
	local html = mw.html.create("table")
	html:addClass("wikitable")

	html:tag("tr")
		:tag("th"):wikitext("Achievement"):done()
		:tag("th"):wikitext("Reward"):done()

	for i = 1, #rows, 2 do
		html:tag("tr")
			:tag("td"):wikitext(rows[i][1]):done()
			:tag("td"):attr("rowspan", "2"):wikitext(rows[i][2]):done()
		html:tag("tr")
			:tag("td"):wikitext(rows[i + 1][1]):done()
	end

	return tostring(html)
end

return p