This module returns a formatted (using Template:Item list) list of an item's crafting cost, if any.
Use the wrapper template Template:Crafting cost to use this module.
Usage
Pass the item you want the list for as the first argument, like so:
{{Crafting cost|Combat Helmet}}
Which gives:
- 4 Radio Equipment
- 1 Hardened Bone Plates
- 17000 K-Marks
- 1hr 15min
If an item does not have a crafting recipe, it will look like this:
Lua error: This item does not have a crafting cost.
Attachments
Since attachments share their in game name, you must pass the rarity as the second argument if that attachment has multiple variants. Attachments without multiple variants do not require this argument.
{{Crafting cost|Medium Extended|Uncommon}}
Which gives, as expected: Lua error: This item does not have a crafting cost.
Nesting
It is possible to make the resulting Item list nested one level deep. To do so, add nested=yes
to the template parameters.
- Printing:
- 4 Radio Equipment
- 1 Hardened Bone Plates
- 17000 K-Marks
- 1hr 15min
local p = {} --p stands for package
p.loadedData = mw.loadJsonData( "Module:Item infobox/itemData.json" )
local args = mw.getCurrentFrame().args
for k, v in pairs(p.loadedData) do
if args[1] == v["inGameName"] then
p.data = p.loadedData[k]
break
end
end
function p.main( frame )
local div = mw.html.create( "div" )
local cost = p.data['cost']
if cost == nil then
error('This item does not have a crafting cost', 0)
return;
end
local craftCost = cost['CraftingStation']
if craftCost == nil then
error('This item does not have a crafting cost', 0)
return
end
local data = {}
for c, d in pairs(craftCost['items']) do
table.insert(data, d['inGameName'])
table.insert(data, d['amount'])
end
local timeString = '\n*' .. frame:expandTemplate{ title = 'Time', args = { craftCost['time'] } }
return frame:expandTemplate{ title = 'Item list', args = data } .. timeString
end
return p