naive pymods compatibility

This commit is contained in:
Brevven 2020-12-29 15:09:29 -08:00
parent 7128b93c8f
commit ffb93b47e5
8 changed files with 56 additions and 14 deletions

View file

@ -1,4 +1,9 @@
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 0.9.4
Date: 2020-12-29
Changes:
- Base "naive" compatibility with Pyanodon's Raw Ores (pyrawores) - we just use their plates an remove our ore/plates.
---------------------------------------------------------------------------------------------------
Version: 0.9.3 Version: 0.9.3
Date: 2020-12-22 Date: 2020-12-22
Changes: Changes:

View file

@ -1,6 +1,7 @@
local data_util = {} local data_util = {}
data_util.titanium_plate = "" data_util.titanium_plate = ""
data_util.titanium_processing = ""
if mods["FactorioExtended-Plus-Core"] then if mods["FactorioExtended-Plus-Core"] then
data_util.titanium_plate = "titanium-alloy" data_util.titanium_plate = "titanium-alloy"
@ -8,6 +9,13 @@ else
data_util.titanium_plate = "titanium-plate" data_util.titanium_plate = "titanium-plate"
end end
if mods["pyrawores"] then
data_util.titanium_processing = "titanium-mk01"
else
data_util.titanium_processing = "titanium-processing"
end
-- Remove an element of type t and name from data.raw -- Remove an element of type t and name from data.raw
function data_util.remove_raw(t, name) function data_util.remove_raw(t, name)
for i, elem in pairs(data.raw[t]) do for i, elem in pairs(data.raw[t]) do
@ -18,17 +26,34 @@ function data_util.remove_raw(t, name)
end end
end end
function data_util.check_for_ingredient(recipe, name)
if recipe ~= nil and recipe.ingredients ~= nil then
log(serpent.dump(recipe))
for i, ingredient in pairs(recipe.ingredients) do
if ingredient.name == name then
return true
end
end
end
return false
end
--- Add a given quantity of titanium plates to a given recipe --- Add a given quantity of titanium plates to a given recipe
function data_util.add_titanium_ingredient(quantity, recipe) function data_util.add_titanium_ingredient(quantity, recipe)
if recipe ~= nil and recipe.ingredients ~= nil then if recipe ~= nil and recipe.ingredients ~= nil then
if data_util.check_for_ingredient(recipe, data_util.titanium_plate) then
return
end
table.insert(recipe.ingredients, {data_util.titanium_plate, quantity}) table.insert(recipe.ingredients, {data_util.titanium_plate, quantity})
end end
end end
--- Add titanium processing as a prerequisite to a given technology --- Add titanium processing as a prerequisite to a given technology
function data_util.add_titanium_prerequisite(technology) function data_util.add_titanium_prerequisite(technology)
table.insert(technology.prerequisites, "titanium-processing") if mods["pyrawores"] then
return
end
table.insert(technology.prerequisites, data_util.titanium_processing)
end end
--- Change all occurances of steel plates to titanium plates in a given recipe --- Change all occurances of steel plates to titanium plates in a given recipe
@ -43,6 +68,9 @@ end
function data_util.replace_ingredient(recipe, old, new) function data_util.replace_ingredient(recipe, old, new)
if recipe ~= nil and recipe.ingredients ~= nil then if recipe ~= nil and recipe.ingredients ~= nil then
if data_util.check_for_ingredient(recipe, new) then
return
end
for i, ingredient in pairs(recipe.ingredients) do for i, ingredient in pairs(recipe.ingredients) do
-- For final fixes -- For final fixes
if ingredient.name == old then ingredient.name = new end if ingredient.name == old then ingredient.name = new end

View file

@ -1,6 +1,6 @@
{ {
"name": "bztitanium", "name": "bztitanium",
"version": "0.9.3", "version": "0.9.4",
"factorio_version": "1.1", "factorio_version": "1.1",
"title": "Titanium", "title": "Titanium",
"author": "Brevven", "author": "Brevven",

View file

@ -1,21 +1,23 @@
-- Settings, etc. -- Settings, etc.
-- --
-- Finalize tech tree based on settings and other dependent mods. -- Finalize tech tree based on settings and other dependent mods.
local util = require("__bztitanium__.data-util");
local mining_fluid local mining_fluid
if settings.startup["bztitanium-mining-fluid"] then if settings.startup["bztitanium-mining-fluid"] then
mining_fluid = settings.startup["bztitanium-mining-fluid"].value mining_fluid = settings.startup["bztitanium-mining-fluid"].value
end end
if mining_fluid == "chlorine" and data.raw.fluid["chlorine"] and mods["Krastorio2"] then if mining_fluid == "chlorine" and data.raw.fluid["chlorine"] and mods["Krastorio2"] then
data.raw.technology["titanium-processing"].prerequisites = {"kr-fluids-chemistry"} data.raw.technology[util.titanium_processing].prerequisites = {"kr-fluids-chemistry"}
data.raw.technology["titanium-processing"].unit.ingredients = { data.raw.technology[util.titanium_processing].unit.ingredients = {
{"basic-tech-card", 1}, {"automation-science-pack", 1}, {"logistic-science-pack", 1}} {"basic-tech-card", 1}, {"automation-science-pack", 1}, {"logistic-science-pack", 1}}
elseif mining_fluid == "sulfuric-acid" then elseif mining_fluid == "sulfuric-acid" then
data.raw.technology["titanium-processing"].prerequisites = {"sulfur-processing"} data.raw.technology[util.titanium_processing].prerequisites = {"sulfur-processing"}
data.raw.technology["titanium-processing"].unit.ingredients = { data.raw.technology[util.titanium_processing].unit.ingredients = {
{"automation-science-pack", 1}, {"logistic-science-pack", 1}} {"automation-science-pack", 1}, {"logistic-science-pack", 1}}
else else
data.raw.technology["titanium-processing"].prerequisites = {"lubricant"} data.raw.technology[util.titanium_processing].prerequisites = {"lubricant"}
if not mods["Pre0-17-60Oil"] then if not mods["Pre0-17-60Oil"] then
data.raw.technology["solar-panel-equipment"].unit.ingredients = { data.raw.technology["solar-panel-equipment"].unit.ingredients = {
{"automation-science-pack", 1}, {"logistic-science-pack", 1}, {"chemical-science-pack", 1}} {"automation-science-pack", 1}, {"logistic-science-pack", 1}, {"chemical-science-pack", 1}}

View file

@ -1,4 +1,6 @@
-- Enriched Titanium for Krastorio2 -- Enriched Titanium for Krastorio2
local util = require("__bztitanium__.data-util");
if mods["Krastorio2"] then if mods["Krastorio2"] then
data:extend( data:extend(
{ {
@ -103,7 +105,7 @@ data:extend(
recipe = "dirty-water-filtration-titanium", recipe = "dirty-water-filtration-titanium",
} }
}, },
prerequisites = {"kr-enriched-ores", "titanium-processing"}, prerequisites = {"kr-enriched-ores", util.titanium_processing},
unit = unit =
{ {
count = 150, count = 150,

View file

@ -23,7 +23,7 @@ if mods["5dim_core"] then
result_count = 100, result_count = 100,
} }
}) })
table.insert(data.raw.technology["titanium-processing"].effects, table.insert(data.raw.technology[util.titanium_processing].effects,
{type = "unlock-recipe", recipe="titanium-plate-industrial-ore"}) {type = "unlock-recipe", recipe="titanium-plate-industrial-ore"})
@ -83,11 +83,11 @@ if mods["5dim_core"] then
result_count = 100, result_count = 100,
} }
}) })
table.insert(data.raw.technology["titanium-processing"].effects, table.insert(data.raw.technology[util.titanium_processing].effects,
{type = "unlock-recipe", recipe="titanium-dust"}) {type = "unlock-recipe", recipe="titanium-dust"})
table.insert(data.raw.technology["titanium-processing"].effects, table.insert(data.raw.technology[util.titanium_processing].effects,
{type = "unlock-recipe", recipe="titanium-plate-dust"}) {type = "unlock-recipe", recipe="titanium-plate-dust"})
table.insert(data.raw.technology["titanium-processing"].effects, table.insert(data.raw.technology[util.titanium_processing].effects,
{type = "unlock-recipe", recipe="titanium-plate-industrial-dust"}) {type = "unlock-recipe", recipe="titanium-plate-industrial-dust"})
if mods["5dim_automation"] then if mods["5dim_automation"] then

View file

@ -16,9 +16,11 @@ end
util.add_titanium_prerequisite(data.raw.technology["solar-panel-equipment"]) util.add_titanium_prerequisite(data.raw.technology["solar-panel-equipment"])
-- Also add titanium to steam turbines -- Also add titanium to some nuclear steam-handling stuff
util.add_titanium_ingredient(20, data.raw.recipe["steam-turbine"]) util.add_titanium_ingredient(20, data.raw.recipe["steam-turbine"])
util.add_titanium_ingredient(20, data.raw.recipe["heat-exchanger"]) if mods["pyrawores"] then
util.add_titanium_ingredient(20, data.raw.recipe["heat-exchanger"])
end
util.add_titanium_prerequisite(data.raw.technology["nuclear-power"]) util.add_titanium_prerequisite(data.raw.technology["nuclear-power"])
-- Krastorio 2 changes -- Krastorio 2 changes

View file

@ -14,6 +14,7 @@ if mods["modmashsplinterresources"] then
util.remove_raw("recipe", "titanium-extraction-process") util.remove_raw("recipe", "titanium-extraction-process")
end end
if not mods["pyrawores"] then
data:extend( data:extend(
{ {
{ {
@ -88,3 +89,5 @@ data:extend(
}, },
} }
) )
end