Professor Layton Wiki
Advertisement
Professor Layton Wiki

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>
Advertisement