Module:LU

--[[ Lua script to get Character Level Ups Tables

getLU: get Character Level Ups Table based on input parameters Parameters: event   = Event Name / IP Short Name (optional) cost    = Building Cost (Legendary Chests by default) (optional) lu1 = lu2 = lu3 = --]]

local p = {}

local util = require("Module:Utility") local LTE = require("Module:LTEvent").getLTE local EC = require("Module:EC").getEC local TOK = require("Module:CharacterToken").getToken local CHEST = require("Module:ECR").getITEM

local time = {"Instant", "36s", "6m", "35m", "60m", "2h", "4h", "8h", "16h", "24h"} local gems = {"", "1", "1", "1", "2", "2,", "3", "3", "3", "5"} local xp  = {"", "10", "12", "14", "17", "20", "23", "26", "29", "30"}

local function luItems(inStr) local tIn = mw.text.split(inStr, "%s*%$%s*") local tOut = {} for idx = 1, #tIn do		table.insert(tOut, tIn[idx]) end return tOut end

local function oneItem(item, count, withName) local nCount = tonumber((string.gsub(count or "", "[,]", ""))) or 0 --skip item if count = 0 if nCount == 0 then return "" end

local tItem = {"", "", " " .. util.th_comma(nCount), (withName and " " or ""), "", "",			(withName and " " or ""), }

if item:match("^EC") then tItem[1] = '| style="width: 15%;"|' tItem[2] = EC({item}) if withName then tItem[5] = EC({item, "L", S=(nCount == 1)}) end else tItem[1] = '| style="width: 13%;"|' tItem[2] = TOK({item, "C"}) if withName then tItem[5] = TOK({item, "L"}) if nCount > 1 then tItem[6] = "s" end end end

return table.concat(tItem) end

function p.getLU(frame) local tArgs = util.getArgs(frame)

local prize = {} local lu   = {}

for arg, value in pairs(tArgs) do		local cat, n = tostring(arg):match('^(%a+)([1-9]%d*)$') local num = tonumber(n) if num then if cat == "lu" then lu[num] = luItems(value) end end end

local colspan = false

if not lu[1] or lu[1] == "" then lu[1] = {tArgs["cost"] or CHEST({"L"})} colspan = true end

local tOut = {'{| class="article-table" style="width: 100%; text-align: center; line-height: 1.0;"\n', '',			'! style="width: 15%; text-align: center;"|Level\n! style="text-align: center;" colspan="4"|Requirements\n! style="width: 10%; text-align: center;"|Time\n! style="width: 20%; text-align: center;"|Rewards\n' }

if tArgs["event"] then local eName, eType = mw.ustring.match(tArgs["event"], "^(.-)%s*$%s*(.-)$") if not eName then eName = tArgs["event"] end tOut[2] = '! colspan="7" style="text-align: center;"|' .. LTE({eName, (eType or "N")}) .. '\n|-\n' end

local prevPrize = {}

for luNo, luData in ipairs(lu) do		table.insert(tOut, "|-\n| nowrap|") if luNo == 1 then table.insert(tOut, "Welcome") else table.insert(tOut, table.concat{"Level ", luNo}) end table.insert(tOut, "\n")

if colspan == true and luNo == 1 then table.insert(tOut, '| colspan="4"|') table.insert(tOut, luData[1]) table.insert(tOut, '\n|Instant\n| nowrap|\n') else for idx = 1, 7 do				if idx == 5 then table.insert(tOut, "| ") if luNo == 2 and tArgs["event"] then table.insert(tOut, (luData[idx] or "6s")) else table.insert(tOut, (luData[idx] or time[luNo])) end table.insert(tOut, "\n") elseif idx == 6 then table.insert(tOut, "| nowrap|") table.insert(tOut, EC({"Gems"})) table.insert(tOut, (luData[idx] or gems[luNo])) elseif idx == 7 then table.insert(tOut, ", ") table.insert(tOut, EC({"XP"})) table.insert(tOut, (luData[idx] or xp[luNo])) table.insert(tOut, "\n") elseif luData[idx] then local iName = prize[idx] local iCount = string.match(luData[idx], "^[%d%,]*$") if not iCount then iName, iCount = string.match(luData[idx], "^([^#]-)%s*#*%s*([%d%,]*)$") if iCount == "" then iCount = "1" end end if iName then table.insert(tOut, oneItem(iName, iCount, iName ~= prevPrize[idx])) end prize[idx]    = iName prevPrize[idx] = iName table.insert(tOut, "\n") end end end end

return table.concat(tOut) .. "|}\n" end

return p