![]() |
VOOZH | about |
This module implements {{crafting}}.
Parent arguments are automatically merged with directly passed arguments (the latter overwriting the former).
localp={} -- Internationalization data locali18n={ moduleArgs=[[Module:ProcessArgs]], moduleRecipe=[[Module:Recipe table]], moduleSlot=[[Module:Inventory slot]], type='Crafting' } p.i18n=i18n -- Global dependencies and constants localslot=require(i18n.moduleSlot) localrecipeTable=require(i18n.moduleRecipe).table localcArgVals={'A1','B1','C1','A2','B2','C2','A3','B3','C3'} p.cArgVals=cArgVals -- Service function: Automatically arrange the shapeless recipe set by numbered -- parameters localfunctionarrangeShapelessRecipe(args) ifargs[1]then args.shapeless=1 ifargs[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] ifargs[8]then -- ◼◼◼ ◼◼◼ -- ◼◼◼ OR ◼◼◼ -- ◼◼◼ ◼◼◻ -- (where ◼ is filled slot, ◻ is empty slot) args.A3=args[7] args.B3=args[8] args.C3=args[9] ifargs[9]then -- If all slots are the same, the recipe is not shapeless localidentical=true fori=1,8do ifargs[i]~=args[i+1]then identical=false break end end ifidenticalthen args.shapeless=nil end end else -- ◼◼◼ -- ◼◼◼ -- ◻◼◻ args.B3=args[7] end elseifargs[2]then args.A2=args[1] args.B2=args[2] ifargs[5]then -- ◻◻◻ ◻◻◻ -- ◼◼◼ OR ◼◼◼ -- ◼◼◼ ◼◼◻ args.C2=args[3] args.A3=args[4] args.B3=args[5] args.C3=args[6] elseifargs[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 fori=1,9do args[i]=nil end end end -- Main entry point functionp.table(f) -- Process the arguments localargs=f iff==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 localout=recipeTable(args,{ uiFunc='craftingTable', type=i18n.type, ingredientArgs=cArgVals, outputArgs={'Output'}, saveToDatabase='crafting_recipe', otherArgsToSave={"type","shapeless","fixed","notfixed","group"}, extraProperties={["type"]=args.type} }) returnout end returnp