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
- 17,000 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:
- 2 Compound Sheets
- 2 Salvaged Insulation
- 1,200 K-Marks
- 6min
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
- 17,000 K-Marks
- 1hr 15min
local p = {} --p stands for package
p.loadedData = mw.loadJsonData( "Module:Item infobox/itemData.json" )
local args = mw.getCurrentFrame().args
-- find the item data for our input arg
for k, v in pairs(p.loadedData) do
if args[1] == v["inGameName"] then
if args[2] == nil or args[2] == '' then
p.data = p.loadedData[k]
break
end
if args[2] == v["rarity"] then
p.data = p.loadedData[k]
break
end
end
end
function p.main( frame )
--return mw.dumpObject(args)
-- fetch our craft data
local cost = p.data['cost']
local craftCost = cost['CraftingStation']
-- verify if this item has this recipe
if cost == nil or craftCost == nil then
error('This item does not have a crafting cost', 0)
return;
end
-- create a list with our data in the format: {"Sample Container", 5, "K-Marks", 4,000}
local data = {}
local langObject = mw.language.new( 'en' )
for c, d in pairs(craftCost['items']) do
table.insert(data, d['inGameName'])
table.insert(data, langObject:formatNum(d['amount'] ))
end
-- add the crafting time to the end and return it
local listStars = '*'
-- add nesting if frame.args.nested is true
if frame.args['nested'] == 'true' then
listStars = '**'
data.nested = 'yes'
end
local timeString = '\n' .. listStars .. frame:expandTemplate{ title = 'Time', args = { craftCost['time'] } }
--return mw.dumpObject(data)
return frame:expandTemplate{ title = 'Item list', args = data } .. timeString
end
return p