Module:NPC Quest Appearance

From Final Fantasy XIV Online Wiki
Jump to navigation Jump to search
Documentation for Module:NPC Quest Appearance does not exist yet [create] (How does this work?)
local p = {}

function p.resolve(frame)
    local page = frame.args.page
    local questIDStr = (frame.args.questid or ""):gsub(",", "")
    local questID = tonumber(questIDStr)
    
    local function getPageAppearance()
        local r = mw.smw.ask({ "[[" .. page .. "]]", "?Has appearance#", "limit=1" })
        if r and r[1] then return r[1]["Has appearance"] or "" end
        return ""
    end

    local fallback = frame.args.fallback ~= nil and frame.args.fallback or getPageAppearance()

    if not page or not questID then
        return fallback
    end

    local results = mw.smw.ask({
        "[[-Has subobject::" .. page .. "]]",
        "[[Has internal ID::≤" .. questID .. "]]",
        "?Has appearance#",
        "sort=Has internal ID",
        "order=desc",
        "limit=1"
    })

    if results and results[1] then
        return results[1]["Has appearance"] or fallback
    end

    return fallback
end

function p.test(frame)
    local page = frame.args.page
    if not page then return "No page specified" end

    local results = mw.smw.ask({
        "[[-Has subobject::" .. page .. "]]",
        "?Has appearance#",
        "?Has internal ID#",
        "limit=10"
    })

    if results == nil then return "NIL" end
    if #results == 0 then return "EMPTY" end
    return mw.dumpObject(results)
end

return p