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 '' 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 = "Work In Progress|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 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 return retText end, -- Default (token rewards table row) ["D"] = function local tRet = {"|-\n|", "", "\n|", "", "",									"", ": ", "", "", "", "", "\n|\n|", "", "\n| 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

return p

-- --