list modded recipes
This commit is contained in:
parent
f603e98345
commit
d9d9622bbe
12 changed files with 172 additions and 17 deletions
|
|
@ -14,6 +14,7 @@ See changelog.txt
|
||||||
## Thanks to
|
## Thanks to
|
||||||
- [snouz](https://github.com/snouz) (logo inspiration, ore graphics templates)
|
- [snouz](https://github.com/snouz) (logo inspiration, ore graphics templates)
|
||||||
- [YassineMrabet](https://commons.wikimedia.org/wiki/File:Fullerene.png) (initial fullerene image, CC BY-SA 3.0 license, see link)
|
- [YassineMrabet](https://commons.wikimedia.org/wiki/File:Fullerene.png) (initial fullerene image, CC BY-SA 3.0 license, see link)
|
||||||
|
- [dodo.the.last](https://mods.factorio.com/mod/big-data-string) (borrowed code for list feature)
|
||||||
|
|
||||||
### Localization
|
### Localization
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,9 @@
|
||||||
---------------------------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------------------------
|
||||||
|
Version: 0.0.10
|
||||||
|
Date: 2022-01-05
|
||||||
|
Features:
|
||||||
|
- Add setting to dump modified recipes to file
|
||||||
|
---------------------------------------------------------------------------------------------------
|
||||||
Version: 0.0.9
|
Version: 0.0.9
|
||||||
Date: 2022-01-04
|
Date: 2022-01-04
|
||||||
Changes:
|
Changes:
|
||||||
|
|
|
||||||
23
control-util.lua
Normal file
23
control-util.lua
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
local me = require("me")
|
||||||
|
|
||||||
|
local util = {}
|
||||||
|
util.me = me
|
||||||
|
|
||||||
|
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.get_list()
|
||||||
|
local p = game.item_prototypes[me.name.."-list"]
|
||||||
|
if p then
|
||||||
|
data = p.localised_description
|
||||||
|
return decode(data)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return util
|
||||||
19
control.lua
Normal file
19
control.lua
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
local util = require("control-util")
|
||||||
|
|
||||||
|
function on_console_chat(event)
|
||||||
|
if event.message and string.lower(event.message) == "bzlist" then
|
||||||
|
local player = game.players[event.player_index]
|
||||||
|
if player and player.connected then
|
||||||
|
local list = util.get_list()
|
||||||
|
if list and #list>0 then
|
||||||
|
local filename = util.me.name..".txt"
|
||||||
|
game.write_file(filename, list, false, event.player_index)
|
||||||
|
player.print("Wrote recipes to script-output/"..filename)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
script.on_event(defines.events.on_console_chat, on_console_chat)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -4,7 +4,7 @@ require("carbon-recipe-final-se")
|
||||||
require("carbon-recipe-final-rrr")
|
require("carbon-recipe-final-rrr")
|
||||||
require("carbon-recipe-modules") -- Should be last import
|
require("carbon-recipe-modules") -- Should be last import
|
||||||
|
|
||||||
local util = require("__bzcarbon__.data-util");
|
local util = require("data-util");
|
||||||
|
|
||||||
|
|
||||||
-- Green circuits in final fixes due to K2 shenanigans
|
-- Green circuits in final fixes due to K2 shenanigans
|
||||||
|
|
@ -41,3 +41,6 @@ for i, furnace in pairs(util.me.furnaces) do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Must be last
|
||||||
|
util.create_list()
|
||||||
|
|
|
||||||
|
|
@ -4,3 +4,8 @@ require("carbon-matter")
|
||||||
require("strange-matter")
|
require("strange-matter")
|
||||||
|
|
||||||
-- require("omni")
|
-- require("omni")
|
||||||
|
|
||||||
|
local util = require("data-util");
|
||||||
|
|
||||||
|
-- Must be last
|
||||||
|
util.create_list()
|
||||||
|
|
|
||||||
107
data-util.lua
107
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)
|
||||||
|
|
@ -344,8 +350,9 @@ end
|
||||||
|
|
||||||
-- Multiply energy required
|
-- Multiply energy required
|
||||||
function util.multiply_time(recipe_name, 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)
|
||||||
|
|
@ -362,11 +369,9 @@ end
|
||||||
|
|
||||||
-- Add to energy required
|
-- Add to energy required
|
||||||
function util.add_time(recipe_name, amount)
|
function util.add_time(recipe_name, amount)
|
||||||
log("Doing ".. recipe_name)
|
me.add_modified(recipe_name)
|
||||||
log(amount)
|
|
||||||
if me.bypass[recipe_name] then return end
|
|
||||||
log(1)
|
|
||||||
if data.raw.recipe[recipe_name] then
|
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], amount)
|
||||||
add_time(data.raw.recipe[recipe_name].normal, amount)
|
add_time(data.raw.recipe[recipe_name].normal, amount)
|
||||||
add_time(data.raw.recipe[recipe_name].expensive, amount)
|
add_time(data.raw.recipe[recipe_name].expensive, amount)
|
||||||
|
|
@ -383,18 +388,20 @@ end
|
||||||
|
|
||||||
-- Set recipe category
|
-- Set recipe category
|
||||||
function util.set_category(recipe_name, 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_name] then
|
if data.raw.recipe[recipe_name] then
|
||||||
data.raw.recipe[recipe_name].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_name, 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_name] then
|
if data.raw.recipe[recipe_name] then
|
||||||
data.raw.recipe[recipe_name].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)
|
||||||
|
|
@ -471,4 +478,74 @@ function util.add_minable_result(t, name, result)
|
||||||
end
|
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
|
||||||
|
|
||||||
return util
|
return util
|
||||||
|
|
|
||||||
5
data.lua
5
data.lua
|
|
@ -7,3 +7,8 @@ require("carbon-recipe")
|
||||||
require("carbon-recipe-k2") -- must be after carbon-recipe
|
require("carbon-recipe-k2") -- must be after carbon-recipe
|
||||||
require("carbon-recipe-se")
|
require("carbon-recipe-se")
|
||||||
|
|
||||||
|
|
||||||
|
local util = require("data-util");
|
||||||
|
|
||||||
|
-- Must be last
|
||||||
|
util.create_list()
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "bzcarbon",
|
"name": "bzcarbon",
|
||||||
"version": "0.0.9",
|
"version": "0.0.10",
|
||||||
"factorio_version": "1.1",
|
"factorio_version": "1.1",
|
||||||
"title": "Graphite & Diamonds",
|
"title": "Graphite & Diamonds",
|
||||||
"author": "Brevven",
|
"author": "Brevven",
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,8 @@ diamond-processing=Diamond processing
|
||||||
graphene=Graphene
|
graphene=Graphene
|
||||||
fullerenes=Fullerenes
|
fullerenes=Fullerenes
|
||||||
nanotubes=Carbon nanotubes
|
nanotubes=Carbon nanotubes
|
||||||
|
flake-graphite-synthesis=Graphite synthesis
|
||||||
|
carbon-matter-processing=Elemental carbon conversion
|
||||||
|
|
||||||
[technology-description]
|
[technology-description]
|
||||||
graphite-processing=Process flake graphite into usable graphite
|
graphite-processing=Process flake graphite into usable graphite
|
||||||
|
|
@ -60,12 +62,14 @@ graphite-carbon-black=Convert excess carbon black to graphite at a low ratio.
|
||||||
|
|
||||||
[mod-setting-name]
|
[mod-setting-name]
|
||||||
bzcarbon-recipe-bypass=Bypass recipes
|
bzcarbon-recipe-bypass=Bypass recipes
|
||||||
|
bzcarbon-list=Make a list of modified recipes
|
||||||
bzcarbon-enable-fullerenes=Enable fullerenes & nanotubes
|
bzcarbon-enable-fullerenes=Enable fullerenes & nanotubes
|
||||||
bzcarbon-enable-carbon-black=Enable carbon black
|
bzcarbon-enable-carbon-black=Enable carbon black
|
||||||
bzcarbon-enable-rough-diamond=Enable diamond mining
|
bzcarbon-enable-rough-diamond=Enable diamond mining
|
||||||
|
|
||||||
[mod-setting-description]
|
[mod-setting-description]
|
||||||
bzcarbon-recipe-bypass=Skip modifying these recipes (comma-separated list).
|
bzcarbon-recipe-bypass=Skip modifying these recipes (comma-separated list).
|
||||||
|
bzcarbon-list=If enabled, the text command [color=orange]BZList[/color] will dump a file to the script-output directory with a full list of recipes modified.\nRecommended to turn this off after you are done configuring your other settings.
|
||||||
bzcarbon-enable-fullerenes=Enable the fullerenes & nanotubes intermediate products.\nFullerenes are used primarily in bio-related things. Nanotubes for structures.
|
bzcarbon-enable-fullerenes=Enable the fullerenes & nanotubes intermediate products.\nFullerenes are used primarily in bio-related things. Nanotubes for structures.
|
||||||
bzcarbon-enable-carbon-black=Enable carbon black byproduct. Primarily used to make plastics.
|
bzcarbon-enable-carbon-black=Enable carbon black byproduct. Primarily used to make plastics.
|
||||||
bzcarbon-enable-rough-diamond=Enables diamond ore patches for new games.
|
bzcarbon-enable-rough-diamond=Enables diamond ore patches for new games.
|
||||||
|
|
|
||||||
7
me.lua
7
me.lua
|
|
@ -1,6 +1,7 @@
|
||||||
local me = {}
|
local me = {}
|
||||||
|
|
||||||
me.name = "bzcarbon"
|
me.name = "bzcarbon"
|
||||||
|
me.list = {}
|
||||||
|
|
||||||
function me.use_fullerenes()
|
function me.use_fullerenes()
|
||||||
return me.get_setting("bzcarbon-enable-fullerenes") == "yes"
|
return me.get_setting("bzcarbon-enable-fullerenes") == "yes"
|
||||||
|
|
@ -28,6 +29,12 @@ 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
|
||||||
|
|
||||||
me.crucible_ingredients = {"tungsten-plate", "zirconia", "stone-brick", "silica"}
|
me.crucible_ingredients = {"tungsten-plate", "zirconia", "stone-brick", "silica"}
|
||||||
me.furnaces = {
|
me.furnaces = {
|
||||||
"electric-furnace",
|
"electric-furnace",
|
||||||
|
|
|
||||||
|
|
@ -27,4 +27,10 @@ data:extend({
|
||||||
default_value = mods["rso-mod"] and "yes" or "no",
|
default_value = mods["rso-mod"] and "yes" or "no",
|
||||||
allowed_values = {"no", "yes"},
|
allowed_values = {"no", "yes"},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type = "bool-setting",
|
||||||
|
name = "bzcarbon-list",
|
||||||
|
setting_type = "startup",
|
||||||
|
default_value = false,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue