4,951
edits
Falterfire (talk | contribs) (Tweaked formatting on getCostString) |
Falterfire (talk | contribs) (Tinkered with p.getItemShopTable to match new data formatting (and moved here from Items/SourceTables) |
||
Line 8: | Line 8: | ||
local Constants = require('Module:Constants') | local Constants = require('Module:Constants') | ||
local Areas = require('Module:CombatAreas') | local Areas = require('Module:CombatAreas') | ||
--Cape of Completion is a special purchase that has to be spoofed since it's not in the code | |||
function p.getCapeOfCompletionPurchase() | |||
local item = Items.getItem('Cape of Completion') | |||
local purchase = { category = 'Skillcape', id = -1} | |||
purchase.name = 'Cape of Completion' | |||
purchase.description = item.description | |||
purchase.cost = {gp = item.buysFor} | |||
purchase.unlockRequirements = {text = '100% Completion Log', items = {}} | |||
purchase.contains = {items = {{item.id, 1}}} | |||
return purchase | |||
end | |||
function p.processPurchase(category, purchaseID) | |||
local purchase = Shared.clone(ShopData.Shop[category][purchaseID + 1]) | |||
purchase.id = purchaseID | |||
purchase.category = category | |||
return purchase | |||
end | |||
function p.getCostString(cost) | function p.getCostString(cost) | ||
Line 69: | Line 90: | ||
table.insert(reqArray, Icons.Icon({purchase.name, type=(isUpgrade and 'upgrade' or 'item')})..' Purchased') | table.insert(reqArray, Icons.Icon({purchase.name, type=(isUpgrade and 'upgrade' or 'item')})..' Purchased') | ||
end | end | ||
end | |||
if reqs.text ~= nil then | |||
table.insert(reqArray, reqs.text) | |||
end | end | ||
Line 116: | Line 141: | ||
return p._getShopTable(shopCat) | return p._getShopTable(shopCat) | ||
end | end | ||
end | |||
function p.getItemCostArray(itemID) | |||
local purchaseArray = {} | |||
for catName, cat in Shared.skpairs(ShopData.Shop) do | |||
for j, purchase in Shared.skpairs(cat) do | |||
if purchase.cost.items ~= nil then | |||
for k, costLine in Shared.skpairs(purchase.cost.items) do | |||
if costLine[1] == itemID then | |||
table.insert(purchaseArray, p.processPurchase(catName, j - 1)) | |||
break | |||
end | |||
end | |||
end | |||
end | |||
end | |||
return purchaseArray | |||
end | |||
function p.getItemSourceArray(itemID) | |||
local purchaseArray = {} | |||
for catName, cat in Shared.skpairs(ShopData.Shop) do | |||
for j, purchase in Shared.skpairs(cat) do | |||
if purchase.contains.items ~= nil and purchase.contains.items ~= nil then | |||
for k, containsLine in Shared.skpairs(purchase.contains.items) do | |||
if containsLine [1] == itemID then | |||
table.insert(purchaseArray, p.processPurchase(catName, j - 1)) | |||
break | |||
end | |||
end | |||
end | |||
end | |||
end | |||
if itemID == 903 then --Special Cape of Completion thing | |||
table.insert(purchaseArray, p.getCapeOfCompletionPurchase()) | |||
end | |||
return purchaseArray | |||
end | |||
function p._getPurchaseTable(purchase) | |||
local result = '{| class="wikitable"\r\n|-' | |||
result = result..'\r\n!colspan="2"|[[Shop]] Purchase' | |||
if purchase.contains.items ~= nil and Shared.tableCount(purchase.contains.items) > 1 then | |||
result = result..' - '..Icons.Icon({purchase.name, type='item'}) | |||
end | |||
result = result..'\r\n|-\r\n!style="text-align:right;"|Cost' | |||
result = result..'\r\n|'..p.getCostString(purchase.cost) | |||
result = result..'\r\n|-\r\n!style="text-align:right;"|Requirements' | |||
result = result..'\r\n|'..p.getRequirementString(purchase.unlockRequirements) | |||
result = result..'\r\n|-\r\n!style="text-align:right;"|Contains' | |||
local containArray = {} | |||
if purchase.contains.items ~= nil then | |||
for i, itemLine in Shared.skpairs(purchase.contains.items) do | |||
local item = Items.getItemByID(itemLine[1]) | |||
table.insert(containArray, Icons.Icon({item.name, type='item', qty=itemLine[2]})) | |||
end | |||
end | |||
if purchase.charges ~= nil and purchase.charges > 0 then | |||
table.insert(containArray, '+'..purchase.charges..' '..Icons.Icon({purchase.name, type='item'})..' Charges') | |||
end | |||
result = result..'\r\n|'..table.concat(containArray, '<br/>') | |||
result = result..'\r\n|}' | |||
return result | |||
end | |||
function p._getItemShopTable(item) | |||
local tableArray = {} | |||
local purchaseArray = p.getItemSourceArray(item.id) | |||
for i, purchase in Shared.skpairs(purchaseArray) do | |||
table.insert(tableArray, p._getPurchaseTable(purchase)) | |||
end | |||
return table.concat(tableArray, '\r\n<br/>\r\n') | |||
end | |||
function p.getItemShopTable(frame) | |||
local itemName = frame.args ~= nil and frame.args[1] or frame | |||
local item = Items.getItem(itemName) | |||
if item == nil then | |||
return "ERROR: No item named "..itemName.." exists in the data module" | |||
end | |||
return p._getItemShopTable(item) | |||
end | end | ||
return p | return p |