update to 2.0 and a bit more

This commit is contained in:
Brevven 2025-01-15 02:23:40 -08:00
parent e9ace04946
commit 972e1ab0c2
41 changed files with 871 additions and 201 deletions

149
basic-foundry.lua Normal file
View file

@ -0,0 +1,149 @@
local futil = require("util")
local util = require("data-util");
local item_sounds = require("__base__.prototypes.item_sounds")
local sounds = require("__base__.prototypes.entity.sounds")
local hit_effects = require("__base__.prototypes.entity.hit-effects")
if mods["space-age"] then
if not data.raw.item["basic-foundry"] then
local graphics_set = require("__space-age__.prototypes.entity.foundry-pictures").graphics_set
graphics_set.animation.layers[1].tint = {.6, .8, .8}
data:extend({
{
type = "assembling-machine",
name = "basic-foundry",
icons = {{
icon = "__space-age__/graphics/icons/foundry.png",
tint = {.6, .8, .8},
}},
flags = {"placeable-neutral","player-creation"},
minable = {mining_time = 0.2, result = "basic-foundry"},
fast_replaceable_group = "foundry",
max_health = 350,
corpse = "foundry-remnants",
dying_explosion = "foundry-explosion",
-- circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance,
-- circuit_connector = circuit_connector_definitions["foundry"],
collision_box = {{-2.2, -2.2}, {2.2, 2.2}},
selection_box = {{-2.5, -2.5}, {2.5, 2.5}},
heating_energy = "300kW",
damaged_trigger_effect = hit_effects.entity(),
drawing_box_vertical_extension = 1.3,
-- effect_receiver = { base_effect = { productivity = 0.5 }},
-- module_slots = 4,
icon_draw_specification = {scale = 2, shift = {0, -0.3}},
icons_positioning =
{
{inventory_index = defines.inventory.assembling_machine_modules, shift = {0, 1.25}}
},
allowed_effects = {"consumption", "speed", "productivity", "pollution", "quality"},
crafting_categories = {"basic-metallurgy"},
crafting_speed = 4,
energy_source =
{
type = "burner",
fuel_inventory_size = 3,
usage_priority = "secondary-input",
smoke = {
{
name = "smoke",
frequency = 80,
position = {1.5, -2.3},
starting_vertical_speed = 0.1,
starting_frame_deviation = 60,
}
}
},
energy_usage = "5000kW",
perceived_performance = { minimum = 0.25, performance_to_activity_rate = 2.0, maximum = 20 },
graphics_set = graphics_set,
open_sound = sounds.metal_large_open,
close_sound = sounds.metal_large_close,
working_sound =
{
sound =
{
filename = "__space-age__/sound/entity/foundry/foundry.ogg", volume = 0.5
},
--idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.3 },
fade_in_ticks = 4,
fade_out_ticks = 20,
sound_accents =
{
{ sound = { filename = "__space-age__/sound/entity/foundry/foundry-pipe-out.ogg", volume = 0.9 }, frame = 2, audible_distance_modifier = 0.4 },
{ sound = { filename = "__space-age__/sound/entity/foundry/foundry-slide-close.ogg", volume = 0.65 }, frame = 18, audible_distance_modifier = 0.3 },
{ sound = { filename = "__space-age__/sound/entity/foundry/foundry-clamp.ogg", volume = 0.45 }, frame = 39, audible_distance_modifier = 0.3 },
{ sound = { filename = "__space-age__/sound/entity/foundry/foundry-slide-stop.ogg", volume = 0.7 }, frame = 43, audible_distance_modifier = 0.4 },
{ sound = { variations = sound_variations("__space-age__/sound/entity/foundry/foundry-fire-whoosh", 3, 0.8 )}, frame = 64, audible_distance_modifier = 0.3 },
{ sound = { filename = "__space-age__/sound/entity/foundry/foundry-metal-clunk.ogg", volume = 0.65 }, frame = 64, audible_distance_modifier = 0.4 },
{ sound = { filename = "__space-age__/sound/entity/foundry/foundry-slide-open.ogg", volume = 0.65 }, frame = 74, audible_distance_modifier = 0.3 },
{ sound = { filename = "__space-age__/sound/entity/foundry/foundry-pipe-in.ogg", volume = 0.75 }, frame = 106, audible_distance_modifier = 0.4 },
{ sound = { filename = "__space-age__/sound/entity/foundry/foundry-smoke-puff.ogg", volume = 0.8 }, frame = 106, audible_distance_modifier = 0.3 },
{ sound = { variations = sound_variations("__space-age__/sound/entity/foundry/foundry-pour", 2, 0.7 )}, frame = 110 },
{ sound = { filename = "__space-age__/sound/entity/foundry/foundry-rocks.ogg", volume = 0.65 }, frame = 120, audible_distance_modifier = 0.3 },
{ sound = { filename = "__space-age__/sound/entity/foundry/foundry-blade.ogg", volume = 0.7 }, frame = 126 },
},
audible_distance_modifier = 0.6,
max_sounds_per_type = 2
},
fluid_boxes_off_when_no_fluid_recipe = true,
water_reflection =
{
pictures = futil.sprite_load("__space-age__/graphics/entity/foundry/foundry-reflection",
{
scale = 5,
shift = {0,2}
}),
rotate = false
}
},
{
type = "item",
name = "basic-foundry",
icons = {{
icon = "__space-age__/graphics/icons/foundry.png",
tint = {.6, .8, .8},
}},
subgroup = "smelting-machine",
order = "d[foundry-basic]",
inventory_move_sound = item_sounds.steam_inventory_move,
pick_sound = item_sounds.steam_inventory_pickup,
drop_sound = item_sounds.steam_inventory_move,
place_result = "basic-foundry",
stack_size = 20,
weight = 500 * kg
},
{
type = "recipe",
name = "basic-foundry",
category = "crafting",
enabled = false,
ingredients =
{
{type = "item", name = "zirconia", amount = 50},
{type = "item", name = "steel-plate", amount = 50},
{type = "item", name = "electronic-circuit", amount = 30},
{type = "item", name = "concrete", amount = 20},
},
energy_required = 10,
results = {{type="item", name="basic-foundry", amount=1}}
},
{
type = "recipe",
name = "steel-basic", -- another steel option
localised_name = {"item-name.steel-plate"},
category = "basic-metallurgy",
order = "a[smelting]-c[steel-plate]-z",
enabled = false,
energy_required = 3.2,
ingredients = {util.item("iron-plate", 3), util.item("coal", 1)},
results = {util.item("steel-plate", 1)},
},
})
end
util.add_new_crafting_category("basic-metallurgy")
util.add_crafting_category("assembling-machine", "foundry", "basic-metallurgy")
util.add_unlock("advanced-material-processing-2", "steel-basic")
util.add_unlock("advanced-material-processing-2", "basic-foundry")
util.add_prerequisite("nuclear-power", "advanced-material-processing-2")
end

View file

@ -1,4 +1,25 @@
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 2.0.2
Date: 2025-01-14
Fixes:
- Working with Asteroid Mining
---------------------------------------------------------------------------------------------------
Version: 2.0.1
Date: 2025-01-14
Fixes:
- Basic foundry supports hot metals
- Prevent a mod load error, improve general mod compatibility
---------------------------------------------------------------------------------------------------
Version: 2.0.0
Date: 2025-01-13
Changes:
- Compatible with 2.0 and Space Age
- New zircon item graphics, improved zircon entity graphics
- Zirconium smelting takes one more step than in 1.1, but has more forgiving ratios.
- Some recipe and tech tree reworks. Cermet no longer used in LDS.
- With Space Age, add an inefficient basic foundry for creating simple alloys on Nauvis. It cannnot craft advanced foundry recipes.
- Alternative production chains on Vulcanus and Gleba. Uses recyclers on Fulgora....
---------------------------------------------------------------------------------------------------
Version: 0.7.3 Version: 0.7.3
Date: 2024-02-07 Date: 2024-02-07
Fixes: Fixes:

View file

@ -0,0 +1,17 @@
local util = require("data-util");
util.add_hot_metals({
{name="zirconium-plate", icons={
{ icon = "__bzzirconium__/graphics/icons/zirconium-plate.png", icon_size = 128},
{ icon = "__bzzirconium__/graphics/icons/zirconium-plate.png", icon_size = 128, tint={.9,.3,0, .5}},
}},
{name="zircaloy-4", icons={
{ icon = "__bzzirconium__/graphics/icons/zircaloy-4.png", icon_size = 128},
{ icon = "__bzzirconium__/graphics/icons/zircaloy-4.png", icon_size = 128, tint={.9,.3,0, .5}},
}},
})
if HotMetals then
table.insert(HotMetals.craftingCategories, "basic-metallurgy")
end

View file

@ -147,9 +147,11 @@ function regenerate_ore(event)
for w in event.parameters:gmatch("%S+") do table.insert(params, w) end for w in event.parameters:gmatch("%S+") do table.insert(params, w) end
if #params == 1 and params[1] == "all" then if #params == 1 and params[1] == "all" then
for _, resource in pairs(me.resources) do for _, resource in pairs(me.resources) do
if prototypes.entity[resource] then
game.print("Regenerating "..resource) game.print("Regenerating "..resource)
game.regenerate_entity(resource) game.regenerate_entity(resource)
end end
end
return return
end end
if not (#params == 2 or #params == 5) then if not (#params == 2 or #params == 5) then

View file

@ -16,3 +16,7 @@ for i, entity in pairs(data.raw.furnace) do
end end
end end
end end
-- Make sure these don't exist, just in case
util.remove_raw("recipe", "stone-recycling")
util.remove_raw("recipe", "zircon-recycling")

View file

@ -1,5 +1,6 @@
require("tech-updates") require("tech-updates")
require("zirconium-recipe-updates") require("zirconium-recipe-updates")
require("zirconium-asteroid-updates")
require("zircon-matter") require("zircon-matter")
require("map-gen-preset-updates") require("map-gen-preset-updates")
require("omni") require("omni")
@ -10,10 +11,14 @@ require("compatibility/crafting-efficiency")
local util = require("data-util"); local util = require("data-util");
if mods.Asteroid_Mining then if mods.Asteroid_Mining and not data.raw.item["asteroid-zircon"] then
require("__Asteroid_Mining__.scripts.addmodule") util.addtype("zircon", {a = 0,r = 110, g = 40, b =70})
if not data.raw.item["asteroid-zircon"] then end
-- For Zirconium we only add if it's not already added by Asteroid_Mining
amfunc.addtype("zircon", {a = 0,r = 110, g = 40, b =70}) if mods["any-planet-start"] then
end util.set_tech_recipe("zirconia-processing", {
{"automation-science-pack", 1},
{"logistic-science-pack", 1},
})
util.set_prerequisite("zirconia-processing", {"logistic-science-pack"})
end end

View file

@ -2,6 +2,7 @@
-- This file will be overwritten in mod zipfiles, edit bzlib/data-util.lua -- This file will be overwritten in mod zipfiles, edit bzlib/data-util.lua
-- WARNING WARNING WARNING -- WARNING WARNING WARNING
local futil = require("util")
local me = require("me") local me = require("me")
local util = {} local util = {}
@ -117,6 +118,15 @@ function util.contains(table, sought)
return false return false
end end
-- copies a recipe, giving the copy a new name
function util.copy_recipe(recipe_name, new_recipe_name)
if data.raw.recipe[recipe_name] then
new_recipe = futil.table.deepcopy(data.raw.recipe[recipe_name])
new_recipe.name = new_recipe_name
data:extend({new_recipe})
end
end
-- Add the gleba rock. If it exists, still add resource to mine from it -- Add the gleba rock. If it exists, still add resource to mine from it
function util.add_gleba_rock(resource, amount_min, amount_max) function util.add_gleba_rock(resource, amount_min, amount_max)
if (not data.raw.planet.gleba or if (not data.raw.planet.gleba or
@ -368,6 +378,30 @@ function util.use_fluid_mining_final()
util.remove_raw("technology", "uranium-mining") util.remove_raw("technology", "uranium-mining")
end end
-- Add vacuum if it hasn't been added yet
function util.add_vacuum()
if not data.raw.fluid.vacuum then
data:extend({
{
type = "fluid",
name = "vacuum",
icons = { util.vacuum_icon, },
visualization_color = util.vacuum_vis,
subgroup = "fluid",
order = "d[vacuum]",
default_temperature = 1500,
max_temperature = 2000,
gas_temperature = 0,
heat_capacity = "0.01kJ",
base_color = {0.9, 0.9, 0.9},
flow_color = {0.8, 0.8, 0.9},
auto_barrel = false,
},
})
end
end
-- If Hot metals mod is enabled, mark these metals as hot -- If Hot metals mod is enabled, mark these metals as hot
function util.add_hot_metals(metals) function util.add_hot_metals(metals)
if HotMetals and HotMetals.items then if HotMetals and HotMetals.items then
@ -1093,9 +1127,6 @@ function multiply_recipe(recipe, multiple)
else else
recipe.energy_required = 0.5 * multiple -- 0.5 is factorio default recipe.energy_required = 0.5 * multiple -- 0.5 is factorio default
end end
if recipe.result_count then
recipe.result_count = recipe.result_count * multiple
end
if recipe.results then if recipe.results then
for i, result in pairs(recipe.results) do for i, result in pairs(recipe.results) do
if result.name then if result.name then
@ -1112,10 +1143,22 @@ function multiply_recipe(recipe, multiple)
end end
end end
end end
if not recipe.results and not recipe.result_count then multiply_ingredients(recipe, multiple)
-- implicit one item result
recipe.result_count = multiple
end end
end
-- multiply the ingredient cost of a recipe
function util.multiply_ingredients(recipe_name, multiple, options)
if not should_force(options) and bypass(recipe_name) then return end
if data.raw.recipe[recipe_name] then
me.add_modified(recipe_name)
prepare_redo_recycling(recipe_name)
multiply_ingredients(data.raw.recipe[recipe_name], multiple)
end
end
function multiply_ingredients(recipe, multiple)
if recipe then
if recipe.ingredients then if recipe.ingredients then
for i, ingredient in pairs(recipe.ingredients) do for i, ingredient in pairs(recipe.ingredients) do
if ingredient.name then if ingredient.name then
@ -1276,6 +1319,13 @@ function add_time(recipe, amount)
end end
end end
-- Set localised name
function util.set_localised_name(recipe_name, localised_name)
if data.raw.recipe[recipe_name] then
data.raw.recipe[recipe_name].localised_name = localised_name
end
end
-- Set recipe category -- Set recipe category
function util.set_category(recipe_name, category, options) function util.set_category(recipe_name, category, options)
if not should_force(options) and bypass(recipe_name) then return end if not should_force(options) and bypass(recipe_name) then return end
@ -1466,12 +1516,14 @@ function util.add_minable_result(t, name, result)
if data.raw[t] and data.raw[t][name] and data.raw[t][name].minable then if data.raw[t] and data.raw[t][name] and data.raw[t][name].minable then
if data.raw[t][name].minable.result and not data.raw[t][name].minable.results then 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.results = {
{data.raw[t][name].minable.result ,data.raw[t][name].minable.count}} util.item(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 = nil
data.raw[t][name].minable.result_count = nil data.raw[t][name].minable.result_count = nil
end end
if data.raw[t][name].minable.results then if data.raw[t][name].minable.results then
table.insert(data.raw[t][name].minable.results, result) table.insert(data.raw[t][name].minable.results, result)
else
data.raw[t][name].minable.results = {result}
end end
end end
end end
@ -1717,4 +1769,245 @@ function prepare_redo_recycling(recipe_name)
end end
-- According to https://mods.factorio.com/mod/Asteroid_Mining, the
-- following function is under this MIT license (similar license, different author):
--
-- Copyright (c) 2021 Silari
-- Permission is hereby granted, free of charge, to any person obtaining a copy of
-- this software and associated documentation files (the "Software"), to deal in
-- the Software without restriction, including without limitation the rights to
-- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-- the Software, and to permit persons to whom the Software is furnished to do so,
-- subject to the following conditions:
--
-- The above copyright notice and this permission notice shall be included in all
-- copies or substantial portions of the Software.
--
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-- FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-- COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-- IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
function util.addtype(name,atint,desc) --,pictures)
require("__Asteroid_Mining__/scripts/icons.lua") -- Has generateicons function
local allowprod = settings.startup["astmine-allowprod"].value
local useminer = settings.startup["astmine-enableminer"].value
local hiderec = not settings.startup["astmine-hiderecipes"].value
local recenabled = false
local chunkstacksize = 1000
if mods["space-exploration"] then
chunkstacksize = 200
end
--Adds given recipe to prod modules allowed list
function addmodules(name)
if useminer then -- Only add these if we're actually enabled.
table.insert(data.raw.module["productivity-module"].limitation, name)
table.insert(data.raw.module["productivity-module-2"].limitation, name)
table.insert(data.raw.module["productivity-module-3"].limitation, name)
end
end
--Result for processing resource specific chunks
local normal = { -- Gives 4000 chunks on average
{
amount_min = 3,
amount_max = 5,
probability = 1
}
}
local chunkamount = 1000
-- Space age makes rockets cost 1/20th as much. Give less materials, same ratio.
if mods["space-age"] then
chunkamount = 50
end
--ITEM: Miner-module, which is what we send into space to get the asteroid-mixed item
local minermodule = {
icon = "__Asteroid_Mining__/graphics/mining-sat.png",
icon_mipmaps = 4,
icon_size = 64,
name = "miner-module",
localised_name = {"item-name.miner-module", "Mixed"},
localised_description = {"item-description.miner-module", "mixed"},
order = "n[miner-module]",
rocket_launch_products = {{
name="asteroid-mixed",
amount=chunkamount,
type="item"
}},
send_to_orbit_mode = "automated",
stack_size = 1,
subgroup = subminer,
type = "item"
}
--Make a new item with the given name+"-chunk" and recipe to turn into name
--eg addtype('iron-ore') makes iron-ore-chunk and recipe for iron-ore-chunk->100 iron-ore
--log("Making new items for " .. name)
--ITEM Resource chunk for this item
local suffix = "-chunk"
-- Sometimes we need to override the default suffix because the item name already exists.
-- TODO - change this so it automatically detects name-chunk item exists and change suffix - BUT
-- that would cause issues if 'name' is in more than one module - eg angels/bobs overlap, bob+bzlead, etc.
-- Maybe add in something that tracks what 'name's have been added and skip it if it has.
if string.find(name,"angels-ore",1,true) then
suffix = "-chunk-am"
end
--log(name .. " name:suffix " .. suffix)
local reschunk = {
icons = {
{
icon = "__Asteroid_Mining__/graphics/resource-chunk.png",
icon_mipmaps = 4,
icon_size = 64
},
{
icon = "__Asteroid_Mining__/graphics/resource-chunk-mask.png",
icon_mipmaps = 4,
icon_size = 64,
tint = atint
}
},
name = name .. suffix,
localised_name = {"item-name.resource-chunk", {"item-name." .. name}},
localised_description = {"item-description.resource-chunk", {"item-name." .. name}},
order = "d[asteroidchunk-" .. name .. "]",
stack_size = 25,
subgroup = subchunk,
type = "item"
}
--RECIPE Turn resource chunk into 24 of item
local procreschunk = {
allow_decomposition = false,
always_show_products = true,
category = reccategory,
enabled = hiderec,
energy_required = 5,
ingredients = {
{
name=name .. suffix,
amount=1,
type="item"
}
},
name = name .. suffix,
order = "d[asteroidchunk-" .. name .. "]",
localised_name = {"recipe-name.resource-chunk", {"item-name." .. name}},
localised_description = {"recipe-description.resource-chunk", {"item-name." .. name}},
results = {{name=name,amount=24,type="item"}},
type = "recipe"
}
if desc == nil then
desc = ""
end
--ITEM Resource specific asteroid chunk.
local newasteroid = {
icons = {
{
icon = "__Asteroid_Mining__/graphics/asteroid-chunk.png",
icon_mipmaps = 4,
icon_size = 64
},
{
icon = "__Asteroid_Mining__/graphics/asteroid-chunk-mask.png",
icon_mipmaps = 4,
icon_size = 64,
tint = atint
}
},
name = "asteroid-" .. name,
localised_name = {"item-name.asteroid-chunk", {"item-name." .. name}},
localised_description = {"item-description.asteroid-chunk", {"item-name." .. name}, desc},
order = "k[zasteroid-" .. name .. "]",
stack_size = chunkstacksize,
subgroup = subchunk,
type = "item"
}
--log(serpent.block(newasteroid))
--We need to set the result name to the name of our resource chunk
mynormal = table.deepcopy(normal)
mynormal[1].name = name .. suffix
mynormal[1].type = "item"
--Expensive mode is gone.
--myexpensive = table.deepcopy(expensive)
--myexpensive[1].name = name .. suffix
--RECIPE: Processing the asteroid chunks into resource chunks
local processasteroid = {
allow_decomposition = false,
category = reccategory,
name = "asteroid-" .. name,
localised_name = {"recipe-name.asteroid-chunk", {"item-name." .. name}},
localised_description = {"recipe-description.asteroid-chunk", {"item-name." .. name}},
order = "k[zasteroid-" .. name .. "]",
ingredients = {{name="asteroid-" .. name,amount=1,type="item"}},
results = mynormal,
always_show_products = true,
enabled = hiderec,
energy_required = 10,
--subgroup = subchunk,
type = "recipe"
}
--ITEM Miner module to get resource specific asteroids.
local minerres = table.deepcopy(minermodule)
minerres.name = "miner-module-" .. name
minerres.rocket_launch_products = {{
name="asteroid-" .. name,
amount=chunkamount,
type="item"
}}
minerres.order = "n[miner-module" .. name .. "]"
minerres.icons = generateicons(name,atint) --Generate icon layers using given item
minerres.localised_name = {"item-name.miner-module", {"item-name." .. name}}
minerres.localised_description = {"item-description.miner-module", {"item-name." .. name}}
--RECIPE: Recipe to make miner module to get resource specific asteroids. Always the default category
local newminer = {
enabled = recenabled,
ingredients = {
{
name="electric-mining-drill",
amount=5,
type="item"
},
{
name="radar",
amount=5,
type="item"
},
{
name=name,
amount=5,
type="item"
}
},
name = "miner-module-" .. name,
results = {{name="miner-module-" .. name,amount=1,type="item"}},
type = "recipe"
}
data:extend{reschunk,procreschunk,newasteroid,processasteroid}
if useminer then -- Disabled in 1.0 for the new generation system, once in place.
data:extend{minerres,newminer}
--This makes the miner module available when rocket silo is researched
table.insert(data.raw.technology["rocket-silo"].effects, {type = "unlock-recipe", recipe = "miner-module-" .. name})
if not hiderec then
table.insert(data.raw.technology["rocket-silo"].effects, {type = "unlock-recipe", recipe = "asteroid-" .. name})
table.insert(data.raw.technology["rocket-silo"].effects, {type = "unlock-recipe", recipe = name .. suffix})
end
end
if allowprod then -- Setting to enable prod module usage in asteroid processing
addmodules(processasteroid.name)
end
end
-- END of alternate licenscing
return util return util

View file

@ -4,4 +4,5 @@ require("zirconium-recipe")
require("magazine") require("magazine")
require("zirconium-enriched") -- Enriched for Krastorio 2 require("zirconium-enriched") -- Enriched for Krastorio 2
require("zirconium-recipe-se") -- Space Exploration special recipes (depends on K2 if present) require("zirconium-recipe-se") -- Space Exploration special recipes (depends on K2 if present)
require("compatibility.hot-metals")
-- require("zirconium-compressed") -- require("zirconium-compressed")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

Before After
Before After

Binary file not shown.

BIN
graphics/icons/zircon-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Before After
Before After

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

View file

@ -1,6 +1,6 @@
{ {
"name": "bzzirconium", "name": "bzzirconium",
"version": "2.0.0", "version": "2.0.2",
"factorio_version": "2.0", "factorio_version": "2.0",
"title": "Zirconium", "title": "Zirconium",
"author": "Brevven", "author": "Brevven",
@ -20,6 +20,6 @@
"? bztitanium >= 0.12.4", "? bztitanium >= 0.12.4",
"? bztungsten >= 0.5.0" "? bztungsten >= 0.5.0"
], ],
"description": "Adds zircon, zirconia, zirconium, and cermet to the base game.\n\nCompatible with Space Age and more. A standalone piece of BZ Mods." "description": "Adds zircon, zirconia, zirconium, and more to the base game.\n\nCompatible with Space Age and many other mods. A standalone piece of BZ Mods."
} }

View file

@ -1,5 +1,6 @@
[entity-name] [entity-name]
zircon=Zircon zircon=Zircon
basic-foundry=Basic foundry
[autoplace-control-names] [autoplace-control-names]
zircon=[item=zircon] Zircon zircon=[item=zircon] Zircon
@ -10,6 +11,7 @@ zirconium-dust=Zircon dust
zirconia=Zirconia zirconia=Zirconia
zirconium-plate=Zirconium plate zirconium-plate=Zirconium plate
zirconium-ingot=Zirconium Ingot zirconium-ingot=Zirconium Ingot
zirconium-sponge=Zirconium sponge
enriched-zircon=Enriched zircon enriched-zircon=Enriched zircon
compressed-zircon=Compressed zircon compressed-zircon=Compressed zircon
cermet=Cermet cermet=Cermet
@ -18,6 +20,7 @@ zircaloy-4=Zircaloy 4
explosive-rounds-magazine=Explosive rounds magazine explosive-rounds-magazine=Explosive rounds magazine
explosive-rounds-rifle-magazine=Explosive rounds rifle magazine explosive-rounds-rifle-magazine=Explosive rounds rifle magazine
explosive-rounds-anti-material-rifle-magazine=Explosive rounds anti-materiel rifle magazine explosive-rounds-anti-material-rifle-magazine=Explosive rounds anti-materiel rifle magazine
basic-foundry=Basic foundry
[item-description] [item-description]
zircon=Can be smelted into zirconia zircon=Can be smelted into zirconia
@ -26,12 +29,15 @@ enriched-zircon=Can be efficiently smelted into zirconia.
enriched-zirconia=Can be efficiently smelted into zirconium plates. enriched-zirconia=Can be efficiently smelted into zirconium plates.
cermet=Advanced ceramic/metal composites. cermet=Advanced ceramic/metal composites.
zirconium-tungstate=A material with interesting thermal properties. zirconium-tungstate=A material with interesting thermal properties.
basic-foundry=A burner foundry with limited use. Where could we find better materals to make a better one?
[fluid-name] [fluid-name]
molten-zirconium=Molten zirconium molten-zirconium=Molten zirconium
vacuum=Vacuum
[technology-name] [technology-name]
zirconia-processing=Zirconia processing zirconia-processing=Zirconia processing
zirconium-processing=Zirconium processing
cermet=Cermet cermet=Cermet
enriched-zircon=Enriched zircon enriched-zircon=Enriched zircon
enriched-zirconia=Enriched zirconia enriched-zirconia=Enriched zirconia
@ -51,12 +57,15 @@ zirconium-plate=__ITEM__zirconium-plate__
smelt-compressed-zircon=__ITEM__zirconia__ smelt-compressed-zircon=__ITEM__zirconia__
zircon-dust=__ITEM__zircon-dust__ zircon-dust=__ITEM__zircon-dust__
dirty-water-filtration-zircon=Filter dirty water [item=zircon] dirty-water-filtration-zircon=Filter dirty water [item=zircon]
zircon-synthesis=Zircon synthesis
zirconium-gettering=Zirconium gettering
[recipe-description] [recipe-description]
zircon-synthesis=Use Gleban biological processes to synthesize zircon from purer materials.
enriched-zircon=Enrich zircon, purifying with sulfuric-acid [fluid=sulfuric-acid] and water [fluid=water], improving the final yield. Produce dirty water [fluid=dirty-water] as a byproduct. enriched-zircon=Enrich zircon, purifying with sulfuric-acid [fluid=sulfuric-acid] and water [fluid=water], improving the final yield. Produce dirty water [fluid=dirty-water] as a byproduct.
enriched-zirconia=Further enrich zirconia, purifying with hydrogen chloride [fluid=hydrogen-chloride] and water [fluid=water], improving the final yield. Produce dirty water [fluid=dirty-water] as a byproduct. enriched-zirconia=Further enrich zirconia, purifying with hydrogen chloride [fluid=hydrogen-chloride] and water [fluid=water], improving the final yield. Produce dirty water [fluid=dirty-water] as a byproduct.
dirty-water-filtration-zircon=Filter dirty water, giving zircon [item=zircon] and stone [item=stone] (probabilistically). dirty-water-filtration-zircon=Filter dirty water, giving zircon [item=zircon] and stone [item=stone] (probabilistically).
zirconia-from-egg=Pentapod carapace seems to be made primarily of zirconia, and starts developing in the egg.
# Settings # Settings
[mod-setting-name] [mod-setting-name]
@ -74,6 +83,3 @@ bzzirconium-enable-intermediates=Enable cermet, an advanced intermediate made fr
bzzirconium-enable-sorting=Enable "sorting" recipes to convert between zircon and stone. This is no longer as useful for burner phase as it used to be, but left as an option for certain map layouts or existing factories. bzzirconium-enable-sorting=Enable "sorting" recipes to convert between zircon and stone. This is no longer as useful for burner phase as it used to be, but left as an option for certain map layouts or existing factories.
bzzirconium-early=If [color=green]enabled[/color], zircon is required in small quantities early in the game.\nIf [color=orange]disabled[/color], zircon is not required until after logistic science. bzzirconium-early=If [color=green]enabled[/color], zircon is required in small quantities early in the game.\nIf [color=orange]disabled[/color], zircon is not required until after logistic science.
bzzirconium-ammo=If enabled, adds a new explosive ammunition magazine. bzzirconium-ammo=If enabled, adds a new explosive ammunition magazine.
[string-mod-setting]
bzzirconium-enable-intermediates-lds=Yes, and __ITEM__cermet__ in __ITEM__low-density-structure__
bzzirconium-enable-intermediates-yes=Yes, but not in __ITEM__low-density-structure__

View file

@ -74,7 +74,3 @@ bzzirconium-enable-intermediates=セラミックと金属から作られる先
bzzirconium-enable-sorting=ジルコンと石の「選別」レシピを有効にします。燃焼式の時代において以前ほど有用ではなくなりましたが、特定のマップレイアウトや既存の工場のためにオプションとして残してあります。 bzzirconium-enable-sorting=ジルコンと石の「選別」レシピを有効にします。燃焼式の時代において以前ほど有用ではなくなりましたが、特定のマップレイアウトや既存の工場のためにオプションとして残してあります。
bzzirconium-early=[color=green]有効[/color]にした場合, ゲーム序盤で小量のジルコンが必要となります。\n[color=orange]無効[/color]にした場合、必要となるのは物流サイエンスパック以降になります。 bzzirconium-early=[color=green]有効[/color]にした場合, ゲーム序盤で小量のジルコンが必要となります。\n[color=orange]無効[/color]にした場合、必要となるのは物流サイエンスパック以降になります。
bzzirconium-ammo=有効にした場合、新たに炸裂弾倉が追加されます。 bzzirconium-ammo=有効にした場合、新たに炸裂弾倉が追加されます。
[string-mod-setting]
bzzirconium-enable-intermediates-lds=はい: __ITEM__low-density-structure__ にも __ITEM__cermet__ を使用する。
bzzirconium-enable-intermediates-yes=はい: ただし __ITEM__low-density-structure__ には使用しない。
bzzirconium-enable-intermediates-no=いいえ

View file

@ -59,6 +59,3 @@ bzzirconium-enable-sorting=돌 분류 사용
bzzirconium-recipe-bypass=이러한 제작법 수정을 건너뜁니다(콤마로 구분된 목록). bzzirconium-recipe-bypass=이러한 제작법 수정을 건너뜁니다(콤마로 구분된 목록).
bzzirconium-enable-intermediates=세라믹과 금속으로 만든 고급 중간체인 서멧을 활성화합니다. bzzirconium-enable-intermediates=세라믹과 금속으로 만든 고급 중간체인 서멧을 활성화합니다.
bzzirconium-enable-sorting=지르콘과 돌 사이를 전환하기 위해 "비슷한" 제작법을 활성화합니다. 이 기능은 더 이상 화력 단계에 유용하지 않지만 특정 지도 레이아웃이나 기존 공장에 대한 옵션으로 남아 있습니다. bzzirconium-enable-sorting=지르콘과 돌 사이를 전환하기 위해 "비슷한" 제작법을 활성화합니다. 이 기능은 더 이상 화력 단계에 유용하지 않지만 특정 지도 레이아웃이나 기존 공장에 대한 옵션으로 남아 있습니다.
[string-mod-setting]
bzzirconium-enable-intermediates-lds=예, 그리고 __ITEM__low-density-structure__에 __ITEM__cermet__
bzzirconium-enable-intermediates-yes=예, 하지만 __ITEM__low-density-structure__에 없음.

View file

@ -66,6 +66,3 @@ bzzirconium-recipe-bypass=Пропустить изменение этих ре
bzzirconium-byproduct=Если включено и используется мод Titanium, производство диоксида циркония будет давать титан в качестве побочного продукта. bzzirconium-byproduct=Если включено и используется мод Titanium, производство диоксида циркония будет давать титан в качестве побочного продукта.
bzzirconium-enable-intermediates=Включает металлокерамику, продвинутый промежуточный продукт, изготовленный из керамики и металлов. bzzirconium-enable-intermediates=Включает металлокерамику, продвинутый промежуточный продукт, изготовленный из керамики и металлов.
bzzirconium-enable-sorting=Включите рецепты "сортировки" для преобразования между цирконом и камнем. Это уже не так полезно для фазы сгорания, как раньше, но оставлено как опция для определенных макетов карт или существующих фабрик. bzzirconium-enable-sorting=Включите рецепты "сортировки" для преобразования между цирконом и камнем. Это уже не так полезно для фазы сгорания, как раньше, но оставлено как опция для определенных макетов карт или существующих фабрик.
[string-mod-setting]
bzzirconium-enable-intermediates-lds=Да, и __ITEM__cermet__ в __ITEM__low-density-structure__
bzzirconium-enable-intermediates-yes=Да, но не в __ITEM__low-density-structure__

View file

@ -65,10 +65,6 @@ bzzirconium-recipe-bypass=跳过修改这些合成(用逗号分开)。
bzzirconium-byproduct=如果启用且和BZ-钛游玩时,氧化锆产线将会产出钛矿为副产品。 bzzirconium-byproduct=如果启用且和BZ-钛游玩时,氧化锆产线将会产出钛矿为副产品。
bzzirconium-enable-intermediates=启用金属陶瓷,一种由陶瓷和金属制作而成的中间产品。 bzzirconium-enable-intermediates=启用金属陶瓷,一种由陶瓷和金属制作而成的中间产品。
bzzirconium-enable-sorting=启用分拣配方,用于转换锆矿和石矿。此变动不在像以前一样在热能阶段有用,但可以作为一个选项方便布局。 bzzirconium-enable-sorting=启用分拣配方,用于转换锆矿和石矿。此变动不在像以前一样在热能阶段有用,但可以作为一个选项方便布局。
[string-mod-setting]
bzzirconium-enable-intermediates-lds=启用:加进轻质框架
bzzirconium-enable-intermediates-yes=启用:不加进轻质框架
bzzirconium-enable-intermediates-no=不启用
[mod-name] [mod-name]
bzzirconium=BZ-锆 bzzirconium=BZ-锆

10
me.lua
View file

@ -18,18 +18,14 @@ function me.early()
end end
function me.ammo() function me.ammo()
return me.get_setting("bzzirconium-ammo") return true
-- return me.get_setting("bzzirconium-ammo")
end end
function me.use_cermet() function me.use_cermet()
if me.get_setting("bz-all-intermediates") then return true end if me.get_setting("bz-all-intermediates") then return true end
return me.get_setting("bzzirconium-enable-intermediates") == "yes" or me.cermet_lds() return me.get_setting("bzzirconium-enable-intermediates") == "yes"
end
function me.cermet_lds()
if me.get_setting("bz-all-intermediates") then return true end
return me.get_setting("bzzirconium-enable-intermediates") == "lds"
end end
function me.enable_sorting() function me.enable_sorting()

View file

@ -18,8 +18,8 @@ data:extend({
type = "string-setting", type = "string-setting",
name = "bzzirconium-enable-intermediates", name = "bzzirconium-enable-intermediates",
setting_type = "startup", setting_type = "startup",
default_value = "lds", default_value = "no",
allowed_values = {"lds", "yes", "no"}, allowed_values = {"yes", "no"},
order = "b-a-a", order = "b-a-a",
}, },
{ {
@ -29,18 +29,19 @@ data:extend({
default_value = true, default_value = true,
order = "c-a-a", order = "c-a-a",
}, },
{ -- {
type = "bool-setting", -- type = "bool-setting",
name = "bzzirconium-ammo", -- name = "bzzirconium-ammo",
setting_type = "startup", -- setting_type = "startup",
default_value = true, -- default_value = true,
order = "d-a-a", -- order = "d-a-a",
}, -- },
not mods.quality and
{ {
type = "bool-setting", type = "bool-setting",
name = "bzzirconium-enable-sorting", name = "bzzirconium-enable-sorting",
setting_type = "startup", setting_type = "startup",
default_value = false, default_value = false,
order = "m-a-a", order = "m-a-a",
}, } or nil,
}) })

View file

@ -1,9 +1,10 @@
local util = require("__bzzirconium__.data-util"); local util = require("__bzzirconium__.data-util");
util.add_prerequisite("advanced-material-processing-2", "zirconia-processing") util.add_prerequisite("advanced-material-processing", "zirconia-processing")
util.add_prerequisite("low-density-structure", "zirconia-processing") util.add_prerequisite("low-density-structure", "zirconia-processing")
util.add_prerequisite("nuclear-power", "zirconia-processing") util.set_prerequisite("explosives", {"zirconium-processing"})
util.add_prerequisite("explosives", "zirconia-processing") util.add_prerequisite("military-3", "zirconium-processing")
util.add_prerequisite("nuclear-power", "zirconium-processing")
-- Nixie tubes -- Nixie tubes
util.add_prerequisite("cathodes", "zirconia-processing") util.add_prerequisite("cathodes", "zirconia-processing")

View file

@ -1,21 +1,31 @@
local util = require("data-util"); local util = require("data-util");
-- Add zircon to rocks -- Add zircon to rocks
local min = 9 local min = 1
local max = 11 local max = 5
if mods["alien-biomes"] then if util.me.early() then
min = 5 min = 7
max = 7 max = 15
end end
for _, e in pairs(data.raw["simple-entity"]) do for _, e in pairs(data.raw["simple-entity"]) do
if (e.subgroup == "grass" or e.subgroup == "wrecks") and e.name:match("rock%-") then if (e.subgroup == "grass" or e.subgroup == "wrecks") and e.name:match("rock") then
local adjusted_max = e.name:match("huge") and max * 2 or max local adjusted_max = e.name:match("huge") and max * 2 or max
local adjusted_min = e.name:match("huge") and min * 2 or min local adjusted_min = e.name:match("huge") and min * 2 or min
util.add_minable_result("simple-entity", e.name, {name="zircon", amount_min=adjusted_min, amount_max=adjusted_max}) util.add_minable_result("simple-entity", e.name, {type="item", name="zircon", amount_min=adjusted_min, amount_max=adjusted_max})
end end
end end
-- Add zircon to poppable rock recipes -- Add zirconia to stomper shells
min = 1
max = 10
for _, e in pairs(data.raw["simple-entity"]) do
if (e.subgroup == "grass") and e.name:match("shell") then
util.add_minable_result("simple-entity", e.name, {type="item", name="zirconia", amount_min=min, amount_max=max})
end
end
-- Add zircon to ploppable rock recipes
-- K2 -- K2
util.add_ingredient("rock-big", "zircon", 15) util.add_ingredient("rock-big", "zircon", 15)
@ -25,3 +35,6 @@ util.add_ingredient("rock-huge", "zircon", 30)
util.add_ingredient("dect-base-rock-big", "zircon", 15) util.add_ingredient("dect-base-rock-big", "zircon", 15)
util.add_ingredient("dect-base-sand-rock-big", "zircon", 15) util.add_ingredient("dect-base-sand-rock-big", "zircon", 15)
util.add_ingredient("dect-base-rock-huge", "zircon", 30) util.add_ingredient("dect-base-rock-huge", "zircon", 30)
-- Do this last so we don't further modify it with the above
util.add_gleba_rock("zircon")

View file

@ -22,12 +22,12 @@ data:extend({
}, },
{ {
type = "resource", type = "resource",
icon_size = 64, icon_mipmaps = 3,
name = "zircon", name = "zircon",
icon = "__bzzirconium__/graphics/icons/zircon.png", icon = "__bzzirconium__/graphics/icons/zircon.png",
icon_size = 128,
flags = {"placeable-neutral"}, flags = {"placeable-neutral"},
order="a-b-a", order="a-b-a",
map_color = {r=0.90, g=0.70, b=0.70}, map_color = {235, 141, 172},
tree_removal_probability = 0.7, tree_removal_probability = 0.7,
tree_removal_max_distance = 32 * 32, tree_removal_max_distance = 32 * 32,
minable = minable =
@ -66,16 +66,18 @@ data:extend({
{ {
type = "item", type = "item",
name = "zircon", name = "zircon",
icon_size = 64, icon_mipmaps = 3, icon_size = 128,
icon = "__bzzirconium__/graphics/icons/zircon.png", icon = "__bzzirconium__/graphics/icons/zircon.png",
pictures = { pictures = {
{filename="__bzzirconium__/graphics/icons/zircon.png", size=64, scale=0.25}, {filename="__bzzirconium__/graphics/icons/zircon.png", size=128, scale=0.25},
{filename="__bzzirconium__/graphics/icons/zircon-2.png", size=64, scale=0.25}, {filename="__bzzirconium__/graphics/icons/zircon-1.png", size=128, scale=0.25},
{filename="__bzzirconium__/graphics/icons/zircon-3.png", size=64, scale=0.25}, {filename="__bzzirconium__/graphics/icons/zircon-2.png", size=128, scale=0.25},
{filename="__bzzirconium__/graphics/icons/zircon-4.png", size=64, scale=0.25}, {filename="__bzzirconium__/graphics/icons/zircon-3.png", size=128, scale=0.25},
{filename="__bzzirconium__/graphics/icons/zircon-4.png", size=128, scale=0.25},
}, },
subgroup = "raw-resource", subgroup = "raw-resource",
order = "t-c-a", order = "t-c-a",
weight = 1*kg,
stack_size = util.get_stack_size(50) stack_size = util.get_stack_size(50)
}, },
}) })

View file

@ -0,0 +1,38 @@
local util = require("data-util");
if mods["space-age"] then
-- Due to explosives changes, we have to make some changes to asteroid processing.
--
data:extend({
{
type = "recipe",
name = "advanced-oxide-asteroid-crushing-zirc",
localised_name = {"", {"recipe-name.advanced-oxide-asteroid-crushing"},": ", {"item-name.zirconia"}},
icons =
{
{icon="__space-age__/graphics/icons/advanced-oxide-asteroid-crushing.png", icon_size=64},
{icon="__bzzirconium__/graphics/icons/zirconia.png", icon_size=128, scale=0.1875, shift={0,8}},
},
category = "crushing",
subgroup="space-crushing",
order = "f[advanced-oxide-asteroid-crushing]-z[zirconia]",
auto_recycle = false,
enabled = false,
ingredients =
{
{type = "item", name = "oxide-asteroid-chunk", amount = 1}
},
energy_required = 5,
results =
{
{type = "item", name = "ice", amount = 1},
{type = "item", name = "calcite", amount = 1},
{type = "item", name = "zirconia", amount = 3},
{type = "item", name = "oxide-asteroid-chunk", amount = 1, probability = 0.05}
},
allow_productivity = true,
allow_decomposition = false
},
})
util.add_unlock("advanced-asteroid-processing", "advanced-oxide-asteroid-crushing-zirc")
end

View file

@ -2,7 +2,7 @@
local util = require("__bzzirconium__.data-util"); local util = require("__bzzirconium__.data-util");
if deadlock then if deadlock and deadlock["add_stack"] then
deadlock.add_stack("zircon", "__bzzirconium__/graphics/icons/stacked/zircon-stacked.png", "deadlock-stacking-1", 64) deadlock.add_stack("zircon", "__bzzirconium__/graphics/icons/stacked/zircon-stacked.png", "deadlock-stacking-1", 64)
deadlock.add_stack("zirconia", "__bzzirconium__/graphics/icons/stacked/zirconia-stacked.png", "deadlock-stacking-2", 128) deadlock.add_stack("zirconia", "__bzzirconium__/graphics/icons/stacked/zirconia-stacked.png", "deadlock-stacking-2", 128)
deadlock.add_stack("zirconium-plate", "__bzzirconium__/graphics/icons/stacked/zirconium-plate-stacked.png" , "deadlock-stacking-2", 128) deadlock.add_stack("zirconium-plate", "__bzzirconium__/graphics/icons/stacked/zirconium-plate-stacked.png" , "deadlock-stacking-2", 128)

View file

@ -1,37 +1,11 @@
local util = require("data-util"); local util = require("data-util");
if util.me.cermet_lds() then if mods.Krastorio2 then
util.add_prerequisite("low-density-structure", "cermet")
if mods.Krastorio2 then
util.add_ingredient("low-density-structure", "cermet", 5)
else
util.add_ingredient("low-density-structure", "cermet", 10)
end
if mods.bztitanium then
util.remove_ingredient("low-density-structure", "copper-plate")
elseif mods.bzaluminum then
-- do nothing, aluminum already added alloy
elseif mods.Krastorio2 then
util.set_ingredient("low-density-structure", "copper-plate", 5)
else
util.set_ingredient("low-density-structure", "copper-plate", 10)
end
util.remove_ingredient("low-density-structure", "steel-plate")
else
if mods.Krastorio2 then
util.replace_some_ingredient("low-density-structure", "copper-plate", 5, "zirconia", 5) util.replace_some_ingredient("low-density-structure", "copper-plate", 5, "zirconia", 5)
else else
util.replace_some_ingredient("low-density-structure", "copper-plate", 10, "zirconia", 10) util.replace_some_ingredient("low-density-structure", "copper-plate", 10, "zirconia", 10)
end
end end
if mods["space-exploration"] then if mods["space-exploration"] then
if util.me.cermet_lds() then
util.replace_some_ingredient("se-aeroframe-scaffold", "se-aeroframe-pole", 1, "cermet", 2)
else
util.replace_some_ingredient("se-aeroframe-scaffold", "se-aeroframe-pole", 1, "zirconia", 2) util.replace_some_ingredient("se-aeroframe-scaffold", "se-aeroframe-pole", 1, "zirconia", 2)
end
end end

View file

@ -7,15 +7,33 @@ if mods.bzfoundry and data.raw.item["foundry"] then
util.set_to_founding("zircaloy-4") util.set_to_founding("zircaloy-4")
end end
if mods["space-age"] then
util.add_ingredient("foundry", "zirconia", 20)
end
-- space age
util.replace_ingredient("metallurgic-science-pack", "tungsten-plate", "zirconium-tungstate")
util.add_ingredient("cryogenic-plant", "zirconium-tungstate", 20)
if mods["space-age"] and mods.bztin then
util.copy_recipe("bronze-plate", "bronze-plate-basic")
util.set_category("bronze-plate-basic", "basic-metallurgy")
util.set_localised_name("bronze-plate-basic", {"item-name.bronze-plate"})
util.add_unlock("advanced-material-processing-2", "bronze-plate-basic")
util.multiply_ingredients("bronze-plate", 2)
end
if util.me.early() then if util.me.early() then
util.replace_some_ingredient("stone-furnace", "stone", 1, "zircon", 1) util.replace_some_ingredient("stone-furnace", "stone", 1, "zircon", 1)
end end
if not mods["Krastorio2"] then if not mods["Krastorio2"] then
if util.me.early() then util.replace_some_ingredient("steel-furnace", "stone-brick", 4, "zirconia", 6)
util.replace_some_ingredient("steel-furnace", "stone-brick", 4, "zircon", 6) if mods.bzsilicon then -- this uses enough stone, we can just replace
end util.replace_ingredient("electric-furnace", "stone-brick", "zirconia")
else
util.replace_some_ingredient("electric-furnace", "stone-brick", 5, "zirconia", 5) util.replace_some_ingredient("electric-furnace", "stone-brick", 5, "zirconia", 5)
end
end end
util.replace_ingredient("concrete", "iron-ore", "zircon") util.replace_ingredient("concrete", "iron-ore", "zircon")
@ -23,8 +41,11 @@ if mods["aai-industry"] then
util.add_ingredient("concrete", "zircon", 1) util.add_ingredient("concrete", "zircon", 1)
end end
util.multiply_recipe("explosives", 2) -- Zirconium in explosives
util.add_ingredient("explosives", "zirconium-plate", 1) util.add_ingredient("explosives", "zirconium-plate", 1)
util.set_recipe_time("explosives", 6)
util.set_product_amount("explosives", "explosives", 3)
util.add_ingredient("nuclear-reactor", nuclear_z, 100) util.add_ingredient("nuclear-reactor", nuclear_z, 100)
local ufc_amt = mods["Krastorio2"] and 1 or 5 local ufc_amt = mods["Krastorio2"] and 1 or 5
@ -44,8 +65,10 @@ if util.me.use_cermet() then
util.add_ingredient("rocket-control-unit", "cermet", 1) util.add_ingredient("rocket-control-unit", "cermet", 1)
util.add_ingredient("speed-module-3", "cermet", 1) util.add_ingredient("speed-module-3", "cermet", 1)
util.add_ingredient("productivity-module-3", "cermet", 1) util.add_ingredient("productivity-module-3", "cermet", 1)
util.add_ingredient("effectivity-module-3", "cermet", 1) util.add_ingredient("efficiency-module-3", "cermet", 1)
util.add_ingredient("quality-module-3", "cermet", 1)
util.add_ingredient("beacon", "cermet", 10) util.add_ingredient("beacon", "cermet", 10)
util.add_ingredient("electromagnetic-plant", "cermet", 50)
util.add_ingredient("spidertron", "cermet", 8) util.add_ingredient("spidertron", "cermet", 8)
if not util.fe_plus("Machines") then if not util.fe_plus("Machines") then
util.add_ingredient("assembling-machine-3", "cermet", 2) util.add_ingredient("assembling-machine-3", "cermet", 2)
@ -184,6 +207,18 @@ util.add_ingredient("rfp-particle-decelerator", "zirconium-plate", 1000)
util.replace_some_ingredient("rfp-matter-antimatter-fuel-cell-empty", "steel-plate", 10, nuclear_z, 10) util.replace_some_ingredient("rfp-matter-antimatter-fuel-cell-empty", "steel-plate", 10, nuclear_z, 10)
-- Transplutonic
util.add_ingredient("pu238-fuel", nuclear_z, 5)
util.add_ingredient("np237-fuel", nuclear_z, 5)
util.add_ingredient("plutonium-mix-fuel", nuclear_z, 5)
util.add_ingredient("neptunium-mix-fuel", nuclear_z, 5)
util.add_ingredient("uranium-mix-fuel", nuclear_z, 5)
util.add_ingredient("plutonium-inv-dead", nuclear_z, 5)
util.add_ingredient("neptunium-inv-dead", nuclear_z, 5)
util.add_ingredient("uranium-inv-dead", nuclear_z, 5)
util.add_ingredient("castorempty", nuclear_z, 50)
util.add_ingredient("breeder-reactor", nuclear_z, 250)
util.add_ingredient("particle-accelerator", nuclear_z, 250)

View file

@ -14,6 +14,7 @@ data:extend({
icon_size = 128, icon_size = 128,
subgroup = "raw-material", subgroup = "raw-material",
order = "z[zirconia]", order = "z[zirconia]",
weight = 1*kg,
stack_size = util.get_stack_size(200) stack_size = util.get_stack_size(200)
}, },
{ {
@ -21,46 +22,73 @@ data:extend({
name = "zirconia", name = "zirconia",
subgroup = "raw-material", subgroup = "raw-material",
category = "smelting", category = "smelting",
allow_productivity = true,
order = "z[zirconia]", order = "z[zirconia]",
icons = (mods["Krastorio2"] and icons = (mods["Krastorio2"] and
{ {
{ icon = "__bzzirconium__/graphics/icons/zirconia.png", icon_size = 128 }, { icon = "__bzzirconium__/graphics/icons/zirconia.png", icon_size = 128 },
{ icon = "__bzzirconium__/graphics/icons/zircon.png", icon_size = 64, scale=0.25, shift= {-8, -8}}, { icon = "__bzzirconium__/graphics/icons/zircon.png", icon_size = 128, scale=0.25, shift= {-8, -8}},
} or { } or {
{ icon = "__bzzirconium__/graphics/icons/zirconia.png", icon_size = 128, }, { icon = "__bzzirconium__/graphics/icons/zirconia.png", icon_size = 128, },
} }
), ),
normal = (mods["Krastorio2"] and -- (mods["Krastorio2"] and
{ -- {
-- main_product = "zirconia",
-- enabled = false,
-- energy_required = 8,
-- ingredients = {util.item("zircon", 5)},
-- results = mods.bztitanium and util.me.byproduct() and {
-- {name="zirconia", amount_min=4, amount_max=5},
-- {name="titanium-ore", amount=1, probability=.5}
-- } or {util.item("zirconia", 5)}
-- } or
main_product = "zirconia", main_product = "zirconia",
enabled = false, enabled = false,
energy_required = 8, energy_required = 6.4,
ingredients = {util.item("zircon", 5)},
results = mods.bztitanium and util.me.byproduct() and {
{name="zirconia", amount_min=4, amount_max=5},
{name="titanium-ore", amount=1, probability=.5}
} or {util.item("zirconia", 5)}
} or
{
main_product = "zirconia",
enabled = false,
energy_required = 3.2,
ingredients = {util.item("zircon", 1)}, ingredients = {util.item("zircon", 1)},
results = mods.bztitanium and util.me.byproduct() and { results = mods.bztitanium and util.me.byproduct() and {
{name="zirconia", amount=2, probability=.95}, {type="item", name="zirconia", amount=2, probability=.95},
{name="titanium-ore", amount=1, probability=.1} {type="item", name="titanium-ore", amount=1, probability=.1}
} or {util.item("zirconia", 2)} } or {util.item("zirconia", 2)}
}), -- expensive =
expensive = -- {
-- main_product = "zirconia",
-- enabled = false,
-- energy_required = 3.2,
-- ingredients = {util.item("zircon", 1)},
-- results = mods.bztitanium and util.me.byproduct() and {
-- util.item("zirconia", 1), {name="titanium-ore", amount=1, probability=.05}
-- } or {util.item("zirconia", 2)}
-- }
},
{ {
main_product = "zirconia", type = "item",
name = "zirconium-sponge",
icon = "__bzzirconium__/graphics/icons/zirconium-sponge.png",
icon_size = 128,
pictures = {
{filename = "__bzzirconium__/graphics/icons/zirconium-sponge.png", size=128, scale=0.25},
{filename = "__bzzirconium__/graphics/icons/zirconium-sponge-1.png", size=128, scale=0.25},
{filename = "__bzzirconium__/graphics/icons/zirconium-sponge-2.png", size=128, scale=0.25},
},
subgroup = "raw-material",
order = "z[zirconia]",
weight = 1*kg,
stack_size = util.get_stack_size(50)
},
{
type = "recipe",
name = "zirconium-sponge",
main_product = "zirconium-sponge",
subgroup = "raw-material",
category = "chemistry",
allow_productivity = true,
order = "z[zirconia]",
energy_required = 1.6,
enabled = false, enabled = false,
energy_required = 3.2, ingredients = {util.item("zirconia", 1), util.fluid("sulfuric-acid", 5)},
ingredients = {util.item("zircon", 1)}, results = {util.item("zirconium-sponge", 1)},
results = mods.bztitanium and util.me.byproduct() and {
util.item("zirconia", 1), {name="titanium-ore", amount=1, probability=.05}
} or {util.item("zirconia", 2)}
}
}, },
{ {
type = "item", type = "item",
@ -69,12 +97,14 @@ data:extend({
icon_size = 128, icon_size = 128,
subgroup = "raw-material", subgroup = "raw-material",
order = "d[zirconium-plate]", order = "d[zirconium-plate]",
weight = 1*kg,
stack_size = util.get_stack_size(100) stack_size = util.get_stack_size(100)
}, },
{ {
type = "recipe", type = "recipe",
name = "zirconium-plate", name = "zirconium-plate",
category = "smelting", category = "smelting",
allow_productivity = true,
subgroup = "raw-material", subgroup = "raw-material",
order = "d[zirconium-plate]", order = "d[zirconium-plate]",
icons = (mods["Krastorio2"] and icons = (mods["Krastorio2"] and
@ -85,26 +115,24 @@ data:extend({
{ icon = "__bzzirconium__/graphics/icons/zirconium-plate.png", icon_size = 128, }, { icon = "__bzzirconium__/graphics/icons/zirconium-plate.png", icon_size = 128, },
} }
), ),
normal = (mods["Krastorio2"] and -- (mods["Krastorio2"] and
{ -- {
-- enabled = false,
-- energy_required = 8,
-- ingredients = {util.item("zirconia", 15)},
-- results = {util.item("zirconium-plate", 5)},
-- } or
enabled = false, enabled = false,
energy_required = 8, energy_required = 3.2,
ingredients = {util.item("zirconia", 15)}, ingredients = {util.item("zirconium-sponge", 1)},
results = {util.item("zirconium-plate", 5)},
} or
{
enabled = false,
energy_required = 9.6,
ingredients = {util.item("zirconia", 3)},
results = {util.item("zirconium-plate", 1)}, results = {util.item("zirconium-plate", 1)},
}), -- expensive =
expensive = -- {
{ -- enabled = false,
enabled = false, -- energy_required = 9.6,
energy_required = 9.6, -- ingredients = {util.item("zirconia", 6)},
ingredients = {util.item("zirconia", 6)}, -- result = "zirconium-plate",
result = "zirconium-plate", -- }
}
}, },
{ {
type = "technology", type = "technology",
@ -117,18 +145,25 @@ data:extend({
type = "unlock-recipe", type = "unlock-recipe",
recipe = "zirconia" recipe = "zirconia"
}, },
},
research_trigger = {type="mine-entity", entity="zircon"},
order = "z"
},
{
type = "technology",
name = "zirconium-processing",
icon_size = 128,
icon = "__bzzirconium__/graphics/icons/zirconium-plate.png",
effects =
{
{
type = "unlock-recipe",
recipe = "zirconium-sponge",
},
{ {
type = "unlock-recipe", type = "unlock-recipe",
recipe = "zirconium-plate", recipe = "zirconium-plate",
}, },
-- mods["TheBigFurnace"] and {
-- type = "unlock-recipe",
-- recipe = "big-zirconium-plate",
-- } or nil,
-- mods["TheBigFurnace"] and {
-- type = "unlock-recipe",
-- recipe = "big-zirconia",
-- } or nil,
}, },
unit = unit =
{ {
@ -140,7 +175,7 @@ data:extend({
}, },
time = 30, time = 30,
}, },
prerequisites = {"automation-2", (not mods.bzzirconium and "advanced-material-processing") or nil }, prerequisites = {"zirconia-processing", "sulfur-processing"},
order = "z" order = "z"
}, },
}) })
@ -173,6 +208,7 @@ data:extend({
}, },
subgroup = "intermediate-product", subgroup = "intermediate-product",
order = "z[cermet]", order = "z[cermet]",
weight = 0.5*kg,
stack_size = util.get_stack_size(200) stack_size = util.get_stack_size(200)
}, },
{ {
@ -180,6 +216,7 @@ data:extend({
name = "cermet", name = "cermet",
category = "crafting", category = "crafting",
subgroup = "intermediate-product", subgroup = "intermediate-product",
allow_productivity = true,
order = "z[zirconia]", order = "z[zirconia]",
icons = { { icon = "__bzzirconium__/graphics/icons/cermet.png", icon_size = 128, } }, icons = { { icon = "__bzzirconium__/graphics/icons/cermet.png", icon_size = 128, } },
enabled = false, enabled = false,
@ -220,45 +257,141 @@ end
end end
-- sorting -- sorting
if util.me.enable_sorting() then if util.me.enable_sorting() or mods.quality then
data:extend({ data:extend({
{ {
type = "recipe", type = "recipe",
name = "sort-stone-zircon", name = "sort-stone-zircon",
category = "crafting", category = mods["quality"] and "recycling-or-hand-crafting" or "crafting",
subgroup = "raw-resource", subgroup = "raw-resource",
order = "bzz", order = "bzz",
icons = { icons = {
{ icon = "__bzzirconium__/graphics/icons/zircon.png", icon_size = 64 }, { icon = "__bzzirconium__/graphics/icons/zircon.png", icon_size=128, scale=0.25, shift={4,4}},
{ icon = "__base__/graphics/icons/stone.png", icon_size = 64, scale=0.25, shift= {-8, -8}}, { icon = "__base__/graphics/icons/stone.png", icon_size=64, scale=0.25, shift={-4,-4}},
}, },
enabled = true, enabled = not mods.quality,
energy_required = 1, energy_required = 1,
allow_decomposition = false,
ingredients = {util.item("stone", 2)}, ingredients = {util.item("stone", 2)},
results = { results = {
{type="item", name="zircon", amount=1, probability=.999999}, {type="item", name="zircon", amount=1},
{type="item", name="stone", amount=1, probability=0.5}, {type="item", name="stone", amount=1, probability=0.5},
} }
}, },
{ {
type = "recipe", type = "recipe",
name = "sort-zircon-stone", name = "sort-zircon-stone",
category = "crafting", category = mods["quality"] and "recycling-or-hand-crafting" or "crafting",
subgroup = "raw-resource", subgroup = "raw-resource",
order = "bzz", order = "bzz",
icons = { icons = {
{ icon = "__base__/graphics/icons/stone.png", icon_size = 64 }, { icon = "__base__/graphics/icons/stone.png", icon_size=64, scale=0.5, shift={4,4} },
{ icon = "__bzzirconium__/graphics/icons/zircon.png", icon_size = 64, scale=0.25, shift= {-8, -8}}, { icon = "__bzzirconium__/graphics/icons/zircon.png", icon_size=128, scale=0.125, shift={-4,-4}},
}, },
enabled = true, enabled = not mods.quality,
energy_required = 1, energy_required = 1,
allow_decomposition = false,
ingredients = {util.item("zircon", 2)}, ingredients = {util.item("zircon", 2)},
results = { results = {
{type="item", name="stone", amount=1, probability=.999999}, {type="item", name="stone", amount=1},
{type="item", name="zircon", amount=1, probability=0.5}, {type="item", name="zircon", amount=1, probability=0.5},
} }
} }
}) })
util.add_unlock("recycling", "sort-zircon-stone")
util.add_unlock("recycling", "sort-stone-zircon")
end
if mods["space-age"] then
-- Gleba
local synth_i = "stone"
if mods.bzsilicon then
synth_i = "silica"
elseif data.raw.item["sand"] then
synth_i = "sand"
end
data:extend({
{
type = "recipe",
name = "zircon-synthesis",
category = "organic",
subgroup = "raw-material",
order = "z[zircon]",
icons = {
{ icon = "__bzzirconium__/graphics/icons/zircon.png", icon_size=128},
{ icon = "__bzzirconium__/graphics/icons/zirconium-sponge.png", icon_size=128, scale=0.25, shift={-8,-8}},
},
energy_required = 10,
allow_decomposition = false,
ingredients = {
util.item("zirconium-sponge", 1),
util.item(synth_i, 1),
},
results = {util.item("zircon", 1)},
},
{
type = "recipe",
name = "zirconia-from-egg",
localised_name = {"item-name.zirconia"},
category = "organic",
subgroup = "raw-material",
order = "z[zircon]",
icons = {
{ icon = "__bzzirconium__/graphics/icons/zirconia.png", icon_size=128},
{ icon = "__space-age__/graphics/icons/pentapod-egg.png", icon_size=64, scale=0.25, shift={-4,-4}},
},
energy_required = 6,
allow_decomposition = false,
ingredients = {
util.item("pentapod-egg", 1),
},
results = {util.item("zirconia", 3)},
},
})
util.add_unlock("biochamber", "zircon-synthesis")
util.add_unlock("biochamber", "zirconia-from-egg")
-- Vulcanus
util.add_vacuum()
data:extend({
{
type = "recipe",
name = "zirconium-in-foundry",
localised_name = {"item-name.zirconium-plate"},
category = "metallurgy",
allow_productivity = true,
subgroup = "vulcanus-processes",
order = "d[zirconium-plate]",
icons ={{ icon = "__bzzirconium__/graphics/icons/zirconium-plate.png", icon_size = 128}},
enabled = false,
energy_required = 3.2,
ingredients = {util.item("zirconium-sponge", 1), util.fluid("vacuum")},
results = {util.item("zirconium-plate", 1)},
},
{
type = "recipe",
name = "zirconium-gettering",
main_product = "vacuum",
category = "chemistry",
subgroup = "vulcanus-processes",
order = "d[zirconium-gettering]",
icons = {
util.vacuum_icon,
{ icon = "__bzzirconium__/graphics/icons/zirconium-sponge.png", icon_size = 128, scale=0.125, shift = {-8, -8}},
},
enabled = false,
allow_productivity = true,
energy_required = 5,
ingredients = {util.item("zirconium-sponge")},
results = {
util.fluid("vacuum", 100),
util.item("stone", 1),
},
show_amount_in_title = false,
},
})
util.add_unlock("foundry", "zirconium-in-foundry")
util.add_unlock("foundry", "zirconium-gettering")
end end
-- Zirconium Tungstate, only if needed -- Zirconium Tungstate, only if needed
@ -271,13 +404,15 @@ data:extend({
icon_size = 64, tint = {a=1, r=.95, g=.75, b=0}}}, icon_size = 64, tint = {a=1, r=.95, g=.75, b=0}}},
subgroup = "intermediate-product", subgroup = "intermediate-product",
order = "z[zz]", order = "z[zz]",
weight = 2*kg,
stack_size = util.get_stack_size(100) stack_size = util.get_stack_size(100)
}, },
{ {
type = "recipe", type = "recipe",
name = "zirconium-tungstate", name = "zirconium-tungstate",
category = "crafting", category = "chemistry",
subgroup = "intermediate-product", subgroup = "intermediate-product",
allow_productivity = true,
order = "z[zz]", order = "z[zz]",
enabled = false, enabled = false,
energy_required = 2, energy_required = 2,
@ -285,13 +420,18 @@ data:extend({
results = {util.item("zirconium-tungstate", 2)}, results = {util.item("zirconium-tungstate", 2)},
}, },
}) })
util.add_effect("zirconia-processing", { type = "unlock-recipe", recipe = "zirconium-tungstate" }) if mods["space-age"] then
util.add_effect("tungsten-steel", { type = "unlock-recipe", recipe = "zirconium-tungstate" })
else
util.add_effect("zirconia-processing", { type = "unlock-recipe", recipe = "zirconium-tungstate" })
end
end end
-- Zircaloy-4 only if needed -- Zircaloy-4 only if needed
if mods.bztin then if mods.bztin then
require("basic-foundry")
local zircaloyi = { local zircaloyi = {
util.item("zirconium-plate", 17), util.item("zirconium-sponge", 17),
util.item("tin-plate", 2), util.item("tin-plate", 2),
util.item("iron-plate", 1), util.item("iron-plate", 1),
} }
@ -302,12 +442,14 @@ data:extend({
icons = {{icon = "__bzzirconium__/graphics/icons/zircaloy-4.png", icon_size = 128}}, icons = {{icon = "__bzzirconium__/graphics/icons/zircaloy-4.png", icon_size = 128}},
subgroup = "intermediate-product", subgroup = "intermediate-product",
order = "z[zz]", order = "z[zz]",
weight = 5*kg,
stack_size = util.get_stack_size(100), stack_size = util.get_stack_size(100),
}, },
{ {
type = "recipe", type = "recipe",
name = "zircaloy-4", name = "zircaloy-4",
category = "crafting", category = mods["space-age"] and "basic-metallurgy" or "advanced-crafting",
allow_productivity = true,
order = "z[zz]", order = "z[zz]",
enabled = false, enabled = false,
energy_required = 60, energy_required = 60,
@ -315,21 +457,5 @@ data:extend({
results = {util.item("zircaloy-4", 20)}, results = {util.item("zircaloy-4", 20)},
}, },
}) })
util.add_effect("zirconia-processing", { type = "unlock-recipe", recipe = "zircaloy-4" }) util.add_effect("advanced-material-processing-2", { type = "unlock-recipe", recipe = "zircaloy-4" })
end end
if mods.DoubleFurnace then
data:extend({
{
type = "recipe",
name = "double-zirconium",
category = "double-smelting",
enabled = false,
energy_required = 19.2,
ingredients = {util.item("zircon", 3)},
results = {util.item("zirconium-plate", 2)},
}
})
util.add_effect("zirconia-processing", {type = "unlock-recipe", recipe = "double-zirconium"})
end