4,951
edits
Falterfire (talk | contribs) (Added manual exception for Bird Nest Potions to fix the PotionNav template) |
Falterfire (talk | contribs) (Initial pass at getSmithingTable) |
||
Line 4: | Line 4: | ||
local p = {} | local p = {} | ||
local ItemData = mw.loadData('Module:Items/data') | |||
local SkillData = mw.loadData('Module:Skills/data') | local SkillData = mw.loadData('Module:Skills/data') | ||
local Constants = mw.loadData('Module:Constants/data') | local Constants = mw.loadData('Module:Constants/data') | ||
Line 192: | Line 193: | ||
result = result..'\r\nThe average value of a roll on the special fishing loot table is '..Icons.GP(Shared.round(lootValue, 2, 0)) | result = result..'\r\nThe average value of a roll on the special fishing loot table is '..Icons.GP(Shared.round(lootValue, 2, 0)) | ||
return result | |||
end | |||
function p.getSmithingTable(frame) | |||
local tableType = frame.args ~= nil and frame.args[1] or frame | |||
local bar = nil | |||
if tableType ~= 'Smelting' then | |||
bar = Items.getItem(tableType) | |||
if bar == nil then | |||
return 'ERROR: Could not find an item named '..tableType..' to build a smithing table with' | |||
elseif bar.type ~= 'Bar' then | |||
return 'ERROR: '..tableType.." is not a bar and thus can't be used for smithing" | |||
end | |||
end | |||
local smithList = {} | |||
for i, item in pairs(ItemData.Items) do | |||
if item.smithingLevel ~= nil then | |||
if tableType == 'Smelting' then | |||
if item.type == 'Bar' then | |||
table.insert(smithList, item) | |||
end | |||
else | |||
for j, req in pairs(item.smithReq) do | |||
if req.id == bar.id then | |||
table.insert(smithList, item) | |||
end | |||
end | |||
end | |||
end | |||
end | |||
local result = '{|class="wikitable sortable stickyHeader"' | |||
result = result..'\r\n|-class="headerRow-0"' | |||
result = result..'\r\n!Item!!Name!!'..Icons.Icon({'Smithing', 'skill', notext=true})..'!!XP!!Value!!Ingredients' | |||
table.sort(smithList, function(a, b) | |||
if a.smithingLevel ~= b.smithingLevel then | |||
return a.smithingLevel < b.smithingLevel | |||
else | |||
return a.name < b.name | |||
end end) | |||
for i, item in Shared.skpairs(smithList) do | |||
result = result..'\r\n|-' | |||
result = result..'\r\n|'..Icons.Icon({item.name, type='item', size='50', notext=true})..'||' | |||
local qty = item.smithingQty ~= nil and item.smithingQty or 1 | |||
if qty > 1 then | |||
result = result..item.smithingQty..'x ' | |||
end | |||
result = result..'||[['..item.name..']]' | |||
result = result..'||data-sort-value="'..item.smithingLevel..'"|'..Icons._SkillReq('Smithing', item.smithingLevel) | |||
result = result..'||'..item.smithingXP | |||
result = result..'||data-sort-value="'..item.sellsFor * qty..'"|'..Icons.GP(item.sellsFor) | |||
if qty > 1 then | |||
result = result..' (x'..qty..')' | |||
end | |||
result = result..'||' | |||
for i, mat in Shared.skpairs(item.smithReq) do | |||
matItem = Items.getItemByID(mat.id) | |||
if i > 1 then result = result..', ' end | |||
result = result..Icons.Icon({matItem.name, type='item', qty=mat.qty, notext=true}) | |||
end | |||
end | |||
result = result..'\r\n|}' | |||
return result | return result | ||
end | end | ||
return p | return p |