Compare commits

...

9 commits
2.0.1 ... main

Author SHA1 Message Date
Simon Brodtmann
9df5d0fcc3 2.0.3 2025-12-10 19:42:33 +01:00
Simon Brodtmann
ceb4dfe657 Fix autoplace of rich-copper-ore 2025-12-10 19:29:59 +01:00
Simon Brodtmann
4627a45cdb Cleanup 2025-12-10 19:25:46 +01:00
Simon Brodtmann
e11da23987 Fix recipe name of blank-tech-card-silver 2025-11-16 11:53:34 +01:00
pla
1a411368c5
Fix tech coal-liquefaction has no prereq with catalysis off 2025-11-07 11:41:01 +01:00
Simon Brodtmann
99cab50b68 Forgot thanks 2025-11-01 23:00:22 +01:00
Simon Brodtmann
db3137985e 2.0.2 2025-11-01 22:53:22 +01:00
Simon Brodtmann
04a1e986dd Fix booleans being strings 2025-11-01 13:01:42 +01:00
pla
8db4982e5b Fixing K2 matter stuff (#1)
Fixed K2 matter generation
Fixed Matter tech icon size
Sadly the matter conversion recipe icons are not fixed, because the K2 routine doesn't like the 128px icons
Check if Matter recipes already exist, error with Them Thar Hills

![image](/attachments/f1ccec6e-768a-425e-b0dc-1691b8d78037)

Co-authored-by: pla
Reviewed-on: #1
Co-authored-by: pla <pla@noreply.example.org>
Co-committed-by: pla <pla@noreply.example.org>
2025-11-01 13:01:21 +01:00
10 changed files with 250 additions and 234 deletions

View file

@ -1,4 +1,16 @@
---------------------------------------------------------------------------------------------------
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.need_stabilizer = true
params.k2matter.needs_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_technology] then
if not data.raw.technology[params.k2matter.unlocked_by] 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_technology,
name = params.k2matter.unlocked_by,
icons =
{
{
@ -163,11 +163,16 @@ function util.k2matter(params)
},
time = 45,
},
localised_name = {"technology-name.k2-conversion", {"item-name."..params.k2matter.item_name}},
effects = {},
-- localised_name = {"technology-name.k2-conversion", {"item-name."..params.k2matter.item_name}},
},
})
end
matter.make_recipes(params.k2matter)
if params.k2matter.only_deconversion then
matter.make_deconversion_recipe(params.k2matter)
else
matter.make_recipes(params.k2matter)
end
end
@ -1188,8 +1193,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,8 +21,5 @@ 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.1",
"version": "2.0.3",
"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,30 +1,31 @@
-- Matter recipes for Krastorio2
if mods["Krastorio2"] then
local util = require("data-util");
local util = require("data-util")
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}
})
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
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,
scale = 0.2 * 64 / (data.raw.item["gold-ore"].icon_size or 64),
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,
scale = 0.2 * 64 / (data.raw.item["silver-ore"].icon_size or 64),
shift = {0, 4}
}
},

View file

@ -72,6 +72,7 @@ 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,154 +4,153 @@ 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
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)"
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
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
if util.se6() then
data:extend({
{
type = "autoplace-control",
category = "resource",
name = "rich-copper-ore",
richness = true,
order = "zzzzzzzzzzz"
},
})
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
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 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
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 =
if util.se6() then
data.raw.planet.nauvis.map_gen_settings.autoplace_controls["rich-copper-ore"] = {}
data:extend({
{
sheet =
{
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 = {
filename = "__bzgold2__/graphics/entity/ores/hr-rich-copper-ore.png",
priority = "extra-high",
size = 128,
@ -159,57 +158,56 @@ data:extend({
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},
},
},
subgroup = "raw-resource",
order = "t-c-a",
stack_size = 50
},
})
{
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
},
})
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")
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
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,6 +21,8 @@ end
util.add_unlock("processing-unit", "cpu")
util.add_unlock("processing-unit", "mainboard")
util.add_prerequisite("coal-liquefaction", "catalysis")
util.remove_prerequisite("coal-liquefaction", "production-science-pack")
util.remove_prerequisite("coal-liquefaction", "advanced-oil-processing")
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