From 0a2686153879385268fc00b895222e5e757de50a Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Tue, 5 Sep 2023 18:55:07 +0200 Subject: [PATCH 1/2] Allow for picking of items whose name doesn't match the recipe's --- scripts/crafter.lua | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/scripts/crafter.lua b/scripts/crafter.lua index 9382819..2929b44 100644 --- a/scripts/crafter.lua +++ b/scripts/crafter.lua @@ -5,9 +5,18 @@ local Event = require('__stdlib__/stdlib/event/event') local lib = require('__PickerAtheneum__/utils/lib') local function santas_little_helper(player, name) + local crafted = false local allow_multiple = player.mod_settings['picker-allow-multiple-craft'].value - if game.recipe_prototypes[name] and player.force.recipes[name].enabled and (allow_multiple or player.get_item_count(name) == 0) then - player.begin_crafting { count = 1, recipe = name, silent = false } + for _, unlocked_recipe in pairs(player.force.recipes) do + for _, product in pairs(unlocked_recipe.products) do + if product.name == name then + local recipe_name = unlocked_recipe.name + if game.recipe_prototypes[recipe_name] and player.force.recipes[recipe_name].enabled and (allow_multiple or player.get_item_count(name) == 0) and crafted == false then + player.begin_crafting { count = 1, recipe = recipe_name, silent = false } + crafted = true + end + end + end end end From 4afa91578eac3f12f6bcc82f6022ef0e0f873653 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Wed, 6 Sep 2023 08:23:33 +0200 Subject: [PATCH 2/2] Performance improvement --- scripts/crafter.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/crafter.lua b/scripts/crafter.lua index 2929b44..39c6fdd 100644 --- a/scripts/crafter.lua +++ b/scripts/crafter.lua @@ -5,15 +5,14 @@ local Event = require('__stdlib__/stdlib/event/event') local lib = require('__PickerAtheneum__/utils/lib') local function santas_little_helper(player, name) - local crafted = false local allow_multiple = player.mod_settings['picker-allow-multiple-craft'].value for _, unlocked_recipe in pairs(player.force.recipes) do for _, product in pairs(unlocked_recipe.products) do if product.name == name then local recipe_name = unlocked_recipe.name - if game.recipe_prototypes[recipe_name] and player.force.recipes[recipe_name].enabled and (allow_multiple or player.get_item_count(name) == 0) and crafted == false then + if game.recipe_prototypes[recipe_name] and player.force.recipes[recipe_name].enabled and (allow_multiple or player.get_item_count(name) == 0) then player.begin_crafting { count = 1, recipe = recipe_name, silent = false } - crafted = true + return end end end