Module:Building

--[==[-- -- Lua script to get Building Information -- building: get Building data based on input parameters 1 = Building Name 2 = Enchantment Number 3 = Event Name / IP Short Name

Unknown is returned if building is not in data. --]==]

local p = {}

---[=[ For testing remove 1 '-' from start of line local attrData = mw.loadData('Module:Building/data') --[==[]=] local attrData = { -- The Little Mermaid -- ["Under the Sea"] = { ["A"] = "Jamming with a Hot Crustacean Band", ["R"] = { ["magic"] = {"4h", 12, 155, true}, ["tlm"] = {"4h", 23, 32, true}, ["wir"] = {"4h", 12, 50}, }   }, } --]==]

local EC = require("Module:EC").getEC local icon = require("Module:CharacterAvatar").getAvatar local npc = require("Module:NPC").getNPC local lte = require("Module:LTEvent").getLTE local util = require("Module:Utility")

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

local buildName = tArgs[1] or "" local enchLvl = tArgs[2] or "" local event = tArgs[3] or ""

buildName = buildName:gsub("^%s*(.-)%s*$", "%1") or ''

if buildName == "" then buildName = mw.title.getCurrentTitle.text else buildName = mw.text.decode(buildName, false) end enchLvl = enchLvl:upper:gsub("^%s*(.-)%s*$", "%1") or '' event = event:lower:gsub("^%s*(.-)%s*$", "%1") or ''

local outType = "D"

if enchLvl:match("^[ACRD]$") then outType = enchLvl enchLvl = "" end

enchLvl = enchLvl:gsub("[^0-5]", "")

local data = {}

if attrData[buildName] then data = attrData[buildName] else data = { ["A"] = "?", ["R"] = { ["magic"] = {"?h", "?", "?"}, }	   }	    buildName = "Unknown" end

local reward = ""

if event ~= "" and data["R"][event] then reward = event else reward = "magic" -- current event (no magic entry yet) -- pick the first reward key (should be for current event) if not data["R"]["magic"] then for k, v in pairs(data["R"]) do				reward = k				break end end end

local tFunc = { -- Activity ["A"] = function return data["A"] end, -- Collection Time ["C"] = function local retText = "" local space = ""

if event ~= "" then for k, v in pairs(data["R"]) do							if k ~= "magic" then local tRow = { space, v[1], "", "",									" (", lte({k, nil, "K"}), " Event) " }								retText = retText .. table.concat(tRow) space = " " end end else retText = data["R"][reward][1] end return retText end, -- Rewards only ["R"] = function local retText = "" local space = ""

if event ~= "" then for k, v in pairs(data["R"]) do							if k ~= "magic" then local tRow = { space, EC({"XP"}), v[2], ", ", EC({k}), v[3], "", "",									" (", lte({k, nil, "K"}), " Event) " }								if v[4] then tRow[7] = ", " tRow[8] = npc({"Gold Trophy", nil, nil, nil, k}) end retText = retText .. table.concat(tRow) space = " " end end else if data["R"][reward][1] ~= "" then local tRow = { "", EC({"XP"}), data["R"][reward][2], ", ", EC({reward}), data["R"][reward][3], "", "",							}							if data["R"][reward][4] then tRow[7] = ", " tRow[8] = npc({"Gold Trophy", nil, nil, nil, (reward ~= "magic" and reward or "")}) end retText = retText .. table.concat(tRow) end end return retText end, -- Default (token rewards table row) ["D"] = function local tRet = {"|-\n|", "", "\n|", "", "",									"", ": ", "", "", "", "", "\n|\n|", "", "\n| colspan=\"2\" nowrap|", "", "", ", ", "", "", "",									""					}					tRet[ 2] = icon({"Kingdom", event or ""}) tRet[ 6] = buildName tRet[ 8] = data["A"] if data["R"][reward][1] ~= "" then tRet[13] = data["R"][reward][1] tRet[15] = EC({"XP"}) tRet[16] = data["R"][reward][2] tRet[18] = EC({reward}) tRet[19] = data["R"][reward][3] else tRet[17] = "" end

-- If trophy to be displayed before attraction name --if data["R"][reward][4] then --	tRet[21] = npc({"Gold Trophy", nil, nil, nil, (reward ~= "magic" and reward or "")}) --end if data["R"][reward][4] then tRet[20] = ", " tRet[21] = npc({"Gold Trophy", nil, nil, nil, (reward ~= "magic" and reward or "")}) end if enchLvl ~= "" then tRet[ 9] = " ''* Enchantment Level " tRet[10] = tostring(enchLvl) tRet[11] = "'' " end return table.concat(tRet) end, }	return tFunc[outType] end

function p.getTrophies(frame) local tRet = {}

for _, data in ipairs(attrData) do   	for att, item in pairs(data) do    		if data["R"]["magic"][4] then tRet = {"|-\n|", "", "\n|", "", "",							"", ": ", "", "", "", "", "\n|\n|", "", "\n| colspan=\"2\" nowrap|", "", "", ", ", "", "", "\n" }				tRet[ 2] = icon({"Kingdom"}) tRet[ 6] = att tRet[ 8] = item["A"] tRet[13] = item["R"]["magic"][1] tRet[15] = EC({"XP"}) tRet[16] = item["R"]["magic"][2] tRet[18] = EC({"Magic"}) tRet[19] = item["R"]["magic"][3] end end end

return tRet end

function p.getTrophies(frame) local tRet = {} local tAtt = {} local attractions = {} --   	for _, data in pairs(attrData) do --    		if data["R"]["magic"][4] then --       		table.insert(attractions, data) --       	end --		end --		table.sort(attractions, function(a,b) return a["R"]["magic"][1] < b["R"]["magic"][1] end) for att, item in pairs(attrData) do   		if item["R"]["magic"][4] then tRet = {"|-\n|", "", "\n|", "", "",							"", ": ", "", "", "", "", "\n|\n|", "", "\n| colspan=\"2\" nowrap|", "", "", ", ", "", "", "\n" }

tRet[ 2] = icon({"Kingdom"}) tRet[ 6] = att tRet[ 8] = item["A"] tRet[13] = item["R"]["magic"][1] tRet[15] = EC({"XP"}) tRet[16] = item["R"]["magic"][2] tRet[18] = EC({"Magic"}) tRet[19] = item["R"]["magic"][3] table.insert(tAtt, table.concat(tRet)) end end

return table.concat(tAtt) end

return p --