Compare commits

..

No commits in common. "main" and "2.0.1" have entirely different histories.
main ... 2.0.1

10 changed files with 234 additions and 250 deletions

View file

@ -1,16 +1,4 @@
---------------------------------------------------------------------------------------------------
Version: 2.0.3
Date: 10.12.2025
Bug Fixes:
- Fix tech coal-liquefaction has no prereq with catalysis off
- Fix recipe name of blank-tech-card-silver
- Fix autoplace of rich-copper-ore
---------------------------------------------------------------------------------------------------
Version: 2.0.2
Date: 01.11.2025
Bug Fixes:
- Fix K2 matter integration (thanks pla)
---------------------------------------------------------------------------------------------------
Version: 2.0.1
Date: 21.10.2025
Changes:

View file

@ -115,12 +115,12 @@ end
function util.k2matter(params)
local matter = require("__Krastorio2__/prototypes/libraries/matter")
if mods["space-exploration"] then
params.k2matter.needs_stabilizer = true
params.k2matter.need_stabilizer = true
end
if not params.k2matter.minimum_conversion_quantity then
params.k2matter.minimum_conversion_quantity = 10
end
if not data.raw.technology[params.k2matter.unlocked_by] then
if not data.raw.technology[params.k2matter.unlocked_by_technology] then
local icon = ""
if params.k2baseicon then
icon = util.k2assets().."/technologies/matter-"..params.k2baseicon..".png"
@ -132,7 +132,7 @@ function util.k2matter(params)
{
{
type = "technology",
name = params.k2matter.unlocked_by,
name = params.k2matter.unlocked_by_technology,
icons =
{
{
@ -163,16 +163,11 @@ function util.k2matter(params)
},
time = 45,
},
effects = {},
-- localised_name = {"technology-name.k2-conversion", {"item-name."..params.k2matter.item_name}},
localised_name = {"technology-name.k2-conversion", {"item-name."..params.k2matter.item_name}},
},
})
end
if params.k2matter.only_deconversion then
matter.make_deconversion_recipe(params.k2matter)
else
matter.make_recipes(params.k2matter)
end
matter.make_recipes(params.k2matter)
end
@ -1193,8 +1188,8 @@ function util.replace_ingredients_prior_to(tech, old, new, multiplier)
end
util.remove_prior_unlocks(tech, old)
for i, recipe in pairs(data.raw.recipe) do
if (recipe.enabled and recipe.enabled ~= false)
and (not recipe.hidden or recipe.hidden == true) -- probably don't want to change hidden recipes
if (recipe.enabled and recipe.enabled ~= 'false')
and (not recipe.hidden or recipe.hidden == 'true') -- probably don't want to change hidden recipes
and string.sub(recipe.name, 1, 3) ~= 'se-' -- have to exlude SE in general :(
then
-- log("BZZZ due to 'enabled' replacing " .. old .. " with " .. new .." in " .. recipe.name) -- Handy Debug :|

View file

@ -21,5 +21,8 @@ require("compatibility/248k")
local util = require("data-util");
if util.se6() then
end
-- Must be last
util.create_list()

View file

@ -1,6 +1,6 @@
{
"name": "bzgold2",
"version": "2.0.3",
"version": "2.0.1",
"factorio_version": "2.0",
"title": "Noble Metals",
"description": "Adds silver, gold, platinum, palladium and more to the base game. Reworks processing units.",

View file

@ -1,31 +1,30 @@
-- Matter recipes for Krastorio2
if mods["Krastorio2"] then
local util = require("data-util")
local util = require("data-util");
if not data.raw.recipe["kr-gold-ore-to-matter"] then
util.k2matter({
k2matter = {
material = { type = "item", name = "gold-ore", amount = 30 },
item_name = "gold-ore",
matter_count = 30,
energy_required = 10,
needs_stabilizer = false,
unlocked_by = "gold-matter-processing",
},
icon = { icon = "__bzgold2__/graphics/icons/gold-ore.png", icon_size = 128, scale = 0.5 },
})
end
if settings.startup["bzgold-silver"].value then
util.k2matter({
k2matter = {
material = { type = "item", name = "silver-ore", amount = 8 },
item_name = "silver-ore",
matter_count = 8,
energy_required = 5,
needs_stabilizer = false,
unlocked_by = "silver-matter-processing",
},
icon = { icon = "__bzgold2__/graphics/icons/silver-ore.png", icon_size = 128, scale = 0.5 },
})
end
util.k2matter({
k2matter = {
material = { type = "item", name = "gold-ore", amount = 30 },
item_name = "gold-ore",
matter_count = 30,
energy_required = 10,
need_stabilizer = false,
unlocked_by_technology = "gold-matter-processing",
},
k2baseicon = "stone",
icon = {icon = "__bzgold2__/graphics/icons/gold-ore.png", icon_size = 128, scale = 1}
})
util.k2matter({
k2matter = {
material = { type = "item", name = "silver-ore", amount = 8 },
item_name = "silver-ore",
matter_count = 8,
energy_required = 5,
need_stabilizer = false,
unlocked_by_technology = "silver-matter-processing",
},
k2baseicon = "stone",
icon = {icon = "__bzgold2__/graphics/icons/silver-ore.png", icon_size = 128, scale = 1}
})
end

View file

@ -1,4 +1,4 @@
local util = require("data-util")
local util = require("data-util");
if mods.Krastorio2 then
@ -92,7 +92,7 @@ data:extend({
{
icon = data.raw.item["gold-ore"].icon,
icon_size = data.raw.item["gold-ore"].icon_size,
scale = 0.2 * 64 / (data.raw.item["gold-ore"].icon_size or 64),
scale = 0.2,
shift = {0, 4}
}
},

View file

@ -1,4 +1,4 @@
local util = require("data-util")
local util = require("data-util");
if mods.Krastorio2 and util.me.silver() then
data:extend({
@ -111,7 +111,7 @@ data:extend({
{
icon = data.raw.item["silver-ore"].icon,
icon_size = data.raw.item["silver-ore"].icon_size,
scale = 0.2 * 64 / (data.raw.item["silver-ore"].icon_size or 64),
scale = 0.2,
shift = {0, 4}
}
},

View file

@ -72,7 +72,6 @@ end
if mods.Krastorio2 and util.me.silver() then
local tc = futil.table.deepcopy(data.raw.recipe["kr-blank-tech-card"])
tc.name = "blank-tech-card-silver"
tc.localised_name = { "item-name.blank-tech-card" }
data:extend({tc})
util.replace_ingredient("blank-tech-card-silver", "copper-cable", "silver-wire")
local amt = util.get_amount("kr-blank-tech-card")

View file

@ -4,153 +4,154 @@ local futil = require("util");
local util = require("data-util");
if util.me.platinum() or util.me.palladium() then
if mods.Krastorio2 then
-- no rich copper
local rm = futil.table.deepcopy(data.raw.recipe["kr-rare-metals"])
rm.name = "rare-metals-1"
data:extend({ rm })
util.add_unlock("platinum-processing", "rare-metals-1")
util.add_unlock("palladium-processing", "rare-metals-1")
util.add_icon("rare-metals-1", { icon = "__bzgold2__/graphics/icons/platinum-powder.png",
icon_size = 64, scale = 0.25, shift = { -8, 8 } })
if mods.Krastorio2 then
-- no rich copper
local rm = futil.table.deepcopy(data.raw.recipe["kr-rare-metals"])
rm.name = "rare-metals-1"
data:extend({rm})
util.add_unlock("platinum-processing", "rare-metals-1")
util.add_unlock("palladium-processing", "rare-metals-1")
util.add_icon("rare-metals-1", {icon = "__bzgold2__/graphics/icons/platinum-powder.png",
icon_size = 64, scale = 0.25, shift = {-8,8}})
util.multiply_recipe("kr-rare-metals", 2)
util.multiply_recipe("rare-metals-1", 2)
util.multiply_recipe("rare-metals-2", 2)
util.multiply_recipe("kr-rare-metals", 2)
util.multiply_recipe("rare-metals-1", 2)
util.multiply_recipe("rare-metals-2", 2)
util.set_main_product("kr-rare-metals", "kr-rare-metals")
util.set_product_amount("kr-rare-metals", "kr-rare-metals", 6)
util.set_main_product("rare-metals-1", "kr-rare-metals")
util.set_main_product("rare-metals-2", "kr-rare-metals")
util.set_main_product("kr-rare-metals", "kr-rare-metals")
util.set_product_amount("kr-rare-metals", "kr-rare-metals", 6)
util.set_main_product("rare-metals-1", "kr-rare-metals")
util.set_main_product("rare-metals-2", "kr-rare-metals")
if util.me.platinum() and util.me.palladium() then
util.replace_some_product("rare-metals-1", "kr-rare-metals", 2, "platinum-powder", 2, { force = true })
util.replace_some_product("rare-metals-1", "kr-rare-metals", 2, "palladium-powder", 2, { force = true })
util.replace_some_product("rare-metals-2", "kr-rare-metals", 3, "platinum-powder", 3, { force = true })
util.replace_some_product("rare-metals-2", "kr-rare-metals", 3, "palladium-powder", 3, { force = true })
elseif util.me.platinum() then
util.replace_some_product("rare-metals-1", "kr-rare-metals", 3, "platinum-powder", 4, { force = true })
util.replace_some_product("rare-metals-2", "kr-rare-metals", 6, "platinum-powder", 6, { force = true })
elseif util.me.palladium() then
util.replace_some_product("rare-metals-1", "kr-rare-metals", 3, "palladium-powder", 4, { force = true })
util.replace_some_product("rare-metals-2", "kr-rare-metals", 6, "palladium-powder", 6, { force = true })
end
if util.me.platinum() and util.me.palladium() then
util.replace_some_product("rare-metals-1", "kr-rare-metals", 2, "platinum-powder", 2, {force=true})
util.replace_some_product("rare-metals-1", "kr-rare-metals", 2, "palladium-powder", 2, {force=true})
util.replace_some_product("rare-metals-2", "kr-rare-metals", 3, "platinum-powder", 3, {force=true})
util.replace_some_product("rare-metals-2", "kr-rare-metals", 3, "palladium-powder", 3, {force=true})
elseif util.me.platinum() then
util.replace_some_product("rare-metals-1", "kr-rare-metals", 3, "platinum-powder", 4, {force=true})
util.replace_some_product("rare-metals-2", "kr-rare-metals", 6, "platinum-powder", 6, {force=true})
elseif util.me.palladium() then
util.replace_some_product("rare-metals-1", "kr-rare-metals", 3, "palladium-powder", 4, {force=true})
util.replace_some_product("rare-metals-2", "kr-rare-metals", 6, "palladium-powder", 6, {force=true})
end
else
local results = {}
if util.me.silver() and util.me.platinum() and util.me.palladium() then
results = {
{type="item", name="copper-plate", amount=1},
{type="item", name="silver-ore", amount=1, probability=0.5},
{type="item", name="platinum-powder", amount=1, probability=0.25},
{type="item", name="palladium-powder", amount=1, probability=0.25},
}
elseif util.me.silver() and util.me.platinum() then
results = {
{type="item", name="copper-plate", amount=1},
{type="item", name="silver-ore", amount=1, probability=0.67},
{type="item", name="platinum-powder", amount=1, probability=0.33},
}
elseif util.me.silver() and util.me.palladium() then
results = {
{type="item", name="copper-plate", amount=1},
{type="item", name="silver-ore", amount=1, probability=0.67},
{type="item", name="palladium-powder", amount=1, probability=0.33},
}
elseif util.me.platinum() and util.me.palladium() then
results = {
{type="item", name="copper-plate", amount=1},
{type="item", name="platinum-powder", amount=1, probability=0.5},
{type="item", name="palladium-powder", amount=1, probability=0.5},
}
elseif util.me.platinum() then
results = {
{type="item", name="copper-plate", amount=2, probability = 0.75},
{type="item", name="platinum-powder", amount=1, probability=0.5},
}
elseif util.me.palladium() then
results = {
{type="item", name="copper-plate", amount=2, probability = 0.75},
{type="item", name="palladium-powder", amount=1, probability=0.5},
}
else -- should never happen
results = {
{type="item", name="copper-plate", amount=2},
}
end
if data.raw.resource["copper-ore"] then
if mods["space-exploration"] then
-- decrease richness of copper a bit (ok if it stacks with aluminum)
data.raw.resource["copper-ore"].autoplace.richness_expression =
data.raw.resource["copper-ore"].autoplace.richness_expression .. "*(3/4)"
else
log("Replacing vanilla copper-ore autoplace")
local resource_autoplace = require('resource-autoplace');
data.raw.resource["copper-ore"].autoplace = resource_autoplace.resource_autoplace_settings{
name = "copper-ore",
order = "b",
base_density = mods.bzaluminum2 and 3 or 4,
has_starting_area_placement = true,
regular_rq_factor_multiplier = 1.1,
starting_rq_factor_multiplier = 1.1,
candidate_spot_count = 22,
}
end
end
local results = {}
if util.me.silver() and util.me.platinum() and util.me.palladium() then
results = {
{ type = "item", name = "copper-plate", amount = 1 },
{ type = "item", name = "silver-ore", amount = 1, probability = 0.5 },
{ type = "item", name = "platinum-powder", amount = 1, probability = 0.25 },
{ type = "item", name = "palladium-powder", amount = 1, probability = 0.25 },
}
elseif util.me.silver() and util.me.platinum() then
results = {
{ type = "item", name = "copper-plate", amount = 1 },
{ type = "item", name = "silver-ore", amount = 1, probability = 0.67 },
{ type = "item", name = "platinum-powder", amount = 1, probability = 0.33 },
}
elseif util.me.silver() and util.me.palladium() then
results = {
{ type = "item", name = "copper-plate", amount = 1 },
{ type = "item", name = "silver-ore", amount = 1, probability = 0.67 },
{ type = "item", name = "palladium-powder", amount = 1, probability = 0.33 },
}
elseif util.me.platinum() and util.me.palladium() then
results = {
{ type = "item", name = "copper-plate", amount = 1 },
{ type = "item", name = "platinum-powder", amount = 1, probability = 0.5 },
{ type = "item", name = "palladium-powder", amount = 1, probability = 0.5 },
}
elseif util.me.platinum() then
results = {
{ type = "item", name = "copper-plate", amount = 2, probability = 0.75 },
{ type = "item", name = "platinum-powder", amount = 1, probability = 0.5 },
}
elseif util.me.palladium() then
results = {
{ type = "item", name = "copper-plate", amount = 2, probability = 0.75 },
{ type = "item", name = "palladium-powder", amount = 1, probability = 0.5 },
}
else
-- should never happen
results = {
{ type = "item", name = "copper-plate", amount = 2 },
}
end
if util.se6() then
data:extend({
{
type = "autoplace-control",
category = "resource",
name = "rich-copper-ore",
richness = true,
order = "zzzzzzzzzzz"
},
})
end
if data.raw.resource["copper-ore"] then
if mods["space-exploration"] then
-- decrease richness of copper a bit (ok if it stacks with aluminum)
data.raw.resource["copper-ore"].autoplace.richness_expression = data.raw.resource["copper-ore"].autoplace.richness_expression .. "*(3/4)"
else
log("Replacing vanilla copper-ore autoplace")
local resource_autoplace = require('resource-autoplace');
data.raw.resource["copper-ore"].autoplace = resource_autoplace.resource_autoplace_settings {
name = "copper-ore",
order = "b",
base_density = mods.bzaluminum2 and 3 or 4,
has_starting_area_placement = true,
regular_rq_factor_multiplier = 1.1,
starting_rq_factor_multiplier = 1.1,
candidate_spot_count = 22,
}
end
end
data:extend({
{
type = "resource",
name = "rich-copper-ore",
icon = "__bzgold2__/graphics/icons/rich-copper-ore.png",
icon_size = 64, icon_mipmaps = 4,
flags = {"placeable-neutral"},
order="a-b-a",
map_color = {r=0.9, g=0.5, b=0.4},
tree_removal_probability = 0.7,
tree_removal_max_distance = 32 * 32,
minable =
{
hardness = 1,
mining_particle = "copper-ore-particle",
mining_time = 1,
fluid_amount = 1,
required_fluid = "water",
result = "rich-copper-ore"
},
collision_box = {{ -0.1, -0.1}, {0.1, 0.1}},
selection_box = {{ -0.5, -0.5}, {0.5, 0.5}},
if util.se6() then
data.raw.planet.nauvis.map_gen_settings.autoplace_controls["rich-copper-ore"] = {}
data:extend({
autoplace = resource_autoplace.resource_autoplace_settings{
name = "rich-copper-ore",
autoplace_control_name = util.se6() and "rich-copper-ore" or "copper-ore",
order = "b-z",
base_density = 4,
base_spots_per_km2 = 1,
has_starting_area_placement = false,
regular_rq_factor_multiplier = 1,
starting_rq_factor_multiplier = 1,
},
stage_counts = {15000, 9500, 5500, 2900, 1300, 400, 150, 80},
stages =
{
type = "autoplace-control",
category = "resource",
name = "rich-copper-ore",
richness = true,
order = "zzzzzzzzzzz"
},
})
end
data.raw.planet.nauvis.map_gen_settings.autoplace_settings.entity.settings["rich-copper-ore"] = {}
resource_autoplace.initialize_patch_set("rich-copper-ore", true)
data:extend({
{
type = "resource",
name = "rich-copper-ore",
icon = "__bzgold2__/graphics/icons/rich-copper-ore.png",
icon_size = 64, icon_mipmaps = 4,
flags = { "placeable-neutral" },
order = "a-b-a",
map_color = { r = 0.9, g = 0.5, b = 0.4 },
tree_removal_probability = 0.7,
tree_removal_max_distance = 32 * 32,
minable = {
hardness = 1,
mining_particle = "copper-ore-particle",
mining_time = 1,
fluid_amount = 1,
required_fluid = "water",
result = "rich-copper-ore"
},
collision_box = { { -0.1, -0.1 }, { 0.1, 0.1 } },
selection_box = { { -0.5, -0.5 }, { 0.5, 0.5 } },
autoplace = resource_autoplace.resource_autoplace_settings {
name = "rich-copper-ore",
autoplace_control_name = util.se6() and "rich-copper-ore" or "copper-ore",
order = "b-z",
base_density = 4,
base_spots_per_km2 = 1,
has_starting_area_placement = false,
regular_rq_factor_multiplier = 1,
starting_rq_factor_multiplier = 1,
},
stage_counts = { 15000, 9500, 5500, 2900, 1300, 400, 150, 80 },
stages = {
sheet = {
sheet =
{
filename = "__bzgold2__/graphics/entity/ores/hr-rich-copper-ore.png",
priority = "extra-high",
size = 128,
@ -158,56 +159,57 @@ if util.me.platinum() or util.me.palladium() then
variation_count = 8,
scale = 0.5
}
},
},
},
{
type = "item",
name = "rich-copper-ore",
icon_size = 64, icon_mipmaps=4,
icon = "__bzgold2__/graphics/icons/rich-copper-ore.png",
pictures = {
{filename="__bzgold2__/graphics/icons/rich-copper-ore.png", size=64, scale=0.5},
{filename="__bzgold2__/graphics/icons/rich-copper-ore-1.png", size=64, scale=0.5},
{filename="__bzgold2__/graphics/icons/rich-copper-ore-2.png", size=64, scale=0.5},
{filename="__bzgold2__/graphics/icons/rich-copper-ore-3.png", size=64, scale=0.5},
},
{
type = "item",
name = "rich-copper-ore",
icon_size = 64, icon_mipmaps = 4,
icon = "__bzgold2__/graphics/icons/rich-copper-ore.png",
pictures = {
{ filename = "__bzgold2__/graphics/icons/rich-copper-ore.png", size = 64, scale = 0.5 },
{ filename = "__bzgold2__/graphics/icons/rich-copper-ore-1.png", size = 64, scale = 0.5 },
{ filename = "__bzgold2__/graphics/icons/rich-copper-ore-2.png", size = 64, scale = 0.5 },
{ filename = "__bzgold2__/graphics/icons/rich-copper-ore-3.png", size = 64, scale = 0.5 },
},
subgroup = "raw-resource",
order = "t-c-a",
stack_size = 50
},
})
subgroup = "raw-resource",
order = "t-c-a",
stack_size = 50
},
})
data:extend({
{
type = "recipe",
name = "rich-copper",
localised_name = { "item-name.copper-plate" },
category = "smelting",
main_product = "copper-plate",
order = "d[copper-plate]",
enabled = false,
icons = {
{ icon = "__base__/graphics/icons/copper-plate.png", icon_size = 64, icon_mipmaps = 4 },
{ icon = "__bzgold2__/graphics/icons/rich-copper-ore.png", icon_size = 64, scale = 0.25, shift = { -8, 8 } },
-- {icon = "__bzgold__/graphics/icons/silver-ore.png", icon_size = 128, scale=0.125, shift = {8,8}},
-- {icon = "__bzgold__/graphics/icons/platinum-powder.png", icon_size = 64, scale=0.25, shift = {8,-8}},
-- {icon = "__bzgold__/graphics/icons/palladium-powder.png", icon_size = 64, scale=0.25, shift = {-8,-8}},
},
energy_required = 6.4,
ingredients = { { type = "item", name = "rich-copper-ore", amount = 2 } },
results = results,
},
})
util.add_unlock("platinum-processing", "rich-copper")
util.add_unlock("palladium-processing", "rich-copper")
if util.se6() then
se_resources["rich-copper-ore"] = {
order = "b-z-c",
has_starting_area_placement = false,
base_density = 4,
base_spots_per_km2 = 1,
}
end
end
data:extend({
{
type = "recipe",
name = "rich-copper",
localised_name = {"item-name.copper-plate"},
category = "smelting",
main_product = "copper-plate",
order = "d[copper-plate]",
enabled = false,
icons = {
{icon = "__base__/graphics/icons/copper-plate.png", icon_size = 64, icon_mipmaps=4},
{icon = "__bzgold2__/graphics/icons/rich-copper-ore.png", icon_size = 64, scale=0.25, shift = {-8,8}},
-- {icon = "__bzgold__/graphics/icons/silver-ore.png", icon_size = 128, scale=0.125, shift = {8,8}},
-- {icon = "__bzgold__/graphics/icons/platinum-powder.png", icon_size = 64, scale=0.25, shift = {8,-8}},
-- {icon = "__bzgold__/graphics/icons/palladium-powder.png", icon_size = 64, scale=0.25, shift = {-8,-8}},
},
energy_required = 6.4,
ingredients = {{type="item", name="rich-copper-ore", amount=2}},
results = results,
},
})
util.add_unlock("platinum-processing", "rich-copper")
util.add_unlock("palladium-processing", "rich-copper")
if util.se6() then
se_resources["rich-copper-ore"] = {
order = "b-z-c",
has_starting_area_placement = false,
base_density = 4,
base_spots_per_km2 = 1,
}
end
end
end

View file

@ -21,8 +21,6 @@ end
util.add_unlock("processing-unit", "cpu")
util.add_unlock("processing-unit", "mainboard")
if settings.startup["bzgold-catalysis"].value == true then
util.add_prerequisite("coal-liquefaction", "catalysis")
util.remove_prerequisite("coal-liquefaction", "production-science-pack")
util.remove_prerequisite("coal-liquefaction", "advanced-oil-processing")
end
util.add_prerequisite("coal-liquefaction", "catalysis")
util.remove_prerequisite("coal-liquefaction", "production-science-pack")
util.remove_prerequisite("coal-liquefaction", "advanced-oil-processing")