BI, IR2 compat
This commit is contained in:
parent
b42b476622
commit
99de9eaa48
5 changed files with 149 additions and 21 deletions
|
|
@ -1,4 +1,11 @@
|
||||||
---------------------------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------------------------
|
||||||
|
Version: 0.8.1
|
||||||
|
Date: 2022-01-05
|
||||||
|
Changes:
|
||||||
|
- Bio Industries more minor compatibility
|
||||||
|
Fixes:
|
||||||
|
- IR2 loose compatibility fix
|
||||||
|
---------------------------------------------------------------------------------------------------
|
||||||
Version: 0.8.0
|
Version: 0.8.0
|
||||||
Date: 2021-12-31
|
Date: 2021-12-31
|
||||||
Changes:
|
Changes:
|
||||||
|
|
|
||||||
140
data-util.lua
140
data-util.lua
|
|
@ -97,6 +97,7 @@ end
|
||||||
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
|
if data.raw.recipe[recipe_name] and data.raw.item[ingredient] then
|
||||||
|
me.add_modified(recipe_name)
|
||||||
add_ingredient(data.raw.recipe[recipe_name], ingredient, quantity)
|
add_ingredient(data.raw.recipe[recipe_name], ingredient, quantity)
|
||||||
add_ingredient(data.raw.recipe[recipe_name].normal, ingredient, quantity)
|
add_ingredient(data.raw.recipe[recipe_name].normal, ingredient, quantity)
|
||||||
add_ingredient(data.raw.recipe[recipe_name].expensive, ingredient, quantity)
|
add_ingredient(data.raw.recipe[recipe_name].expensive, ingredient, quantity)
|
||||||
|
|
@ -135,6 +136,7 @@ end
|
||||||
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] then
|
||||||
|
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)
|
||||||
replace_ingredient(data.raw.recipe[recipe_name].expensive, old, new)
|
replace_ingredient(data.raw.recipe[recipe_name].expensive, old, new)
|
||||||
|
|
@ -160,6 +162,7 @@ end
|
||||||
function util.remove_ingredient(recipe_name, old)
|
function util.remove_ingredient(recipe_name, old)
|
||||||
if me.bypass[recipe_name] then return end
|
if me.bypass[recipe_name] then return end
|
||||||
if data.raw.recipe[recipe_name] then
|
if data.raw.recipe[recipe_name] then
|
||||||
|
me.add_modified(recipe_name)
|
||||||
remove_ingredient(data.raw.recipe[recipe_name], old)
|
remove_ingredient(data.raw.recipe[recipe_name], old)
|
||||||
remove_ingredient(data.raw.recipe[recipe_name].normal, old)
|
remove_ingredient(data.raw.recipe[recipe_name].normal, old)
|
||||||
remove_ingredient(data.raw.recipe[recipe_name].expensive, old)
|
remove_ingredient(data.raw.recipe[recipe_name].expensive, old)
|
||||||
|
|
@ -185,6 +188,7 @@ end
|
||||||
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
|
if data.raw.recipe[recipe_name] and data.raw.item[new] then
|
||||||
|
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)
|
||||||
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)
|
||||||
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)
|
||||||
|
|
@ -213,8 +217,9 @@ end
|
||||||
|
|
||||||
-- multiply the cost, energy, and results of a recipe by a multiple
|
-- multiply the cost, energy, and results of a recipe by a multiple
|
||||||
function util.multiply_recipe(recipe_name, multiple)
|
function util.multiply_recipe(recipe_name, multiple)
|
||||||
if me.bypass[recipe_name] then return end
|
me.add_modified(recipe_name)
|
||||||
if data.raw.recipe[recipe_name] then
|
if data.raw.recipe[recipe_name] then
|
||||||
|
if me.bypass[recipe_name] then return end
|
||||||
multiply_recipe(data.raw.recipe[recipe_name], multiple)
|
multiply_recipe(data.raw.recipe[recipe_name], multiple)
|
||||||
multiply_recipe(data.raw.recipe[recipe_name].normal, multiple)
|
multiply_recipe(data.raw.recipe[recipe_name].normal, multiple)
|
||||||
multiply_recipe(data.raw.recipe[recipe_name].expensive, multiple)
|
multiply_recipe(data.raw.recipe[recipe_name].expensive, multiple)
|
||||||
|
|
@ -285,8 +290,9 @@ end
|
||||||
|
|
||||||
-- Remove a product from a recipe, WILL NOT remove the only product
|
-- Remove a product from a recipe, WILL NOT remove the only product
|
||||||
function util.remove_product(recipe_name, old)
|
function util.remove_product(recipe_name, old)
|
||||||
if me.bypass[recipe_name] then return end
|
me.add_modified(recipe_name)
|
||||||
if data.raw.recipe[recipe_name] then
|
if data.raw.recipe[recipe_name] then
|
||||||
|
if me.bypass[recipe_name] then return end
|
||||||
remove_product(data.raw.recipe[recipe_name], old)
|
remove_product(data.raw.recipe[recipe_name], old)
|
||||||
remove_product(data.raw.recipe[recipe_name].normal, old)
|
remove_product(data.raw.recipe[recipe_name].normal, old)
|
||||||
remove_product(data.raw.recipe[recipe_name].expensive, old)
|
remove_product(data.raw.recipe[recipe_name].expensive, old)
|
||||||
|
|
@ -343,9 +349,10 @@ function util.remove_raw(t, name)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Multiply energy required
|
-- Multiply energy required
|
||||||
function util.multiply_time(recipe, factor)
|
function util.multiply_time(recipe_name, factor)
|
||||||
if me.bypass[recipe_name] then return end
|
me.add_modified(recipe_name)
|
||||||
if data.raw.recipe[recipe_name] then
|
if data.raw.recipe[recipe_name] then
|
||||||
|
if me.bypass[recipe_name] then return end
|
||||||
multiply_time(data.raw.recipe[recipe_name], factor)
|
multiply_time(data.raw.recipe[recipe_name], factor)
|
||||||
multiply_time(data.raw.recipe[recipe_name].normal, factor)
|
multiply_time(data.raw.recipe[recipe_name].normal, factor)
|
||||||
multiply_time(data.raw.recipe[recipe_name].expensive, factor)
|
multiply_time(data.raw.recipe[recipe_name].expensive, factor)
|
||||||
|
|
@ -360,20 +367,41 @@ function multiply_time(recipe, factor)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Add to energy required
|
||||||
|
function util.add_time(recipe_name, amount)
|
||||||
|
me.add_modified(recipe_name)
|
||||||
|
if data.raw.recipe[recipe_name] then
|
||||||
|
if me.bypass[recipe_name] then return end
|
||||||
|
add_time(data.raw.recipe[recipe_name], amount)
|
||||||
|
add_time(data.raw.recipe[recipe_name].normal, amount)
|
||||||
|
add_time(data.raw.recipe[recipe_name].expensive, amount)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function add_time(recipe, amount)
|
||||||
|
if recipe then
|
||||||
|
if recipe.energy_required then
|
||||||
|
recipe.energy_required = recipe.energy_required + amount
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Set recipe category
|
-- Set recipe category
|
||||||
function util.set_category(recipe, category)
|
function util.set_category(recipe_name, category)
|
||||||
if me.bypass[recipe_name] then return end
|
if me.bypass[recipe_name] then return end
|
||||||
if data.raw.recipe[recipe] then
|
if data.raw.recipe[recipe_name] then
|
||||||
data.raw.recipe[recipe].category = category
|
me.add_modified(recipe_name)
|
||||||
end
|
data.raw.recipe[recipe_name].category = category
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Set recipe subgroup
|
-- Set recipe subgroup
|
||||||
function util.set_subgroup(recipe, subgroup)
|
function util.set_subgroup(recipe_name, subgroup)
|
||||||
if me.bypass[recipe_name] then return end
|
if me.bypass[recipe_name] then return end
|
||||||
if data.raw.recipe[recipe] then
|
if data.raw.recipe[recipe_name] then
|
||||||
data.raw.recipe[recipe].subgroup = subgroup
|
me.add_modified(recipe_name)
|
||||||
end
|
data.raw.recipe[recipe_name].subgroup = subgroup
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function util.set_to_founding(recipe)
|
function util.set_to_founding(recipe)
|
||||||
|
|
@ -444,9 +472,89 @@ function add_to_product(recipe, product, amount)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Adds a result to a mineable type
|
||||||
function util.add_minable_result(t, name, result)
|
function util.add_minable_result(t, name, result)
|
||||||
if data.raw[t] and data.raw[t][name] and data.raw[t][name].minable and data.raw[t][name].minable.results then
|
if data.raw[t] and data.raw[t][name] and data.raw[t][name].minable then
|
||||||
table.insert(data.raw[t][name].minable.results, result)
|
if data.raw[t][name].minable.result and not data.raw[t][name].minable.results then
|
||||||
|
data.raw[t][name].minable.results = {
|
||||||
|
{data.raw[t][name].minable.result ,data.raw[t][name].minable.count}}
|
||||||
|
data.raw[t][name].minable.result = nil
|
||||||
|
data.raw[t][name].minable.result_count = nil
|
||||||
|
end
|
||||||
|
if data.raw[t][name].minable.results then
|
||||||
|
table.insert(data.raw[t][name].minable.results, result)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local function insert(nodes, node, value)
|
||||||
|
table.insert(node, value) -- store as parameter
|
||||||
|
if 21 == #node then
|
||||||
|
node = {""}
|
||||||
|
table.insert(nodes, node)
|
||||||
|
end
|
||||||
|
return node
|
||||||
|
end
|
||||||
|
|
||||||
|
local function encode(data)
|
||||||
|
local node = {""}
|
||||||
|
local root = {node}
|
||||||
|
local n = string.len(data)
|
||||||
|
for i = 1,n,200 do
|
||||||
|
local value = string.sub(data, i, i+199)
|
||||||
|
node = insert(root, node, value)
|
||||||
|
end
|
||||||
|
while #root > 20 do
|
||||||
|
local nodes,node = {},{""}
|
||||||
|
for _, value in ipairs(root) do
|
||||||
|
node = insert(nodes, node, value)
|
||||||
|
end
|
||||||
|
root = nodes
|
||||||
|
end
|
||||||
|
if #root == 1 then root = root[1] else
|
||||||
|
table.insert(root, 1, "") -- no locale template
|
||||||
|
end
|
||||||
|
return #root < 3 and (root[2] or "") or root
|
||||||
|
end
|
||||||
|
|
||||||
|
function decode(data)
|
||||||
|
if type(data) == "string" then return data end
|
||||||
|
local str = {}
|
||||||
|
for i = 2, #data do
|
||||||
|
str[i-1] = decode(data[i])
|
||||||
|
end
|
||||||
|
return table.concat(str, "")
|
||||||
|
end
|
||||||
|
|
||||||
|
function util.create_list()
|
||||||
|
if #me.list>0 then
|
||||||
|
if not data.raw.item[me.name.."-list"] then
|
||||||
|
data:extend({{
|
||||||
|
type="item",
|
||||||
|
name=me.name.."-list",
|
||||||
|
localised_description = "",
|
||||||
|
enabled=false,
|
||||||
|
icon = "__core__/graphics/empty.png",
|
||||||
|
icon_size = 1,
|
||||||
|
stack_size = 1,
|
||||||
|
flags = {"hidden", "hide-from-bonus-gui"}
|
||||||
|
}})
|
||||||
|
end
|
||||||
|
|
||||||
|
local have = {}
|
||||||
|
local list = {}
|
||||||
|
for i, recipe in pairs(me.list) do
|
||||||
|
if not have[recipe] then
|
||||||
|
have[recipe] = true
|
||||||
|
table.insert(list, recipe)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if #list>0 then
|
||||||
|
data.raw.item[me.name.."-list"].localised_description =
|
||||||
|
encode(decode(data.raw.item[me.name.."-list"].localised_description).."\n"..table.concat(list, "\n"))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "bzsilicon",
|
"name": "bzsilicon",
|
||||||
"version": "0.8.0",
|
"version": "0.8.1",
|
||||||
"factorio_version": "1.1",
|
"factorio_version": "1.1",
|
||||||
"title": "Silica & Silicon",
|
"title": "Silica & Silicon",
|
||||||
"author": "Brevven",
|
"author": "Brevven",
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"? Krastorio2",
|
"? Krastorio2",
|
||||||
"? modmashsplinterelectronics",
|
"? modmashsplinterelectronics",
|
||||||
|
"(?) IndustrialRevolution",
|
||||||
"base >= 0.18"
|
"base >= 0.18"
|
||||||
],
|
],
|
||||||
"description": "Adds simple Silica and Silicon to the game, along with basic fiber optics."
|
"description": "Adds simple Silica and Silicon to the game, along with basic fiber optics."
|
||||||
|
|
|
||||||
6
me.lua
6
me.lua
|
|
@ -25,4 +25,10 @@ if me.get_setting(me.name.."-recipe-bypass") then
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function me.add_modified(name)
|
||||||
|
if me.get_setting(me.name.."-list") then
|
||||||
|
table.insert(me.list, name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return me
|
return me
|
||||||
|
|
|
||||||
|
|
@ -26,11 +26,15 @@ if not mods["Krastorio2"] then
|
||||||
util.remove_ingredient("speed-module", "electronic-circuit")
|
util.remove_ingredient("speed-module", "electronic-circuit")
|
||||||
util.add_ingredient("speed-module", "silicon-wafer", 3)
|
util.add_ingredient("speed-module", "silicon-wafer", 3)
|
||||||
|
|
||||||
util.replace_ingredient("solar-panel", "electronic-circuit", "solar-cell")
|
if mods.IndustrialRevolution then
|
||||||
|
util.add_ingredient("solar-panel", "solar-cell", 9)
|
||||||
|
util.add_effect("ir2-solar-energy-1", {type = "unlock-recipe", recipe="solar-cell"})
|
||||||
|
else
|
||||||
|
util.replace_ingredient("solar-panel", "electronic-circuit", "solar-cell")
|
||||||
|
util.add_effect("solar-energy", {type = "unlock-recipe", recipe="solar-cell"})
|
||||||
|
end
|
||||||
util.replace_ingredient("solar-panel-equipment", "solar-panel", "solar-cell")
|
util.replace_ingredient("solar-panel-equipment", "solar-panel", "solar-cell")
|
||||||
util.add_effect("solar-energy", {type = "unlock-recipe", recipe="solar-cell"})
|
|
||||||
|
|
||||||
|
|
||||||
if not mods.modmashsplinterelectronics then
|
if not mods.modmashsplinterelectronics then
|
||||||
util.multiply_recipe("advanced-circuit", 3)
|
util.multiply_recipe("advanced-circuit", 3)
|
||||||
util.replace_some_ingredient("advanced-circuit", "electronic-circuit", 3, "silicon-wafer", 1)
|
util.replace_some_ingredient("advanced-circuit", "electronic-circuit", 3, "silicon-wafer", 1)
|
||||||
|
|
@ -95,6 +99,7 @@ if not mods["IndustrialRevolution"] then
|
||||||
util.add_ingredient("power-meter-combinator", "silicon", 1)
|
util.add_ingredient("power-meter-combinator", "silicon", 1)
|
||||||
util.add_ingredient("ghost-scanner", "silicon", 1)
|
util.add_ingredient("ghost-scanner", "silicon", 1)
|
||||||
util.add_ingredient("item-sensor", "silicon", 1)
|
util.add_ingredient("item-sensor", "silicon", 1)
|
||||||
|
util.add_ingredient("bi-pollution-sensor", "silicon", 1)
|
||||||
else
|
else
|
||||||
util.add_prerequisite("circuit-network", "fiber-optics")
|
util.add_prerequisite("circuit-network", "fiber-optics")
|
||||||
end
|
end
|
||||||
|
|
@ -116,6 +121,7 @@ util.add_ingredient("clock-combinator", "optical-fiber", 1)
|
||||||
util.add_ingredient("power-meter-combinator", "optical-fiber", 1)
|
util.add_ingredient("power-meter-combinator", "optical-fiber", 1)
|
||||||
util.add_ingredient("ghost-scanner", "optical-fiber", 1)
|
util.add_ingredient("ghost-scanner", "optical-fiber", 1)
|
||||||
util.add_ingredient("item-sensor", "optical-fiber", 1)
|
util.add_ingredient("item-sensor", "optical-fiber", 1)
|
||||||
|
util.add_ingredient("bi-pollution-sensor", "optical-fiber", 1)
|
||||||
|
|
||||||
-- Transport Drones
|
-- Transport Drones
|
||||||
util.add_ingredient("road-network-reader", "optical-fiber", 5)
|
util.add_ingredient("road-network-reader", "optical-fiber", 5)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue