Thanks for being open to it, but I understand if not - appreciate the explanation!
As far as the tweak mod I made, it's essentially just creating a dictionary of the available asteroid-chunk prototypes, and then looking for any recipes with a matching name; if found it then loops through the results of the recipe, and adds stone only if stone was not already present. It's not up on the mod portal, but this is the extent of it (it's one .lua file loaded during data-updates - mod is optionally dependent on crushing-industry, cupric-asteroids, and the above BZ mods):
info.json
{
"name": "configurable-asteroids",
"version": "0.1.0",
"factorio_version": "2.0",
"title": "configurable-asteroids",
"author": "TheEckelmonster",
"description": "Various configurable settings for asteroids",
"dependencies": [
"base >= 2.0.72",
"? crushing-industry >= 0.4.21",
"? cupric-asteroids >= 1.5.5",
"? bzlead >= 2.0.28",
"? bzsilicon >= 2.0.18",
"? bztin >= 2.1.15",
"? bztitanium >= 2.0.26",
"? bzzirconium >= 2.1.13"
]
}
data-updates.lua
local asteroid_chunks_dictionary = {}
for _, v in pairs(data.raw["asteroid-chunk"]) do
local _, _, name = v.name:find("(%a+%-asteroid)%-chunk")
if (type(name) == "string" and #name > 0) then
asteroid_chunks_dictionary[name .. "-crushing"] = true
asteroid_chunks_dictionary["advanced-" .. name .. "-crushing"] = true
if (name == "oxide-asteroid" and mods["bzzirconium"]) then
asteroid_chunks_dictionary["advanced-" .. name .. "-crushing-zirc"] = true
end
end
end
for _, v in pairs(data.raw["recipe"]) do
if (asteroid_chunks_dictionary[v.name]) then
if (v.result) then
local results = { v.result,}
v.results = results
v.result = nil
end
local stone_already_present = false
for i, j in pairs(v.results) do
if (j.name == "stone") then
stone_already_present = true
break
end
end
if (not stone_already_present) then
if (v.name:find("advanced-", 1, true)) then
table.insert(v.results, {
type = "item",
name = "stone",
amount_min = 2,
amount_max = 8,
probability = 0.01
})
else
table.insert(v.results, {
type = "item",
name = "stone",
amount_min = 3,
amount_max = 12,
probability = 0.02
})
end
end
end
end
You are more than welcome to use the above code however you'd like - let me know if I can be of any assistance.