Module:Item required for quest
Jump to navigation
Jump to search
local argsUtil = require("Module:ArgsUtil")
local cargoUtil = require("Module:CargoUtil")
local iconListModule = require("Module:Icon list")
local p = {}
function p.main(frame)
local args = argsUtil.merge(frame.args, frame:getParent().args)
local itemName = args[1] or mw.title.getCurrentTitle().text
local itemName2 = args[2]
local whereClause = "missionRequirements.requirements='" .. itemName:gsub("'", "''") .. "'"
if itemName2 then
whereClause = whereClause .. " OR missionRequirements.requirements='" .. itemName2:gsub("'", "''") .. "'"
end
local queryOptions = {
tables = "Missions, missionNPCs, missionRequirements, missionRequirements=mr2, missionRewards",
fields = [[
Missions._pageTitle,
Missions.name,
Missions.objective,
Missions.requiresText,
GROUP_CONCAT(DISTINCT CONCAT(mr2.requirements, IF(mr2.quantity IS NOT NULL, CONCAT('*', mr2.quantity), ''), '/', COALESCE(mr2.quality, 0)))=requirements,
GROUP_CONCAT(DISTINCT CONCAT(missionRewards.rewards, IF(missionRewards.quantity IS NOT NULL, CONCAT('*', missionRewards.quantity), '')))=rewards
]],
join = "Missions.missionID=missionNPCs.missionID, Missions.missionID=missionRequirements.missionID, Missions.missionID=mr2.missionID, Missions.missionID=missionRewards.missionID",
where = whereClause,
groupBy = "Missions.missionID",
limit = 100,
orderBy = ""
}
local results = cargoUtil.queryData(queryOptions)
-- Debugging: Log the raw results
mw.logObject(results)
-- Check if results are empty
if not results or #results == 0 then
return "No missions require '''" .. itemName .. "''' to complete them."
end
-- Build the result table
local html = mw.html.create('table')
:addClass('lkg-table tablelarge tdt3 td20wid3 tdt4 td20wid4')
:tag('tr')
:tag('th'):wikitext('Mission Name'):done()
:tag('th'):wikitext('Mission Objective'):done()
:tag('th'):wikitext('Mission Requirements'):done()
:tag('th'):wikitext('Mission Rewards'):done()
:done()
for _, row in ipairs(results) do
-- Debugging: Log each row's data to check its structure
mw.log("Row data:", row)
-- Retrieve and log specific fields
local pagename = row["Missions._pageTitle"]
local questName = row["Missions.name"]
local objective = row["Missions.objective"]
local requiresText = row["Missions.requiresText"]
local requirements = row["requirements"]
local rewards = row["rewards"]
mw.log("Page Name:", pagename, "Quest Name:", questName, "Objective:", objective, "Requires Text:", requiresText, "Requirements:", requirements, "Rewards:", rewards)
-- Pass the requirements and rewards to the Icon list module
local reqList = tostring(iconListModule._main{ requirements, delim = ',' })
local rewardsList = tostring(iconListModule._main{ rewards, delim = ',' })
-- Build the table row with retrieved data
html:tag('tr')
:tag('td'):wikitext("[[" .. pagename .. "|" .. (questName or 'N/A') .. "]]"):done()
:tag('td'):wikitext(objective or 'N/A'):done()
:tag('td'):wikitext(requiresText or reqList or 'N/A'):done()
:tag('td'):wikitext(rewardsList or 'N/A'):done()
:done()
end
return tostring(html)
end
return p