diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..72c1b51 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.bak +*.blend* diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..80fce1c --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2021 Brevven + +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. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5d2a96c --- /dev/null +++ b/Makefile @@ -0,0 +1,30 @@ +# General makefile for factorio mods. +# +# Presumes the development work is done in a /dev// +# directory where this makefile resides. This directory must be parallel to +# the /mods/ directory where mods are installed. Run `make +# install` from dev/ to install the mod as a zip file. That zip file +# should also be ready to upload to the mod portal + +.PHONY: copy lint-changelog install + +pwd = $(shell pwd) +v = $(shell basename "$(pwd)")_$(shell jq -r .version info.json) + +copy: + rm -rf ../$(v) + mkdir -p ../$(v) + cp -rf * ../$(v) + rm -f ../$(v).zip + cd ..; zip -9 -r -y $(v).zip $(v) -x "*.xcf" -x "*.git*" -x "*.bak" -x "*.blend*" + +install: lint-changelog copy + cp -f ../$(v).zip ../../mods/ + + +lint-changelog: copy + python3 ../da-changelog-tools_0.0.14/changelog-checker.py --changelog ../$(v).zip + +zorro: + python3 ../da-changelog-tools_0.0.14/changelog-checker.py --zorro --changelog ../$(v).zip + diff --git a/changelog.txt b/changelog.txt new file mode 100644 index 0000000..61f44f2 --- /dev/null +++ b/changelog.txt @@ -0,0 +1,6 @@ +--------------------------------------------------------------------------------------------------- +Version: 0.0.1 +Date: 2021-06-10 + Features: + - Zirconium, Zirconia, Zircon, Cermet added to game. + - Compatible with space exploration, krastorio2, deadlock stacking/crating, etc. diff --git a/data-final-fixes.lua b/data-final-fixes.lua new file mode 100644 index 0000000..76f31db --- /dev/null +++ b/data-final-fixes.lua @@ -0,0 +1,22 @@ +-- require("modules") +require("zirconium-recipe-final-stacking") +require("zirconium-recipe-final-rrr") + + +local util = require("__bzzirconium__.data-util"); + +if mods["space-exploration"] then + -- Organization + data.raw.item["zirconia"].subgroup = "plates" + data.raw.recipe["zirconia"].subgroup = "plates" + data.raw.item["zirconium-plate"].subgroup = "plates" + data.raw.recipe["zirconium-plate"].subgroup = "plates" +end + +if mods.bztitanium then +for i, entity in pairs(data.raw.furnace) do + if entity.result_inventory_size ~= nil and entity.result_inventory_size < 2 and util.contains(entity.crafting_categories, "smelting") then + entity.result_inventory_size = 2 + end +end +end diff --git a/data-updates.lua b/data-updates.lua new file mode 100644 index 0000000..84d44d8 --- /dev/null +++ b/data-updates.lua @@ -0,0 +1,6 @@ +require("tech-updates") +require("zirconium-recipe-updates") +require("zircon-matter") +require("omni") +require("map-gen-preset-updates") +-- require("tungsten-recipe-5d") diff --git a/data-util.lua b/data-util.lua new file mode 100644 index 0000000..6052685 --- /dev/null +++ b/data-util.lua @@ -0,0 +1,177 @@ +local util = {} + +function util.get_setting(name) + if settings.startup[name] == nil then + return nil + end + return settings.startup[name].value +end + +function util.use_cermet() + return util.get_setting("bzzirconium-enable-intermediates") == "yes" +end + +function util.get_stack_size(default) + if mods["Krastorio2"] then + size = tonumber(krastorio.general.getSafeSettingValue("kr-stack-size")) + return size or default + end + return default +end + +-- check if a table contains a sought value +function util.contains(table, sought) + for i, value in pairs(table) do + if value == sought then + return true + end + end + return false +end + +-- Add a prerequisite to a given technology +function util.add_prerequisite(technology_name, prerequisite) + technology = data.raw.technology[technology_name] + if technology and data.raw.technology[prerequisite] then + if technology.prerequisites then + table.insert(technology.prerequisites, prerequisite) + else + technology.prerequisites = {prerequisite} + end + end +end + +-- Remove a prerequisite from a given technology +function util.remove_prerequisite(technology_name, prerequisite) + technology = data.raw.technology[technology_name] + local index = -1 + if technology and data.raw.technology[prerequisite] then + for i, prereq in pairs(technology.prerequisites) do + if prereq == prerequisite then + index = i + break + end + end + if index > -1 then + table.remove(technology.prerequisites, index) + end + end +end + +-- Add an effect to a given technology +function util.add_effect(technology_name, effect) + technology = data.raw.technology[technology_name] + if technology then + table.insert(technology.effects, effect) + end +end + +-- Set technology ingredients +function util.set_tech_recipe(technology_name, ingredients) + technology = data.raw.technology[technology_name] + if technology then + technology.unit.ingredients = ingredients + end +end + +-- Add a given quantity of ingredient to a given recipe +function util.add_ingredient(recipe_name, ingredient, quantity) + if data.raw.recipe[recipe_name] then + add_ingredient(data.raw.recipe[recipe_name], ingredient, quantity) + add_ingredient(data.raw.recipe[recipe_name].normal, ingredient, quantity) + add_ingredient(data.raw.recipe[recipe_name].expensive, ingredient, quantity) + end +end + +function add_ingredient(recipe, ingredient, quantity) + if recipe ~= nil and recipe.ingredients ~= nil then + table.insert(recipe.ingredients, {ingredient, quantity}) + end +end + +-- Add a given quantity of product to a given recipe. +-- Only works for recipes with multiple products +function util.add_product(recipe_name, product) + if data.raw.recipe[recipe_name] then + add_product(data.raw.recipe[recipe_name], product) + add_product(data.raw.recipe[recipe_name].normal, product) + add_product(data.raw.recipe[recipe_name].expensive, product) + end +end + +function add_product(recipe, product) + if recipe ~= nil and recipe.results ~= nil then + table.insert(recipe.results, product) + end +end + +-- Replace one ingredient with another in a recipe +function util.replace_ingredient(recipe_name, old, new) + if data.raw.recipe[recipe_name] then + replace_ingredient(data.raw.recipe[recipe_name], old, new) + replace_ingredient(data.raw.recipe[recipe_name].normal, old, new) + replace_ingredient(data.raw.recipe[recipe_name].expensive, old, new) + end +end + +function replace_ingredient(recipe, old, new) + if recipe ~= nil and recipe.ingredients ~= nil then + for i, ingredient in pairs(recipe.ingredients) do + if ingredient.name == old then ingredient.name = new end + if ingredient[1] == old then ingredient[1] = new end + end + end +end + +-- Remove an ingredient from a recipe +function util.remove_ingredient(recipe_name, old) + if data.raw.recipe[recipe_name] then + remove_ingredient(data.raw.recipe[recipe_name], old) + remove_ingredient(data.raw.recipe[recipe_name].normal, old) + remove_ingredient(data.raw.recipe[recipe_name].expensive, old) + end +end + +function remove_ingredient(recipe, old) + index = -1 + if recipe ~= nil and recipe.ingredients ~= nil then + for i, ingredient in pairs(recipe.ingredients) do + if ingredient.name == old or ingredient[1] == old then + index = i + break + end + end + if index > -1 then + table.remove(recipe.ingredients, index) + end + end +end + + +-- Replace an amount of an ingredient in a recipe. Keep at least 1 of old. +function util.replace_some_ingredient(recipe_name, old, old_amount, new, new_amount) + if data.raw.recipe[recipe_name] then + replace_some_ingredient(data.raw.recipe[recipe_name], old, old_amount, new, new_amount) + replace_some_ingredient(data.raw.recipe[recipe_name].normal, old, old_amount, new, new_amount) + replace_some_ingredient(data.raw.recipe[recipe_name].expensive, old, old_amount, new, new_amount) + end +end + +function replace_some_ingredient(recipe, old, old_amount, new, new_amount) + if recipe ~= nil and recipe.ingredients ~= nil then + for i, ingredient in pairs(recipe.ingredients) do + -- For final fixes + if ingredient.name == old then + ingredient.amount = math.max(1, ingredient.amount - old_amount) + end + -- For updates + if ingredient[1] == old then + ingredient[2] = math.max(1, ingredient[2] - old_amount) + end + end + add_ingredient(recipe, new, new_amount) + end +end + + +return util diff --git a/data.lua b/data.lua new file mode 100644 index 0000000..28bbee8 --- /dev/null +++ b/data.lua @@ -0,0 +1,6 @@ +require("zircon") +require("zircon-particle") +require("zirconium-recipe") +require("zirconium-enriched") -- Enriched for Krastorio 2 +require("zirconium-recipe-se") -- Space Exploration special recipes (depends on K2 if present) +-- require("zirconium-compressed") diff --git a/graphics/entity/ores/hr-zircon.png b/graphics/entity/ores/hr-zircon.png new file mode 100644 index 0000000..27579a9 Binary files /dev/null and b/graphics/entity/ores/hr-zircon.png differ diff --git a/graphics/entity/ores/hr-zircon.xcf b/graphics/entity/ores/hr-zircon.xcf new file mode 100644 index 0000000..75c42f7 Binary files /dev/null and b/graphics/entity/ores/hr-zircon.xcf differ diff --git a/graphics/entity/ores/zircon.png b/graphics/entity/ores/zircon.png new file mode 100644 index 0000000..a529067 Binary files /dev/null and b/graphics/entity/ores/zircon.png differ diff --git a/graphics/entity/ores/zircon.xcf b/graphics/entity/ores/zircon.xcf new file mode 100644 index 0000000..0a0ac0b Binary files /dev/null and b/graphics/entity/ores/zircon.xcf differ diff --git a/graphics/entity/zircon-particle/hr-zircon-particle-1.png b/graphics/entity/zircon-particle/hr-zircon-particle-1.png new file mode 100644 index 0000000..e241086 Binary files /dev/null and b/graphics/entity/zircon-particle/hr-zircon-particle-1.png differ diff --git a/graphics/entity/zircon-particle/hr-zircon-particle-2.png b/graphics/entity/zircon-particle/hr-zircon-particle-2.png new file mode 100644 index 0000000..7099218 Binary files /dev/null and b/graphics/entity/zircon-particle/hr-zircon-particle-2.png differ diff --git a/graphics/entity/zircon-particle/hr-zircon-particle-3.png b/graphics/entity/zircon-particle/hr-zircon-particle-3.png new file mode 100644 index 0000000..cf15c66 Binary files /dev/null and b/graphics/entity/zircon-particle/hr-zircon-particle-3.png differ diff --git a/graphics/entity/zircon-particle/hr-zircon-particle-4.png b/graphics/entity/zircon-particle/hr-zircon-particle-4.png new file mode 100644 index 0000000..307d7cd Binary files /dev/null and b/graphics/entity/zircon-particle/hr-zircon-particle-4.png differ diff --git a/graphics/entity/zircon-particle/hr-zircon-particle-shadow-1.png b/graphics/entity/zircon-particle/hr-zircon-particle-shadow-1.png new file mode 100644 index 0000000..ebef3b3 Binary files /dev/null and b/graphics/entity/zircon-particle/hr-zircon-particle-shadow-1.png differ diff --git a/graphics/entity/zircon-particle/hr-zircon-particle-shadow-2.png b/graphics/entity/zircon-particle/hr-zircon-particle-shadow-2.png new file mode 100644 index 0000000..b9fc4f5 Binary files /dev/null and b/graphics/entity/zircon-particle/hr-zircon-particle-shadow-2.png differ diff --git a/graphics/entity/zircon-particle/hr-zircon-particle-shadow-3.png b/graphics/entity/zircon-particle/hr-zircon-particle-shadow-3.png new file mode 100644 index 0000000..a3b24e4 Binary files /dev/null and b/graphics/entity/zircon-particle/hr-zircon-particle-shadow-3.png differ diff --git a/graphics/entity/zircon-particle/hr-zircon-particle-shadow-4.png b/graphics/entity/zircon-particle/hr-zircon-particle-shadow-4.png new file mode 100644 index 0000000..02cca1a Binary files /dev/null and b/graphics/entity/zircon-particle/hr-zircon-particle-shadow-4.png differ diff --git a/graphics/entity/zircon-particle/zircon-particle-1.png b/graphics/entity/zircon-particle/zircon-particle-1.png new file mode 100644 index 0000000..1b76c18 Binary files /dev/null and b/graphics/entity/zircon-particle/zircon-particle-1.png differ diff --git a/graphics/entity/zircon-particle/zircon-particle-2.png b/graphics/entity/zircon-particle/zircon-particle-2.png new file mode 100644 index 0000000..0bf7c6b Binary files /dev/null and b/graphics/entity/zircon-particle/zircon-particle-2.png differ diff --git a/graphics/entity/zircon-particle/zircon-particle-3.png b/graphics/entity/zircon-particle/zircon-particle-3.png new file mode 100644 index 0000000..35c156a Binary files /dev/null and b/graphics/entity/zircon-particle/zircon-particle-3.png differ diff --git a/graphics/entity/zircon-particle/zircon-particle-4.png b/graphics/entity/zircon-particle/zircon-particle-4.png new file mode 100644 index 0000000..9f5115c Binary files /dev/null and b/graphics/entity/zircon-particle/zircon-particle-4.png differ diff --git a/graphics/entity/zircon-particle/zircon-particle-shadow-1.png b/graphics/entity/zircon-particle/zircon-particle-shadow-1.png new file mode 100644 index 0000000..89bfee9 Binary files /dev/null and b/graphics/entity/zircon-particle/zircon-particle-shadow-1.png differ diff --git a/graphics/entity/zircon-particle/zircon-particle-shadow-2.png b/graphics/entity/zircon-particle/zircon-particle-shadow-2.png new file mode 100644 index 0000000..7834934 Binary files /dev/null and b/graphics/entity/zircon-particle/zircon-particle-shadow-2.png differ diff --git a/graphics/entity/zircon-particle/zircon-particle-shadow-3.png b/graphics/entity/zircon-particle/zircon-particle-shadow-3.png new file mode 100644 index 0000000..6ef2544 Binary files /dev/null and b/graphics/entity/zircon-particle/zircon-particle-shadow-3.png differ diff --git a/graphics/entity/zircon-particle/zircon-particle-shadow-4.png b/graphics/entity/zircon-particle/zircon-particle-shadow-4.png new file mode 100644 index 0000000..a8aa006 Binary files /dev/null and b/graphics/entity/zircon-particle/zircon-particle-shadow-4.png differ diff --git a/graphics/icons/cermet.png b/graphics/icons/cermet.png new file mode 100644 index 0000000..a6e6649 Binary files /dev/null and b/graphics/icons/cermet.png differ diff --git a/graphics/icons/cermet.xcf b/graphics/icons/cermet.xcf new file mode 100644 index 0000000..4874ad7 Binary files /dev/null and b/graphics/icons/cermet.xcf differ diff --git a/graphics/icons/enriched-zircon-2.png b/graphics/icons/enriched-zircon-2.png new file mode 100644 index 0000000..c3a5cb4 Binary files /dev/null and b/graphics/icons/enriched-zircon-2.png differ diff --git a/graphics/icons/enriched-zircon-2.xcf b/graphics/icons/enriched-zircon-2.xcf new file mode 100644 index 0000000..ef4beda Binary files /dev/null and b/graphics/icons/enriched-zircon-2.xcf differ diff --git a/graphics/icons/enriched-zircon-3.png b/graphics/icons/enriched-zircon-3.png new file mode 100644 index 0000000..71d273f Binary files /dev/null and b/graphics/icons/enriched-zircon-3.png differ diff --git a/graphics/icons/enriched-zircon-3.xcf b/graphics/icons/enriched-zircon-3.xcf new file mode 100644 index 0000000..14fc891 Binary files /dev/null and b/graphics/icons/enriched-zircon-3.xcf differ diff --git a/graphics/icons/enriched-zircon-4.png b/graphics/icons/enriched-zircon-4.png new file mode 100644 index 0000000..612533c Binary files /dev/null and b/graphics/icons/enriched-zircon-4.png differ diff --git a/graphics/icons/enriched-zircon-4.xcf b/graphics/icons/enriched-zircon-4.xcf new file mode 100644 index 0000000..f11f290 Binary files /dev/null and b/graphics/icons/enriched-zircon-4.xcf differ diff --git a/graphics/icons/enriched-zircon.png b/graphics/icons/enriched-zircon.png new file mode 100644 index 0000000..f14aee7 Binary files /dev/null and b/graphics/icons/enriched-zircon.png differ diff --git a/graphics/icons/enriched-zircon.xcf b/graphics/icons/enriched-zircon.xcf new file mode 100644 index 0000000..8db8f8d Binary files /dev/null and b/graphics/icons/enriched-zircon.xcf differ diff --git a/graphics/icons/stacked/cermet-stacked.png b/graphics/icons/stacked/cermet-stacked.png new file mode 100644 index 0000000..672af04 Binary files /dev/null and b/graphics/icons/stacked/cermet-stacked.png differ diff --git a/graphics/icons/stacked/cermet-stacked.xcf b/graphics/icons/stacked/cermet-stacked.xcf new file mode 100644 index 0000000..85b1d46 Binary files /dev/null and b/graphics/icons/stacked/cermet-stacked.xcf differ diff --git a/graphics/icons/stacked/enriched-zircon-stacked.png b/graphics/icons/stacked/enriched-zircon-stacked.png new file mode 100644 index 0000000..3359e50 Binary files /dev/null and b/graphics/icons/stacked/enriched-zircon-stacked.png differ diff --git a/graphics/icons/stacked/enriched-zircon-stacked.xcf b/graphics/icons/stacked/enriched-zircon-stacked.xcf new file mode 100644 index 0000000..1ace521 Binary files /dev/null and b/graphics/icons/stacked/enriched-zircon-stacked.xcf differ diff --git a/graphics/icons/stacked/zircon-stacked.png b/graphics/icons/stacked/zircon-stacked.png new file mode 100644 index 0000000..9310015 Binary files /dev/null and b/graphics/icons/stacked/zircon-stacked.png differ diff --git a/graphics/icons/stacked/zircon-stacked.xcf b/graphics/icons/stacked/zircon-stacked.xcf new file mode 100644 index 0000000..ec38443 Binary files /dev/null and b/graphics/icons/stacked/zircon-stacked.xcf differ diff --git a/graphics/icons/stacked/zirconia-stacked.png b/graphics/icons/stacked/zirconia-stacked.png new file mode 100644 index 0000000..ef97eed Binary files /dev/null and b/graphics/icons/stacked/zirconia-stacked.png differ diff --git a/graphics/icons/stacked/zirconia-stacked.xcf b/graphics/icons/stacked/zirconia-stacked.xcf new file mode 100644 index 0000000..dcb6af7 Binary files /dev/null and b/graphics/icons/stacked/zirconia-stacked.xcf differ diff --git a/graphics/icons/stacked/zirconium-plate-stacked.png b/graphics/icons/stacked/zirconium-plate-stacked.png new file mode 100644 index 0000000..645a023 Binary files /dev/null and b/graphics/icons/stacked/zirconium-plate-stacked.png differ diff --git a/graphics/icons/stacked/zirconium-plate-stacked.xcf b/graphics/icons/stacked/zirconium-plate-stacked.xcf new file mode 100644 index 0000000..eb39422 Binary files /dev/null and b/graphics/icons/stacked/zirconium-plate-stacked.xcf differ diff --git a/graphics/icons/zircon-2.png b/graphics/icons/zircon-2.png new file mode 100644 index 0000000..19dd7cc Binary files /dev/null and b/graphics/icons/zircon-2.png differ diff --git a/graphics/icons/zircon-2.xcf b/graphics/icons/zircon-2.xcf new file mode 100644 index 0000000..576ad8e Binary files /dev/null and b/graphics/icons/zircon-2.xcf differ diff --git a/graphics/icons/zircon-3.png b/graphics/icons/zircon-3.png new file mode 100644 index 0000000..1e542fd Binary files /dev/null and b/graphics/icons/zircon-3.png differ diff --git a/graphics/icons/zircon-3.xcf b/graphics/icons/zircon-3.xcf new file mode 100644 index 0000000..7464e55 Binary files /dev/null and b/graphics/icons/zircon-3.xcf differ diff --git a/graphics/icons/zircon-4.png b/graphics/icons/zircon-4.png new file mode 100644 index 0000000..152fc55 Binary files /dev/null and b/graphics/icons/zircon-4.png differ diff --git a/graphics/icons/zircon-4.xcf b/graphics/icons/zircon-4.xcf new file mode 100644 index 0000000..8a7388c Binary files /dev/null and b/graphics/icons/zircon-4.xcf differ diff --git a/graphics/icons/zircon-n-2.xcf b/graphics/icons/zircon-n-2.xcf new file mode 100644 index 0000000..522525d Binary files /dev/null and b/graphics/icons/zircon-n-2.xcf differ diff --git a/graphics/icons/zircon-n-3.xcf b/graphics/icons/zircon-n-3.xcf new file mode 100644 index 0000000..7f7f6e3 Binary files /dev/null and b/graphics/icons/zircon-n-3.xcf differ diff --git a/graphics/icons/zircon-n-4.xcf b/graphics/icons/zircon-n-4.xcf new file mode 100644 index 0000000..f3bcb6e Binary files /dev/null and b/graphics/icons/zircon-n-4.xcf differ diff --git a/graphics/icons/zircon-n.xcf b/graphics/icons/zircon-n.xcf new file mode 100644 index 0000000..05bba25 Binary files /dev/null and b/graphics/icons/zircon-n.xcf differ diff --git a/graphics/icons/zircon-powder.png b/graphics/icons/zircon-powder.png new file mode 100644 index 0000000..59b3153 Binary files /dev/null and b/graphics/icons/zircon-powder.png differ diff --git a/graphics/icons/zircon-powder.xcf b/graphics/icons/zircon-powder.xcf new file mode 100644 index 0000000..a38e73a Binary files /dev/null and b/graphics/icons/zircon-powder.xcf differ diff --git a/graphics/icons/zircon-stacked-new.xcf b/graphics/icons/zircon-stacked-new.xcf new file mode 100644 index 0000000..924e57a Binary files /dev/null and b/graphics/icons/zircon-stacked-new.xcf differ diff --git a/graphics/icons/zircon.png b/graphics/icons/zircon.png new file mode 100644 index 0000000..b1e423d Binary files /dev/null and b/graphics/icons/zircon.png differ diff --git a/graphics/icons/zircon.xcf b/graphics/icons/zircon.xcf new file mode 100644 index 0000000..f5cd511 Binary files /dev/null and b/graphics/icons/zircon.xcf differ diff --git a/graphics/icons/zirconia.png b/graphics/icons/zirconia.png new file mode 100644 index 0000000..1ae8200 Binary files /dev/null and b/graphics/icons/zirconia.png differ diff --git a/graphics/icons/zirconia.xcf b/graphics/icons/zirconia.xcf new file mode 100644 index 0000000..9161cf1 Binary files /dev/null and b/graphics/icons/zirconia.xcf differ diff --git a/graphics/icons/zirconium-plate-2.xcf b/graphics/icons/zirconium-plate-2.xcf new file mode 100644 index 0000000..b8f17d1 Binary files /dev/null and b/graphics/icons/zirconium-plate-2.xcf differ diff --git a/graphics/icons/zirconium-plate-new.xcf b/graphics/icons/zirconium-plate-new.xcf new file mode 100644 index 0000000..80d9a5a Binary files /dev/null and b/graphics/icons/zirconium-plate-new.xcf differ diff --git a/graphics/icons/zirconium-plate.png b/graphics/icons/zirconium-plate.png new file mode 100644 index 0000000..1303083 Binary files /dev/null and b/graphics/icons/zirconium-plate.png differ diff --git a/graphics/icons/zirconium-plate.xcf b/graphics/icons/zirconium-plate.xcf new file mode 100644 index 0000000..1e8db90 Binary files /dev/null and b/graphics/icons/zirconium-plate.xcf differ diff --git a/graphics/technology/cermet.png b/graphics/technology/cermet.png new file mode 100644 index 0000000..f032e04 Binary files /dev/null and b/graphics/technology/cermet.png differ diff --git a/graphics/technology/zirconia-processing.png b/graphics/technology/zirconia-processing.png new file mode 100644 index 0000000..f4f912c Binary files /dev/null and b/graphics/technology/zirconia-processing.png differ diff --git a/graphics/technology/zirconium-processing.png b/graphics/technology/zirconium-processing.png new file mode 100644 index 0000000..703a119 Binary files /dev/null and b/graphics/technology/zirconium-processing.png differ diff --git a/graphics/technology/zirconium-processing.xcf b/graphics/technology/zirconium-processing.xcf new file mode 100644 index 0000000..a3cf7c2 Binary files /dev/null and b/graphics/technology/zirconium-processing.xcf differ diff --git a/info.json b/info.json new file mode 100644 index 0000000..9023df6 --- /dev/null +++ b/info.json @@ -0,0 +1,23 @@ +{ + "name": "bzzirconium", + "version": "0.0.1", + "factorio_version": "1.1", + "title": "Zirconium", + "author": "Brevven", + "contact": "", + "homepage": "", + "dependencies": [ + "base >= 1.1.0", + "? space-exploration", + "? Krastorio2", + "? deadlock-beltboxes-loaders", + "? DeadlockCrating", + "? omnimatter", + "? bzsilicon", + "? bzlead", + "? bztitanium", + "? bztungsten" + ], + "description": "Adds zircon, zirconia, zirconium, and cermet to the base game." +} + diff --git a/locale/en/zirconium.cfg b/locale/en/zirconium.cfg new file mode 100644 index 0000000..7c20aa8 --- /dev/null +++ b/locale/en/zirconium.cfg @@ -0,0 +1,55 @@ +[entity-name] +zircon=Zircon + +[autoplace-control-names] +zircon=[item=zircon] Zircon + +[item-name] +zircon=Zircon +zirconium-dust=Zircon dust +zirconia=Zirconia +zirconium-plate=Zirconium plate +enriched-zircon=Enriched zircon +compressed-zircon=Compressed zircon +cermet=Cermet +zirconium-tungstate=Zirconium tungstate + +[item-description] +zircon=Can be smelted into zirconia +zirconia=A great ceramic. Can be smelted into zirconium, too. +enriched-zircon=Can be efficiently smelted into zirconia. +enriched-zirconia=Can be efficiently smelted into zirconium plates. +cermet=Advanced ceramic/metal composites. +zirconium-tungstate=A material with interesting thermal properties. + +[technology-name] +zirconia-processing=Zirconia processing +cermet=Cermet +enriched-zircon=Enriched zircon +enriched-zirconia=Enriched zirconia +zirconium-matter-processing=Zirconium conversion + +[technology-description] +enriched-zircon=Enrich zircon, purifying with ammonia [fluid=ammonia] and water [fluid=water], improving the final yield. Produce dirty water [fluid=dirty-water] as a byproduct. + +[recipe-name] +sort-stone-zircon=Sort stone for zircon +sort-zircon-stone=Sort zircon for stone +enriched-zircon=__ITEM__enriched-zircon__ +enriched-zirconia=__ITEM__enriched-zirconia__ +zirconium-plate=__ITEM__zirconium-plate__ +smelt-compressed-zircon=__ITEM__zirconia__ +zircon-dust=__ITEM__zircon-dust__ +dirty-water-filtration-zircon=Filter dirty water [item=zircon] + +[recipe-description] +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. + +dirty-water-filtration-zircon=Filter dirty water, giving zircon [item=zircon] and stone [item=stone] (probabilistically). + +# Settings +[mod-setting-name] +bzzirconium-enable-intermediates=Enable cermet +[mod-setting-description] +bzzirconium-enable-intermediates=Enable cermet, an advanced intermediate made from ceramics and metals. diff --git a/map-gen-preset-updates.lua b/map-gen-preset-updates.lua new file mode 100644 index 0000000..e4571f5 --- /dev/null +++ b/map-gen-preset-updates.lua @@ -0,0 +1,14 @@ +local base_ore = "iron-ore" +if mods["angelssmelting"] then + base_ore = "angels-ore1" +end +if data.raw["map-gen-presets"] and data.raw["map-gen-presets"].default then + for name, preset in pairs(data.raw["map-gen-presets"].default) do + if type(preset) == "table" and + preset.basic_settings and + preset.basic_settings.autoplace_controls and + preset.basic_settings.autoplace_controls[base_ore] then + preset.basic_settings.autoplace_controls["zircon"] = preset.basic_settings.autoplace_controls[base_ore] + end + end +end diff --git a/modules.lua b/modules.lua new file mode 100644 index 0000000..146c4cd --- /dev/null +++ b/modules.lua @@ -0,0 +1,27 @@ +-- Enable prod modules for all zircon, etc recipes + +recipes = {"zirconium-plate", "zirconia", "cermet"} +if mods["Krastorio2"] then + table.insert(recipes, "enriched-zirconia-smelting") + table.insert(recipes, "enriched-zircon") +end +if mods["space-exploration"] then + table.insert(recipes, "tungsten-smelting-vulcanite") + if mods["Krastorio2"] then + table.insert(recipes, "enriched-tungsten-smelting-vulcanite") + end +end + +for i, recipe in pairs(recipes) do + if data.raw.recipe[recipe] then + for j, module in pairs(data.raw.module) do + if module.effect then + for effect_name, effect in pairs(module.effect) do + if effect_name == "productivity" and effect.bonus > 0 and module.limitation and #module.limitation > 0 then + table.insert(module.limitation, recipe) + end + end + end + end + end +end diff --git a/omni.lua b/omni.lua new file mode 100644 index 0000000..c0571f1 --- /dev/null +++ b/omni.lua @@ -0,0 +1,3 @@ +if omni and omni.matter then + omni.matter.add_resource("zircon", omni.matter.get_ore_tier("iron-ore")) +end diff --git a/settings.lua b/settings.lua new file mode 100644 index 0000000..7875be7 --- /dev/null +++ b/settings.lua @@ -0,0 +1,10 @@ +data:extend( +{ + { + type = "string-setting", + name = "bzzirconium-enable-intermediates", + setting_type = "startup", + default_value = "yes", + allowed_values = {"yes", "no"}, + }, +}) diff --git a/tech-updates.lua b/tech-updates.lua new file mode 100644 index 0000000..0401063 --- /dev/null +++ b/tech-updates.lua @@ -0,0 +1,27 @@ +local util = require("__bzzirconium__.data-util"); + +util.add_prerequisite("advanced-material-processing-2", "zirconia-processing") +util.add_prerequisite("low-density-structure", "zirconia-processing") +util.add_prerequisite("nuclear-power", "zirconia-processing") +util.add_prerequisite("explosives", "zirconia-processing") +util.add_prerequisite("chemical-science-pack", "zirconia-processing") + +if util.use_cermet() then + -- production science techs behind cermet + util.add_prerequisite("effect-transmission", "cermet") + util.add_prerequisite("automation-3", "cermet") + util.add_prerequisite("productivity-module-3", "cermet") + util.add_prerequisite("speed-module-3", "cermet") + util.add_prerequisite("effectivity-module-3", "cermet") + + -- utility science techs behind cermet + util.add_prerequisite("rocket-control-unit", "cermet") + util.set_tech_recipe("rocket-control-unit", + { + {"automation-science-pack", 1}, + {"logistic-science-pack", 1}, + {"chemical-science-pack", 1}, + {"production-science-pack", 1}, + {"utility-science-pack", 1}, + }) +end diff --git a/thumbnail.png b/thumbnail.png new file mode 100644 index 0000000..9531a24 Binary files /dev/null and b/thumbnail.png differ diff --git a/thumbnail.xcf b/thumbnail.xcf new file mode 100644 index 0000000..1ac0079 Binary files /dev/null and b/thumbnail.xcf differ diff --git a/zircon-compressed.lua b/zircon-compressed.lua new file mode 100644 index 0000000..498e84c --- /dev/null +++ b/zircon-compressed.lua @@ -0,0 +1,32 @@ + +if simpleCompress then + if simpleCompress.ores then + simpleCompress.currentSubgroup = "intermediate-product" + if data.raw.item["tungsten-ore"] then + SimpleCompress_AddTintedItem("tungsten-ore", "ore4-tungsten", "ore", {r=0.90, g=0.90, b=0.75}) + SimpleCompress_UnlockOreTechAndRecipe("tungsten-ore") + end + end + if simpleCompress.plates then + simpleCompress.currentSubgroup = "intermediate-product" + if data.raw.item["tungsten-plate"] then + SimpleCompress_AddTintedItem("tungsten-plate", "plates4-tungsten", "plate3", {r=0.90, g=0.90, b=0.75}) + SimpleCompress_UnlockPlateTechAndRecipe("tungsten-plate") + local tungstenRecipe = data.raw.recipe["decompress-tungsten-plate"] + tungstenRecipe.order = "d[tungsten-plate]" + end + end + if simpleCompress.smelting then + if data.raw.item["tungsten-plate"] and data.raw.item["tungsten-plate"] then + SimpleCompress_AddSmeltingRecipe("tungsten-ore", "tungsten-plate") + SimpleCompress_UnlockOreSmeltingTech("tungsten-ore") + local tungstenRecipe = data.raw.recipe["smelt-compressed-tungsten-ore"] + tungstenRecipe.results = { + {type="item", name = "tungsten-plate", amount=simpleCompress.CompressedSmeltAmount}, + } + tungstenRecipe.icons = {{ icon = "__bztungsten__/graphics/icons/tungsten-plate.png", icon_size = 128 }} + tungstenRecipe.subgroup = "raw-material" + tungstenRecipe.order = "d[tungsten-plate]" + end + end +end diff --git a/zircon-matter.lua b/zircon-matter.lua new file mode 100644 index 0000000..3f450bb --- /dev/null +++ b/zircon-matter.lua @@ -0,0 +1,73 @@ +-- Matter recipes for Krastorio2 +if mods["Krastorio2"] then +local matter = require("__Krastorio2__/lib/public/data-stages/matter-util") + +data:extend( +{ + { + type = "technology", + name = "zirconium-matter-processing", + icons = + { + { + icon = "__Krastorio2__/graphics/technologies/matter-stone.png", + icon_size = 256, + }, + { + icon = "__bzzirconium__/graphics/icons/zircon.png", + icon_size = 64, icon_mipmaps = 3, + scale = 1.25, + } + }, + prerequisites = {"kr-matter-processing"}, + unit = + { + count = 350, + ingredients = + { + {"production-science-pack", 1}, + {"utility-science-pack", 1}, + {"matter-tech-card", 1} + }, + time = 45 + } + }, +}) + +local zircon_matter = + { + item_name = "zircon", + minimum_conversion_quantity = 10, + matter_value = 6, + energy_required = 1, + need_stabilizer = false, + unlocked_by_technology = "zirconium-matter-processing" + } +matter.createMatterRecipe(zircon_matter) + + +local zirconia_matter = + { + item_name = "zirconia", + minimum_conversion_quantity = 20, + matter_value = 10, + energy_required = 2, + only_deconversion = true, + need_stabilizer = true, + unlocked_by_technology = "zirconium-matter-processing" + } +matter.createMatterRecipe(zirconia_matter) + +local zirconium_plate_matter = + { + item_name = "zirconium-plate", + minimum_conversion_quantity = 10, + matter_value = 17, + energy_required = 2, + only_deconversion = true, + need_stabilizer = true, + unlocked_by_technology = "zirconium-matter-processing" + } +matter.createMatterRecipe(zirconium_plate_matter) + +end diff --git a/zircon-particle.lua b/zircon-particle.lua new file mode 100644 index 0000000..9f0ccd0 --- /dev/null +++ b/zircon-particle.lua @@ -0,0 +1,144 @@ +data:extend( +{ + { + type = "optimized-particle", + name = "zircon-particle", + flags = {"not-on-map"}, + life_time = 180, + pictures = + { + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/zircon-particle-1.png", + priority = "extra-high", + width = 16, + height = 16, + frame_count = 1, + hr_version = + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/hr-zircon-particle-1.png", + priority = "extra-high", + width = 32, + height = 32, + frame_count = 1, + scale = 0.5 + } + }, + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/zircon-particle-2.png", + priority = "extra-high", + width = 16, + height = 16, + frame_count = 1, + hr_version = + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/hr-zircon-particle-2.png", + priority = "extra-high", + width = 32, + height = 32, + frame_count = 1, + scale = 0.5 + } + }, + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/zircon-particle-3.png", + priority = "extra-high", + width = 16, + height = 16, + frame_count = 1, + hr_version = + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/hr-zircon-particle-3.png", + priority = "extra-high", + width = 32, + height = 32, + frame_count = 1, + scale = 0.5 + } + }, + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/zircon-particle-4.png", + priority = "extra-high", + width = 16, + height = 16, + frame_count = 1, + hr_version = + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/hr-zircon-particle-4.png", + priority = "extra-high", + width = 32, + height = 32, + frame_count = 1, + scale = 0.5 + } + } + }, + shadows = + { + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/zircon-particle-shadow-1.png", + priority = "extra-high", + width = 16, + height = 16, + frame_count = 1, + hr_version = + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/hr-zircon-particle-shadow-1.png", + priority = "extra-high", + width = 32, + height = 32, + frame_count = 1, + scale = 0.5 + } + }, + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/zircon-particle-shadow-2.png", + priority = "extra-high", + width = 16, + height = 16, + frame_count = 1, + hr_version = + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/hr-zircon-particle-shadow-2.png", + priority = "extra-high", + width = 32, + height = 32, + frame_count = 1, + scale = 0.5 + } + }, + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/zircon-particle-shadow-3.png", + priority = "extra-high", + width = 16, + height = 16, + frame_count = 1, + hr_version = + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/hr-zircon-particle-shadow-3.png", + priority = "extra-high", + width = 32, + height = 32, + frame_count = 1, + scale = 0.5 + } + }, + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/zircon-particle-shadow-4.png", + priority = "extra-high", + width = 16, + height = 16, + frame_count = 1, + hr_version = + { + filename = "__bzzirconium__/graphics/entity/zircon-particle/hr-zircon-particle-shadow-4.png", + priority = "extra-high", + width = 32, + height = 32, + frame_count = 1, + scale = 0.5 + } + } + } + } +} +) diff --git a/zircon.lua b/zircon.lua new file mode 100644 index 0000000..cbd6c8f --- /dev/null +++ b/zircon.lua @@ -0,0 +1,82 @@ +local resource_autoplace = require('resource-autoplace'); +local noise = require('noise'); + +local util = require("__bzzirconium__.data-util"); + +data:extend({ + { + type = "autoplace-control", + category = "resource", + name = "zircon", + richness = true, + order = "b-e" + }, + { + type = "noise-layer", + name = "zircon" + }, + { + type = "resource", + icon_size = 64, icon_mipmaps = 3, + name = "zircon", + icon = "__bzzirconium__/graphics/icons/zircon.png", + flags = {"placeable-neutral"}, + order="a-b-a", + map_color = {r=0.90, g=0.70, b=0.70}, + minable = + { + hardness = 1, + mining_particle = "zircon-particle", + mining_time = 1.5, + result = "zircon" + }, + 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 = "zircon", + order = "b-z", + base_density = 4, + has_starting_area_placement = true, + regular_rq_factor_multiplier = 1.2, + starting_rq_factor_multiplier = .7, + }, + + stage_counts = {15000, 9500, 5500, 2900, 1300, 400, 150, 80}, + stages = + { + sheet = + { + filename = "__bzzirconium__/graphics/entity/ores/zircon.png", + priority = "extra-high", + size = 64, + frame_count = 8, + variation_count = 8, + hr_version = + { + filename = "__bzzirconium__/graphics/entity/ores/hr-zircon.png", + priority = "extra-high", + size = 128, + frame_count = 8, + variation_count = 8, + scale = 0.5 + } + } + }, + }, + { + type = "item", + name = "zircon", + icon_size = 64, icon_mipmaps = 3, + icon = "__bzzirconium__/graphics/icons/zircon.png", + pictures = { + {filename="__bzzirconium__/graphics/icons/zircon.png", size=64, scale=0.25}, + {filename="__bzzirconium__/graphics/icons/zircon-2.png", size=64, scale=0.25}, + {filename="__bzzirconium__/graphics/icons/zircon-3.png", size=64, scale=0.25}, + {filename="__bzzirconium__/graphics/icons/zircon-4.png", size=64, scale=0.25}, + }, + subgroup = "raw-resource", + order = "t-c-a", + stack_size = util.get_stack_size(50) + }, +}) diff --git a/zirconium-enriched.lua b/zirconium-enriched.lua new file mode 100644 index 0000000..439d132 --- /dev/null +++ b/zirconium-enriched.lua @@ -0,0 +1,123 @@ +-- Enriched Titanium for Krastorio2 +local util = require("__bzzirconium__.data-util"); + +if mods["Krastorio2"] then +data:extend({ + { + type = "item", + name = "enriched-zircon", + icon_size = 128, + icon = "__bzzirconium__/graphics/icons/enriched-zircon.png", + pictures = { + {filename="__bzzirconium__/graphics/icons/enriched-zircon.png", size=128, scale=0.25}, + {filename="__bzzirconium__/graphics/icons/enriched-zircon-2.png", size=128, scale=0.25}, + {filename="__bzzirconium__/graphics/icons/enriched-zircon-3.png", size=128, scale=0.25}, + {filename="__bzzirconium__/graphics/icons/enriched-zircon-4.png", size=128, scale=0.25}, + }, + subgroup = "raw-material", + order = "e05-a[enriched-ores]-a1[enriched-zircon]", + stack_size = util.get_stack_size(100), + }, + { + type = "recipe", + name = "enriched-zircon", + icon = "__bzzirconium__/graphics/icons/enriched-zircon.png", + icon_size = 128, + category = "chemistry", + energy_required = 3, + enabled = false, + always_show_made_in = true, + always_show_products = true, + allow_productivity = true, + ingredients = + { + {type = "fluid", name = "sulfuric-acid", amount = 10}, + {type = "fluid", name = "water", amount = 25, catalyst_amount = 25}, + {type = "item", name = "zircon", amount = 9} + }, + results = + { + {type = "item", name = "enriched-zircon", amount = 6}, + {type = "fluid", name = "dirty-water", amount = 25, catalyst_amount = 25} + }, + crafting_machine_tint = + { + primary = {r = 0.721, g = 0.525, b = 0.043, a = 0.000}, + secondary = {r = 0.200, g = 0.680, b = 0.300, a = 0.357}, + tertiary = {r = 0.690, g = 0.768, b = 0.870, a = 0.000}, + quaternary = {r = 0.0, g = 0.980, b = 0.603, a = 0.900} + }, + subgroup = "raw-material", + order = "e03[enriched-zircon]" + }, + { + type = "recipe", + name = "enriched-zirconia-smelting", + icons = + { + { icon = "__bzzirconium__/graphics/icons/zirconia.png", icon_size = 128, icon_mipmaps = 3, }, + { icon = "__bzzirconium__/graphics/icons/enriched-zircon.png", icon_size = 128, scale=0.125, shift= {-8, -8}}, + }, + category = "smelting", + energy_required = 24, + enabled = false, + always_show_made_in = true, + always_show_products = true, + allow_productivity = true, + ingredients = + { + {"enriched-zircon", 5} + }, + result = "zirconia", + result_count = 10, + order = "z[zirconia]-z[enriched-zirconia]" + }, + { + type = "recipe", + name = "dirty-water-filtration-zircon", + category = "fluid-filtration", + icons = + { + { + icon = data.raw.fluid["dirty-water"].icon, + icon_size = data.raw.fluid["dirty-water"].icon_size + }, + { + icon = data.raw.item["zircon"].icon, + icon_size = data.raw.item["zircon"].icon_size, + scale = 0.20 * (data.raw.fluid["dirty-water"].icon_size/data.raw.item["zircon"].icon_size), + shift = {0, 4} + } + }, + -- icon_size = data.raw.fluid["dirty-water"].icon_size, + energy_required = 2, + enabled = false, + allow_as_intermediate = false, + always_show_made_in = true, + always_show_products = true, + ingredients = + { + {type = "fluid", name = "dirty-water", amount = 100, catalyst_amount = 100}, + }, + results = + { + {type = "fluid", name = "water", amount = 100, catalyst_amount = 100}, + {type = "item", name = "stone", probability = 0.20, amount = 1}, + {type = "item", name = "zircon", probability = 0.20, amount = 1}, + mods.bztitanium and + {type = "item", name = "titanium-ore", probability = 0.20, amount = 1} or nil, + }, + crafting_machine_tint = + { + primary = {r = 0.60, g = 0.20, b = 0, a = 0.6}, + secondary = {r = 1.0, g = 0.843, b = 0.0, a = 0.9} + }, + subgroup = "raw-material", + order = "w013[dirty-water-filtration-zircon]" + } +} +) +util.add_effect("kr-enriched-ores", { type = "unlock-recipe", recipe = "enriched-zircon" }) +util.add_effect("kr-enriched-ores", { type = "unlock-recipe", recipe = "enriched-zirconia-smelting" }) +util.add_effect("kr-enriched-ores", { type = "unlock-recipe", recipe = "dirty-water-filtration-zircon" }) +end diff --git a/zirconium-recipe-final-rrr.lua b/zirconium-recipe-final-rrr.lua new file mode 100644 index 0000000..b61dbab --- /dev/null +++ b/zirconium-recipe-final-rrr.lua @@ -0,0 +1,15 @@ +local util = require("__bzzirconium__.data-util"); + +if mods["Rich-Rocks-Requiem"] then + if data.raw.recipe["rrr-stone-processing"] then + table.insert(data.raw.recipe["rrr-stone-processing"].results, + {name = "zircon", probability = 0.50, amount = 10} + ) + end + + if data.raw.recipe["rrr-raw-ores-processing"] then + table.insert(data.raw.recipe["rrr-raw-ores-processing"].results, + {name = "zircon", probability = 0.50, amount = 10} + ) + end +end diff --git a/zirconium-recipe-final-stacking.lua b/zirconium-recipe-final-stacking.lua new file mode 100644 index 0000000..46acaca --- /dev/null +++ b/zirconium-recipe-final-stacking.lua @@ -0,0 +1,35 @@ +-- Deadlock stacking recipes + +local util = require("__bzzirconium__.data-util"); + +if deadlock then + deadlock.add_stack("zircon", "__bzzirconium__/graphics/icons/stacked/zircon-stacked.png", "deadlock-stacking-2", 64) + 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) + if util.use_cermet() then + deadlock.add_stack("cermet", "__bzzirconium__/graphics/icons/stacked/cermet-stacked.png", "deadlock-stacking-2", 128) + end + if mods["Krastorio2"] then + deadlock.add_stack("enriched-zircon", "__bzzirconium__/graphics/icons/stacked/enriched-zircon-stacked.png" , "deadlock-stacking-2", 64) + end + if mods["Krastorio2"] or mods["space-exploration"] then + deadlock.add_stack("zirconium-tungstate", nil, "deadlock-stacking-2", 64) + end +end + +-- Deadlock crating recipes +if deadlock_crating then + deadlock_crating.add_crate("zircon", "deadlock-crating-2") + deadlock_crating.add_crate("zirconia", "deadlock-crating-2") + deadlock_crating.add_crate("zirconium-plate", "deadlock-crating-2") + if util.use_cermet() then + deadlock_crating.add_crate("cermet", "deadlock-crating-2") + end + if mods["Krastorio2"] then + deadlock_crating.add_crate("enriched-zircon", "deadlock-crating-2") + end + if mods["Krastorio2"] or mods["space-exploration"] then + deadlock_crating.add_crate("zirconium-tungstate", "deadlock-crating-2") + end +end + diff --git a/zirconium-recipe-se.lua b/zirconium-recipe-se.lua new file mode 100644 index 0000000..5a7e037 --- /dev/null +++ b/zirconium-recipe-se.lua @@ -0,0 +1,88 @@ +-- Additional recipes if Space Exploration mod is enabled +local util = require("__bzzirconium__.data-util"); + +if mods["space-exploration"] then + se_delivery_cannon_recipes["zircon"] = {name= "zircon"} + se_delivery_cannon_recipes["zirconia"] = {name= "zirconia"} + se_delivery_cannon_recipes["zirconium-plate"] = {name= "zirconium-plate"} + if mods["Krastorio2"] then + data:extend({ + { + type = "recipe", + name = "enriched-zirconia-smelting-vulcanite", + category = "smelting", + order = "z[zirconium-plate]", + energy_required = 24, + enabled = false, + always_show_made_in = true, + allow_as_intermediate = false, + ingredients = { + {name = "enriched-zircon", amount = 8}, + {name = "se-vulcanite-block", amount = 1}, + }, + results = { + {name = "zirconia", amount = 24}, + }, + icons = + { + { icon = "__bzzirconium__/graphics/icons/zirconia.png", icon_size = 128, icon_mipmaps = 3 }, + { icon = "__space-exploration-graphics__/graphics/icons/vulcanite-block.png", icon_size = 64, scale=0.25, shift= {-10, -10}}, + }, + }, + }) + table.insert(data.raw.technology["se-processing-vulcanite"].effects, + {type = "unlock-recipe", recipe= "enriched-zirconia-smelting-vulcanite"}) + data.raw.recipe["enriched-zircon"].order= "d[zircon]" + se_delivery_cannon_recipes["enriched-zircon"] = {name= "enriched-zircon"} + else + data:extend({ + { + type = "recipe", + name = "zircon-smelting-vulcanite", + category = "smelting", + order = "z[zirconium-plate]", + energy_required = 16, + enabled = false, + always_show_made_in = true, + allow_as_intermediate = false, + ingredients = { + {name = "zircon", amount = 8}, + {name = "se-vulcanite-block", amount = 1}, + }, + results = { + {name = "zirconia", amount = 24}, + }, + icons = + { + { icon = "__bzzirconium__/graphics/icons/zirconia.png", icon_size = 128, icon_mipmaps = 3,}, + { icon = "__space-exploration-graphics__/graphics/icons/vulcanite-block.png", icon_size = 64, scale=0.25, shift= {-10, -10}}, + }, + }}) + util.add_effect("se-processing-vulcanite", {type = "unlock-recipe", recipe= "zircon-smelting-vulcanite"}) + end + data:extend({ + { + type = "recipe", + name = "zirconia-smelting-vulcanite", + category = "smelting", + order = "z[zirconium-plate]", + energy_required = 16, + enabled = false, + always_show_made_in = true, + allow_as_intermediate = false, + ingredients = { + {name = "zirconia", amount = 24}, + {name = "se-vulcanite-block", amount = 1}, + }, + results = { + {name = "zirconium-plate", amount = 12}, + }, + icons = + { + { icon = "__bzzirconium__/graphics/icons/zirconium-plate.png", icon_size = 128, icon_mipmaps = 3,}, + { icon = "__space-exploration-graphics__/graphics/icons/vulcanite-block.png", icon_size = 64, scale=0.25, shift= {-10, -10}}, + }, + }, + }) + util.add_effect("se-processing-vulcanite", {type = "unlock-recipe", recipe= "zirconia-smelting-vulcanite"}) +end diff --git a/zirconium-recipe-updates.lua b/zirconium-recipe-updates.lua new file mode 100644 index 0000000..d2e33a9 --- /dev/null +++ b/zirconium-recipe-updates.lua @@ -0,0 +1,87 @@ +local util = require("__bzzirconium__.data-util"); + + +util.replace_some_ingredient("stone-furnace", "stone", 1, "zircon", 1) +if not mods["Krastorio2"] then + util.replace_some_ingredient("steel-furnace", "stone-brick", 4, "zircon", 6) +end + +if mods["Krastorio2"] then + util.replace_some_ingredient("low-density-structure", "copper-plate", 5, "zirconia", 5) +else + util.replace_some_ingredient("low-density-structure", "copper-plate", 10, "zirconia", 10) +end +util.add_ingredient("electric-furnace", "zirconia", 5) + +util.add_ingredient("explosives", "zirconium-plate", 1) +util.add_ingredient("nuclear-reactor", "zirconium-plate", 100) + +local ufc_amt = mods["Krastorio2"] and 1 or 5 +if mods.bzlead then + util.replace_some_ingredient("uranium-fuel-cell", "lead-plate", 5, "zirconium-plate", ufc_amt) +else + util.replace_some_ingredient("uranium-fuel-cell", "iron-plate", 5, "zirconium-plate", ufc_amt) +end + +if not mods.bztungsten then + util.add_ingredient("nuclear-fuel", "zirconium-plate", 1) +end + + +if util.use_cermet() then + util.add_ingredient("rocket-control-unit", "cermet", 1) + util.add_ingredient("speed-module-3", "cermet", 1) + util.add_ingredient("productivity-module-3", "cermet", 1) + util.add_ingredient("effectivity-module-3", "cermet", 1) + util.add_ingredient("assembling-machine-3", "cermet", 2) + util.add_ingredient("beacon", "cermet", 10) + util.add_ingredient("spidertron", "cermet", 8) +end + +-- Krastorio2 +if mods["Krastorio2"] then + + util.replace_some_ingredient("matter-stabilizer", "imersium-plate", 1, "zirconium-plate", 5) + util.add_ingredient("kr-advanced-furnace", "zirconia", 60) + if util.use_cermet() then + util.add_ingredient("ai-core", "cermet", 2) + util.add_ingredient("kr-matter-assembler", "cermet", 4) + end + + util.replace_some_ingredient("stone-brick", "stone", 2, "zircon", 2) + if mods["space-exploration"] then + util.replace_some_ingredient("se-stone-brick-vulcanite", "stone", 2, "zircon", 2) + end + + if not mods.bztungsten then + util.add_ingredient("matter-research-data", "zirconia", 5) + end +end + +-- Space Exploration +if mods["space-exploration"] then + util.replace_some_ingredient("se-aeroframe-scaffold", "se-aeroframe-pole", 1, "zirconia", 2) + util.replace_some_ingredient("se-heat-shielding", "stone-tablet", 10, "zirconia", 10) + util.replace_ingredient("se-heat-shielding-iridium", "stone-tablet", "zirconia") + util.add_ingredient("se-thruster-suit", "zirconium-plate", 10) + util.add_ingredient("se-space-thermodynamics-laboratory", "zirconium-plate", 20) + if util.use_cermet() then + util.add_ingredient("se-quantum-processor", "cermet", 1) + util.add_ingredient("se-space-mechanical-laboratory", "cermet", 40) + end + if not mods.bztungsten then + util.add_ingredient("se-hot-thermodynamics-data", "zirconium-plate", 1) + util.add_product("se-hot-thermodynamics-data", {name="zirconium-plate", amount=1, probability=0.50}) + end +end +-- AAI +util.add_ingredient("industrial-furnace", "zirconium-plate", 4) + +-- Aircraft +util.add_ingredient("gunship", "zirconia", 10) +util.add_ingredient("cargo-plane", "zirconia", 20) +util.add_ingredient("jet", "zirconia", 50) +util.add_ingredient("flying-fortress", "zirconia", 80) +util.add_ingredient("aircraft-afterburner", "zirconia", 5) + +util.add_ingredient("mega-furnace", "zirconia", 5) diff --git a/zirconium-recipe.lua b/zirconium-recipe.lua new file mode 100644 index 0000000..c9e44d5 --- /dev/null +++ b/zirconium-recipe.lua @@ -0,0 +1,278 @@ +-- Zirconium smelting, etc + +local util = require("__bzzirconium__.data-util"); + +-- data:extend({ +-- +-- }) + +data:extend({ + { + type = "item", + name = "zirconia", + icon = "__bzzirconium__/graphics/icons/zirconia.png", + icon_size = 128, + subgroup = "raw-material", + order = "z[zirconia]", + stack_size = util.get_stack_size(200) + }, + { + type = "recipe", + name = "zirconia", + category = "smelting", + subgroup = "raw-material", + order = "z[zirconia]", + icons = (mods["Krastorio2"] and + { + { icon = "__bzzirconium__/graphics/icons/zirconia.png", icon_size = 128 }, + { icon = "__bzzirconium__/graphics/icons/zircon.png", icon_size = 64, scale=0.25, shift= {-8, -8}}, + } or { + { icon = "__bzzirconium__/graphics/icons/zirconia.png", icon_size = 128, }, + } +), + normal = (mods["Krastorio2"] and + { + enabled = false, + energy_required = 8, + ingredients = {{"zircon", 5}}, + results = mods.bztitanium and { + {name="zirconia", amount_min=4, amount_max=5}, + {name="titanium-ore", amount=1, probability=.5} + } or {{"zirconia", 5}} + } or + { + enabled = false, + energy_required = 3.2, + ingredients = {{"zircon", 1}}, + results = mods.bztitanium and { + {name="zirconia", amount=2, probability=.95}, + {name="titanium-ore", amount=1, probability=.1} + } or {{"zirconia", 2}} + }), + expensive = + { + enabled = false, + energy_required = 3.2, + ingredients = {{"zircon", 1}}, + results = mods.bztitanium and { + {"zirconia", 1}, {name="titanium-ore", amount=1, probability=.05} + } or {{"zirconia", 2}} + } + }, + { + type = "item", + name = "zirconium-plate", + icon = "__bzzirconium__/graphics/icons/zirconium-plate.png", + icon_size = 128, + subgroup = "raw-material", + order = "z[zirconium-plate]", + stack_size = util.get_stack_size(100) + }, + { + type = "recipe", + name = "zirconium-plate", + category = "smelting", + subgroup = "raw-material", + order = "z[zirconium-plate]", + icons = (mods["Krastorio2"] and + { + { icon = "__bzzirconium__/graphics/icons/zirconium-plate.png", icon_size = 128 }, + { icon = "__bzzirconium__/graphics/icons/zirconia.png", icon_size = 128, scale=0.125, shift= {-8, -8}}, + } or { + { icon = "__bzzirconium__/graphics/icons/zirconium-plate.png", icon_size = 128, }, + } +), + normal = (mods["Krastorio2"] and + { + enabled = false, + energy_required = 8, + ingredients = {{"zirconia", 15}}, + result = "zirconium-plate", + result_count = 5, + } or + { + enabled = false, + energy_required = 9.6, + ingredients = {{"zirconia", 3}}, + result = "zirconium-plate", + result_count = 1, + }), + expensive = + { + enabled = false, + energy_required = 9.6, + ingredients = {{"zirconia", 6}}, + result = "zirconium-plate", + } + }, + { + type = "technology", + name = "zirconia-processing", + icon_size = 340, + icon = "__bzzirconium__/graphics/technology/zirconia-processing.png", + effects = + { + { + type = "unlock-recipe", + recipe = "zirconia" + }, + { + type = "unlock-recipe", + 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 = + { + count = 75, + ingredients = + { + {"automation-science-pack", 1}, + {"logistic-science-pack", 1}, + }, + time = 30, + }, + prerequisites = {"automation-2", (not mods.bzzirconium and "advanced-material-processing") or nil }, + order = "z" + }, +}) + +-- cermet only if setting enabled +if util.use_cermet() then +local cermet_i = {{"zirconia", 1}, {"copper-plate", 1}} +if mods.bztitanium then + table.insert(cermet_i, {"titanium-plate", 1}) +end +if mods.bzsilicon then + table.insert(cermet_i, {"silica", 1}) +end +data:extend({ + { + type = "item", + name = "cermet", + icon = "__bzzirconium__/graphics/icons/cermet.png", + icon_size = 128, + subgroup = "intermediate-product", + order = "z[cermet]", + stack_size = util.get_stack_size(200) + }, + { + type = "recipe", + name = "cermet", + category = "crafting", + subgroup = "intermediate-product", + order = "z[zirconia]", + icons = { { icon = "__bzzirconium__/graphics/icons/cermet.png", icon_size = 128, } }, + enabled = false, + energy_required = #cermet_i, + ingredients = cermet_i, + result = "cermet", + result_count = #cermet_i, + }, + { + type = "technology", + name = "cermet", + icon_size = 512, + icon = "__bzzirconium__/graphics/technology/cermet.png", + effects = + { + { + type = "unlock-recipe", + recipe = "cermet" + }, + }, + unit = + { + count = 100, + ingredients = + { + {"automation-science-pack", 1}, + {"logistic-science-pack", 1}, + {"chemical-science-pack", 1}, + {"production-science-pack", 1}, + }, + time = 30, + }, + prerequisites = {"production-science-pack"}, + order = "c" + }, +}) +end + +-- sorting +data:extend({ + { + type = "recipe", + name = "sort-stone-zircon", + category = "crafting", + subgroup = "raw-resource", + order = "bzz", + icons = { + { icon = "__bzzirconium__/graphics/icons/zircon.png", icon_size = 64 }, + { icon = "__base__/graphics/icons/stone.png", icon_size = 64, scale=0.25, shift= {-8, -8}}, + }, + enabled = true, + energy_required = 1, + ingredients = {{"stone", 2}}, + results = { + {type="item", name="zircon", amount=1}, + {type="item", name="stone", amount=1, probability=0.5}, + } + }, + { + type = "recipe", + name = "sort-zircon-stone", + category = "crafting", + subgroup = "raw-resource", + order = "bzz", + icons = { + { icon = "__base__/graphics/icons/stone.png", icon_size = 64 }, + { icon = "__bzzirconium__/graphics/icons/zircon.png", icon_size = 64, scale=0.25, shift= {-8, -8}}, + }, + enabled = true, + energy_required = 1, + ingredients = {{"zircon", 2}}, + results = { + {type="item", name="stone", amount=1}, + {type="item", name="zircon", amount=1, probability=0.5}, + } + } +}) + +-- Zirconium Tungstate, only if needed +if mods.bztungsten and (mods["Krastorio2"] or mods["space-exploration"]) then +data:extend({ + { + type = "item", + name = "zirconium-tungstate", + icons = {{icon = "__bzzirconium__/graphics/icons/zircon-powder.png", + icon_size = 64, tint = {a=1, r=.95, g=.75, b=0}}}, + subgroup = "intermediate-product", + order = "z[z]", + stack_size = util.get_stack_size(100) + }, + { + type = "recipe", + name = "zirconium-tungstate", + category = "crafting", + subgroup = "intermediate-product", + order = "z[z]", + enabled = false, + energy_required = 2, + ingredients = {{"zirconium-plate", 1}, {"tungsten-plate", 1},}, + result = "zirconium-tungstate", + result_count = 2, + }, +}) +util.add_effect("zirconia-processing", { + type = "unlock-recipe", + recipe = "zirconium-tungstate" + }) +end