Die Dokumentation für dieses Modul kann unter Modul:Rätsel Infobox/Doku erstellt werden
--<pre>
local p = {}
local pgN = mw.title.getCurrentTitle().text
local infobox, pData
local categories = {}
local rData = mw.loadData('Modul:RätselDaten')
local function getCleanName(pageName) return pageName:match("[^%(]+") end
local function tt(p1, p2) return "<tt class=\"explain\" title=\"" .. p1 .. "\">" .. p2 .. "</tt>" end
local function SpielID() return rData[pgN].spiel end
local function NummerID() return rData[pgN].nr end
local function getTitle() return mw.loadData("Modul:RätselTitel")[pgN] end
local function isEmpty(arg) return not arg or arg == '' end
local function addCategory(category) categories[#categories+1] = "[[Kategorie:" .. category .. "]]" end
local function getPuzzle()
local nr = NummerID()
local game = SpielID()
if nr == "???" then
-- Hidden Door
local hd = {["2"] = 154, ["3"] = 169}
nr = hd[game]
end
pData = mw.loadData("Modul:RätselDaten/" .. game)
return pData[tonumber(nr)]
end
local getGame = {
["1"] = {anz = 135, anzW = "W27", titel = "Professor Layton und das geheimnisvolle Dorf", kuerzel = "Layton 1"},
["2"] = {anz = 153, anzW = "W33", titel = "Professor Layton und die Schatulle der Pandora", kuerzel = "Layton 2"},
["3"] = {anz = 168, anzW = "W35", titel = "Professor Layton und die verlorene Zukunft", kuerzel = "Layton 3"},
["4"] = {anz = 170, anzW = "W34", titel = "Professor Layton und der Ruf des Phantoms", kuerzel = "Layton 4"},
["5"] = {anz = 150, titel = "Professor Layton und die Maske der Wunder", kuerzel = "Layton 5"},
["6"] = {anz = 165, titel = "Professor Layton und das Vermächtnis von Aslant", kuerzel = "Layton 6"},
["VS"] = {anz = 82, titel = "Professor Layton vs. Phoenix Wright: Ace Attorney", kuerzel = "Layton vs. Wright"},
["MJ"] = {anz = 170, titel = "Layton’s Mystery Journey: Katrielle und die Verschwörung der Millionäre", kuerzel = "Layton’s Mystery Journey"}
}
function p.istRaetsel() if isEmpty(rData[pgN]) then return '' else return true end end
function p.Bild() return "[[Datei:PL" .. SpielID() .. "-" .. NummerID() .. ".png|link=]]" end
function p.Name() return getCleanName(pgN) end
function p.Anz() return getGame[SpielID()].anz end
function p.AnzW() return getGame[SpielID()].anzW end
function p.NummerID() return rData[pgN].nr end
function p.SpielID() return rData[pgN].spiel end
function p.NrJP() return rData[pgN].nrJP end
function p.Spiel() return getGame[SpielID()].titel end
function p.Kapitel() return rData[pgN].kapitel end
function p.Ort()
if not isEmpty(rData[pgN].ort) then
return "[[" .. rData[pgN].ort .. "]] [[Kategorie:Ort:" .. rData[pgN].ort .. "]]"
end
end
function p.Loeser()
if isEmpty(rData[pgN].loeser) then
return "[[Kategorie:Löser fehlt]]"
else
return "[[" .. rData[pgN].loeser .. "]] [[Kategorie:Gelöste Rätsel von " .. rData[pgN].loeser .. "]]"
end
end
function p.Vorschau(frame)
local name = frame.args[1]
local puzzle = getPuzzle()
local aNum = tonumber(NummerID())
local pPrev, pNext
if aNum then
pPrev = pData[aNum-1]
pNext = pData[aNum+1]
if not pPrev or tonumber(pPrev.nr) ~= aNum-1 then pPrev = nil end
if not pNext or tonumber(pNext.nr) ~= aNum+1 then pNext = nil end
end
if name == "l" and pPrev then
return "← '''[[" .. pPrev.name .. "|" .. (getCleanName(pPrev.name) or '?') .. "]]'''"
elseif name == "r" and pNext then
return "'''[[" .. pNext.name .. "|" .. (getCleanName(pNext.name) or '?') .. "]]''' →"
end
end
function p.Pikarat()
local s
if rData[pgN].pikaratJP then
s = rData[pgN].pikarat .. "<br />" .. rData[pgN].pikaratJP .. "<sup>JP</sup>"
else
if rData[pgN].pikarat then
s = rData[pgN].pikarat
end
end
if rData[pgN].pikarat then
return s .. "[[Kategorie:" .. rData[pgN].pikarat .. " Pikarat]]"
end
end
function p.Typ()
if not isEmpty(rData[pgN].typ) then
local cat1 = "[[Kategorie:Typ:" .. rData[pgN].typ .. "]]"
if not isEmpty(rData[pgN].typ2) then
local cat2 = cat1 .. "[[Kategorie:Typ:" .. rData[pgN].typ2 .. "]]"
return "[[:Kategorie:Typ:" .. rData[pgN].typ .. '|' .. rData[pgN].typ .."]]/[[:Kategorie:Typ:" .. rData[pgN].typ2 .. '|' .. rData[pgN].typ2 .. "]]" .. cat2
else
return "[[:Kategorie:Typ:" .. rData[pgN].typ .. '|' .. rData[pgN].typ .. "]]" .. cat1
end
end
end
function p.Person()
if not isEmpty(rData[pgN].person) then
local cat1 = "[[Kategorie:Gestellte Rätsel von " .. rData[pgN].person .. "]]"
if not isEmpty(rData[pgN].person2) then
local cat2 = cat1 .. "[[Kategorie:Gestellte Rätsel von " .. rData[pgN].person2 .. "]]"
return "[[" .. rData[pgN].person .. "]] und [[" .. rData[pgN].person2 .. "]]" .. cat2
else
return "[[" .. rData[pgN].person .. "]]" .. cat1
end
end
end
function p.Belohnung()
if not isEmpty(rData[pgN].belohnung) then return rData[pgN].belohnung
else return "Für dieses Rätsel gibt es keine Belohnung" end
end
function p.Handlung()
if rData[pgN].handlung then return "Wichtiges Rätsel für das Voranschreiten des Spiels [[Kategorie:Wichtige Rätsel für das Voranschreiten von " .. getGame[SpielID()].kuerzel .. "]]"
end
end
function p.AnzahlW(frame)
local code = frame.args[1]
if code == "EU" then
if isEmpty(rData[pgN].region) then
return "[[Datei:EU.png|link=]] " .. rData[pgN].nr .. "/" .. getGame[SpielID()].anzW
else
return ""
end
elseif code == "JP" and not isEmpty(rData[pgN].nrJP) then
return "<br /> [[Datei:JP.gif|link=]] " .. rData[pgN].nrJP .. "/W52"
elseif code == "US" and not isEmpty(rData[pgN].nrUS) then
return "<br /> [[Datei:Us.png|link=]] " .. rData[pgN].nrUS .. "/W27"
end
end
function p.Datum(frame)
local lang = frame.args[1]
if lang == "JP" then
if not isEmpty(rData[pgN].datumJP) then return rData[pgN].datumJP end
elseif lang == "US" then
if not isEmpty(rData[pgN].datumUS) then return rData[pgN].datumUS end
else return rData[pgN].datum end
end
function p.Titel(frame)
local code = frame.args[1]
-- Abbrechen, wenn internationales Wöchentliches Rätsel, außer für Japanisch
if not isEmpty(rData[pgN].region) and not (rData[pgN].region == "Jp-US" and code == "JP") then return "" end
local a = frame:getParent().args
local title
local hilf = {
["EN"] = {A = "Englischer Titel fehlt", B = getTitle().En},
["US"] = {B = getTitle().Us},
["UK"] = {B = getTitle().Uk},
["IT"] = {A = "Italienischer Titel fehlt", B = getTitle().It},
["FR"] = {A = "Französischer Titel fehlt", B = getTitle().Fr},
["SP"] = {A = "Spanischer Titel fehlt", B = getTitle().Sp},
["KR"] = {A = "Koreanischer Titel fehlt", B = getTitle().Kr},
--["NL"] = {B = "Niederländischer Titel fehlt", getTitle().Nl},
}
if code == "JP" then
if not isEmpty(getTitle().Romaji) then
title = tt(getTitle().Romaji, getTitle().Jp)
else
title = getTitle().Jp end
elseif code == "KR" then
if not isEmpty(getTitle().Romaja) then
title = tt(getTitle().Romaja, getTitle().Kr)
else
title = getTitle().Kr end
elseif code == "NL" then
if isEmpty(getTitle().Nl) and SpielID() ~= "1" then
title = "''Unbekannt''"
elseif SpielID() ~= "1" then
title = getTitle().Nl
end
else
if isEmpty(hilf[code].B) then
if code == "SP" or code == "IT" or code == "FR" then
title = "''Unbekannt''" .. "[[Kategorie:" .. hilf[code].A .. "]]"
end
else
title = hilf[code].B
end
end
return title
end
function p.Region()
if not isEmpty(rData[pgN].region) then
if rData[pgN].region == "Jp" then
return "[[Datei:JP.gif|link=]] Japan" .. "[[Kategorie:Rätsel aus der japanischen Version]]"
elseif rData[pgN].region == "US" then
return "[[Datei:Us.png|link=]] Nordamerika" .. "[[Kategorie:Rätsel aus der amerikanischen Version]]"
elseif rData[pgN].region == "Jp-US" then
return "[[Datei:JP.gif|link=]]" .. "[[Datei:Us.png|link=]]" .. "Japan und Nordamerika" .. "[[Kategorie:Rätsel aus der japanischen Version]]" .. "[[Kategorie:Rätsel aus der amerikanischen Version]]"
end
else
return "[[Kategorie:Region fehlt]]"
end
end
return p
--</pre>