This commit is contained in:
Brevven 2022-06-29 23:40:56 -07:00
parent 2293df67e6
commit cfd3573681

View file

@ -170,15 +170,16 @@ end
-- Add a given quantity of ingredient to a given recipe -- Add a given quantity of ingredient to a given recipe
function util.add_ingredient(recipe_name, ingredient, quantity) function util.add_ingredient(recipe_name, ingredient, quantity)
if me.bypass[recipe_name] then return end if me.bypass[recipe_name] then return end
if data.raw.recipe[recipe_name] and data.raw.item[ingredient] then local is_fluid = not not data.raw.fluid[ingredient]
if data.raw.recipe[recipe_name] and (data.raw.item[ingredient] or is_fluid) then
me.add_modified(recipe_name) me.add_modified(recipe_name)
add_ingredient(data.raw.recipe[recipe_name], ingredient, quantity) add_ingredient(data.raw.recipe[recipe_name], ingredient, quantity, is_fluid)
add_ingredient(data.raw.recipe[recipe_name].normal, ingredient, quantity) add_ingredient(data.raw.recipe[recipe_name].normal, ingredient, quantity, is_fluid)
add_ingredient(data.raw.recipe[recipe_name].expensive, ingredient, quantity) add_ingredient(data.raw.recipe[recipe_name].expensive, ingredient, quantity, is_fluid)
end end
end end
function add_ingredient(recipe, ingredient, quantity) function add_ingredient(recipe, ingredient, quantity, is_fluid)
if recipe ~= nil and recipe.ingredients ~= nil then if recipe ~= nil and recipe.ingredients ~= nil then
for i, existing in pairs(recipe.ingredients) do for i, existing in pairs(recipe.ingredients) do
if existing[1] == ingredient or existing.name == ingredient then if existing[1] == ingredient or existing.name == ingredient then
@ -186,8 +187,12 @@ function add_ingredient(recipe, ingredient, quantity)
return return
end end
end end
if is_fluid then
table.insert(recipe.ingredients, {type="fluid", name=ingredient, amount=quantity})
else
table.insert(recipe.ingredients, {ingredient, quantity}) table.insert(recipe.ingredients, {ingredient, quantity})
end end
end
end end
-- Add a given ingredient prototype to a given recipe -- Add a given ingredient prototype to a given recipe
@ -268,7 +273,7 @@ end
-- Replace one ingredient with another in a recipe -- Replace one ingredient with another in a recipe
function util.replace_ingredient(recipe_name, old, new) function util.replace_ingredient(recipe_name, old, new)
if me.bypass[recipe_name] then return end if me.bypass[recipe_name] then return end
if data.raw.recipe[recipe_name] and data.raw.item[new] then if data.raw.recipe[recipe_name] and (data.raw.item[new] or data.raw.fluid[new]) then
me.add_modified(recipe_name) me.add_modified(recipe_name)
replace_ingredient(data.raw.recipe[recipe_name], old, new) replace_ingredient(data.raw.recipe[recipe_name], old, new)
replace_ingredient(data.raw.recipe[recipe_name].normal, old, new) replace_ingredient(data.raw.recipe[recipe_name].normal, old, new)
@ -320,15 +325,16 @@ end
-- Replace an amount of an ingredient in a recipe. Keep at least 1 of old. -- Replace an amount of an ingredient in a recipe. Keep at least 1 of old.
function util.replace_some_ingredient(recipe_name, old, old_amount, new, new_amount) function util.replace_some_ingredient(recipe_name, old, old_amount, new, new_amount)
if me.bypass[recipe_name] then return end if me.bypass[recipe_name] then return end
if data.raw.recipe[recipe_name] and data.raw.item[new] then local is_fluid = not not data.raw.fluid[new]
if data.raw.recipe[recipe_name] and (data.raw.item[new] or is_fluid) then
me.add_modified(recipe_name) me.add_modified(recipe_name)
replace_some_ingredient(data.raw.recipe[recipe_name], old, old_amount, new, new_amount) replace_some_ingredient(data.raw.recipe[recipe_name], old, old_amount, new, new_amount, is_fluid)
replace_some_ingredient(data.raw.recipe[recipe_name].normal, old, old_amount, new, new_amount) replace_some_ingredient(data.raw.recipe[recipe_name].normal, old, old_amount, new, new_amount, is_fluid)
replace_some_ingredient(data.raw.recipe[recipe_name].expensive, old, old_amount, new, new_amount) replace_some_ingredient(data.raw.recipe[recipe_name].expensive, old, old_amount, new, new_amount, is_fluid)
end end
end end
function replace_some_ingredient(recipe, old, old_amount, new, new_amount) function replace_some_ingredient(recipe, old, old_amount, new, new_amount, is_fluid)
if recipe ~= nil and recipe.ingredients ~= nil then if recipe ~= nil and recipe.ingredients ~= nil then
for i, existing in pairs(recipe.ingredients) do for i, existing in pairs(recipe.ingredients) do
if existing[1] == new or existing.name == new then if existing[1] == new or existing.name == new then
@ -344,7 +350,7 @@ function replace_some_ingredient(recipe, old, old_amount, new, new_amount)
ingredient[2] = math.max(1, ingredient[2] - old_amount) ingredient[2] = math.max(1, ingredient[2] - old_amount)
end end
end end
add_ingredient(recipe, new, new_amount) add_ingredient(recipe, new, new_amount, is_fluid)
end end
end end
@ -447,6 +453,20 @@ function remove_product(recipe, old)
end end
end end
function util.set_main_product(recipe_name, product)
if data.raw.recipe[recipe_name] then
set_main_product(data.raw.recipe[recipe_name], product)
set_main_product(data.raw.recipe[recipe_name].normal, product)
set_main_product(data.raw.recipe[recipe_name].expensive, product)
end
end
function set_main_product(recipe, product)
if recipe then
recipe.main_product = product
end
end
-- Replace one product with another in a recipe -- Replace one product with another in a recipe
function util.replace_product(recipe_name, old, new) function util.replace_product(recipe_name, old, new)
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then