Module:Crafting
Script error: The function "docPage" does not exist.
This module implements {{crafting}}
.
Parent arguments are automatically merged with directly passed arguments (the latter overwriting the former).
Dependencies
See also
cs:Modul:Crafting
de:Modul:Herstellen
es:Módulo:Fabricación
fr:Module:Fabrication
it:Modulo:Fabbricazione
ja:モジュール:Crafting
ko:모듈:Crafting
lzh:模組:Crafting
nl:Module:Vervaardiging
pl:Moduł:Crafting
pt:Módulo:Crafting
ru:Модуль:Крафт
th:มอดูล:Crafting
uk:Модуль:Майстрування
zh:Module:Crafting
local p = {}
-- Internationalization data
local i18n = {
moduleArgs = [[Module:ProcessArgs]],
moduleRecipe = [[Module:Recipe table]],
moduleSlot = [[Module:Inventory slot]],
type = 'Crafting'
}
p.i18n = i18n
-- Global dependencies and constants
local slot = require( i18n.moduleSlot )
local recipeTable = require( i18n.moduleRecipe ).table
local cArgVals = { 'A1', 'B1', 'C1', 'A2', 'B2', 'C2', 'A3', 'B3', 'C3' }
p.cArgVals = cArgVals
-- Service function: Automatically arrange the shapeless recipe set by numbered
-- parameters
local function arrangeShapelessRecipe(args)
if args[1] then
args.shapeless = 1
if args[7] then
args.A1 = args[1]
args.B1 = args[2]
args.C1 = args[3]
args.A2 = args[4]
args.B2 = args[5]
args.C2 = args[6]
if args[8] then
-- ◼◼◼ ◼◼◼
-- ◼◼◼ OR ◼◼◼
-- ◼◼◼ ◼◼◻
-- (where ◼ is filled slot, ◻ is empty slot)
args.A3 = args[7]
args.B3 = args[8]
args.C3 = args[9]
if args[9] then
-- If all slots are the same, the recipe is not shapeless
local identical = true
for i = 1, 8 do
if args[i] ~= args[i + 1] then
identical = false
break
end
end
if identical then
args.shapeless = nil
end
end
else
-- ◼◼◼
-- ◼◼◼
-- ◻◼◻
args.B3 = args[7]
end
elseif args[2] then
args.A2 = args[1]
args.B2 = args[2]
if args[5] then
-- ◻◻◻ ◻◻◻
-- ◼◼◼ OR ◼◼◼
-- ◼◼◼ ◼◼◻
args.C2 = args[3]
args.A3 = args[4]
args.B3 = args[5]
args.C3 = args[6]
elseif args[4] then
-- ◻◻◻
-- ◼◼◻
-- ◼◼◻
args.A3 = args[3]
args.B3 = args[4]
else
-- ◻◻◻ ◻◻◻
-- ◼◼◻ OR ◼◼◻
-- ◻◼◻ ◻◻◻
args.B3 = args[3]
end
else
-- ◻◻◻
-- ◻◼◻
-- ◻◻◻
-- Recipe with only one ingredient is not shapeless
args.B2 = args[1]
args.shapeless = nil
end
-- Clear the original numbered parameters;
-- [[Module:UI]].craftingTable() doesn’t need them
for i = 1, 9 do
args[i] = nil
end
end
end
-- Main entry point
function p.table( f )
-- Process the arguments
local args = f
if f == mw.getCurrentFrame() then
args = require( i18n.moduleArgs ).merge( true )
else
f = mw.getCurrentFrame()
end
-- Arrange the shapeless recipe
arrangeShapelessRecipe(args)
-- Create the recipe table and save the data
local out = recipeTable( args, {
uiFunc = 'craftingTable',
type = i18n.type,
ingredientArgs = cArgVals,
outputArgs = { 'Output' },
saveToDatabase = true,
otherArgsToSave = {"type", "shapeless", "fixed", "notfixed", "group"},
extraProperties = { ["type"] = args.type }
} )
return out
end
return p