17,101
edits
(Substitute links with Icons.Icon() where possible to benefit from ambiguous link handling) |
(getThievingAreaTable: Initial implementation) |
||
Line 566: | Line 566: | ||
return result | return result | ||
end | |||
function p.getThievingAreaTable(frame) | |||
local resultPart = {} | |||
table.insert(resultPart, '{| class="wikitable sortable stickyHeader"') | |||
table.insert(resultPart, '\r\n|- class="headerRow-0"') | |||
table.insert(resultPart, '\r\n!Area!!'..Icons.Icon({'Thieving', type='skill', notext=true})..' Level!!NPCs!!Unique Drops') | |||
local areaArray = Shared.clone(SkillData.Thieving.Areas) | |||
table.sort(areaArray, function(a, b) return a.id < b.id end) | |||
for i, area in ipairs(areaArray) do | |||
local minLevel, npcList, areaItemList = nil, {}, {} | |||
-- Build NPC list & determine level for area, this is the minimum | |||
-- Thieving level required for all NPCs within that area | |||
if area.npcs ~= nil and Shared.tableCount(area.npcs) > 0 then | |||
for j, npcID in ipairs(area.npcs) do | |||
-- Don't bother cloning the NPC below since we aren't modifying any part of it | |||
local npc = SkillData.Thieving.NPCs[npcID + 1] | |||
if minLevel == nil or npc.level < minLevel then | |||
minLevel = npc.level | |||
end | |||
table.insert(npcList, Icons.Icon({npc.name, type='thieving'})) | |||
end | |||
else | |||
table.insert(npcList, '') | |||
end | |||
-- Build area unique item list | |||
if area.uniqueDrops ~= nil and Shared.tableCount(area.uniqueDrops) > 0 then | |||
for k, drop in ipairs(area.uniqueDrops) do | |||
local areaItem = Items.getItemByID(drop.itemID) | |||
if areaItem == nil then | |||
table.insert(areaItemList, 'Unknown[[Category:Pages with script errors]]') | |||
else | |||
local iconDef = {areaItem.name, type='item'} | |||
if drop.qty > 1 then | |||
iconDef.qty = drop.qty | |||
end | |||
table.insert(areaItemList, Icons.Icon(iconDef)) | |||
end | |||
end | |||
else | |||
table.insert(areaItemList, '') | |||
end | |||
-- Generate table row | |||
table.insert(resultPart, '\r\n|-') | |||
table.insert(resultPart, '\r\n|' .. area.name) | |||
table.insert(resultPart, '\r\n|' .. Icons._SkillReq('Thieving', minLevel)) | |||
table.insert(resultPart, '\r\n|' .. table.concat(npcList, '<br/>')) | |||
table.insert(resultPart, '\r\n|' .. table.concat(areaItemList, '<br/>')) | |||
end | |||
table.insert(resultPart, '\r\n|}') | |||
return table.concat(resultPart) | |||
end | end | ||