Compare commits

..

8 commits
2.0.2 ... main

Author SHA1 Message Date
Simon Brodtmann
66cfcf53c6 2.0.6 2025-08-31 07:39:41 +02:00
Simon Brodtmann
c9ef722995 Add missing subgroups 2025-08-31 07:37:17 +02:00
Simon Brodtmann
b18c75a35b Changelog 2025-08-31 07:06:24 +02:00
Simon Brodtmann
031f3ab102 Changes from TheSAguy 2025-08-31 07:06:14 +02:00
Simon Brodtmann
91ea733958 2.0.4 2025-07-28 22:13:56 +02:00
Simon Brodtmann
e9b2aa368a Fix Bio Boiler 2025-07-28 00:22:49 +02:00
Simon Brodtmann
662f05a1ea 2.0.3 2025-07-13 12:30:23 +02:00
Simon Brodtmann
fe30affb28 Fixed several entities 2025-07-13 12:25:10 +02:00
721 changed files with 4257 additions and 3529 deletions

View file

@ -1,85 +0,0 @@
----- Just used for Testing
function Test_Spawn()
local surface = game.surfaces['nauvis']
surface.create_entity({ name = "tree-01", position = { 2, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-02", position = { 4, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-02-red", position = { 6, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-03", position = { 8, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-04", position = { 10, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-05", position = { 12, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-06", position = { 14, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-06-brown", position = { 16, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-07", position = { 18, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-08", position = { 20, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-08-brown", position = { 22, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-09", position = { 24, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-09-brown", position = { 26, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-09-red", position = { 28, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-a", position = { 30, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-b", position = { 32, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-c", position = { 34, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-d", position = { 36, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-e", position = { 38, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-f", position = { 40, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-g", position = { 42, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-h", position = { 44, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-i", position = { 46, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-j", position = { 48, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-k", position = { 50, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-l", position = { 52, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-m", position = { 54, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-desert-n", position = { 56, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-a", position = { 58, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-b", position = { 60, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-c", position = { 62, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-d", position = { 64, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-e", position = { 66, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-f", position = { 68, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-g", position = { 70, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-h", position = { 72, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-i", position = { 74, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-j", position = { 76, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-k", position = { 78, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-l", position = { 80, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-m", position = { 82, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-n", position = { 84, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-dryland-o", position = { 86, 10 }, force = game.forces.player })
--surface.create_entity({name = "tree-grassland-0", position = {88, 10}, force = game.forces.player})
surface.create_entity({ name = "tree-grassland-a", position = { 90, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-b", position = { 92, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-c", position = { 94, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-d", position = { 96, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-e", position = { 98, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-f", position = { 100, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-g", position = { 102, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-h", position = { 104, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-h2", position = { 106, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-h3", position = { 108, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-i", position = { 110, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-k", position = { 112, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-l", position = { 114, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-m", position = { 116, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-n", position = { 118, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-p", position = { 120, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-grassland-q", position = { 122, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-snow-a", position = { 124, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-volcanic-a", position = { 126, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-a", position = { 128, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-b", position = { 130, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-c", position = { 132, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-d", position = { 134, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-e", position = { 136, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-f", position = { 138, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-g", position = { 140, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-h", position = { 142, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-i", position = { 144, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-j", position = { 146, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-k", position = { 148, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-l", position = { 150, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-m", position = { 152, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-n", position = { 154, 10 }, force = game.forces.player })
surface.create_entity({ name = "tree-wetland-o", position = { 156, 10 }, force = game.forces.player })
end

View file

@ -1,4 +1,30 @@
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 2.0.6
Date: 31.08.2025
Bug Fixes:
- Add missing subgroups (put icons in correct tab)
---------------------------------------------------------------------------------------------------
Version: 2.0.5
Date: 31.08.2025
Bug Fixes:
- Fixed Wood Underground pipe graphic (TheSAguy)
- Fixed Wood Underground pipe graphic (TheSAguy)
- Fixed Dart Turret ammo (TheSAguy)
Changes:
- Updated Rail Recipe (TheSAguy)
- Added Wooden Rail (TheSAguy)
- Updated some graphics (TheSAguy; BIG thanks to Snouz!)
---------------------------------------------------------------------------------------------------
Version: 2.0.4
Date: 28.07.2025
Bug Fixes:
- Fix Bio Boiler
---------------------------------------------------------------------------------------------------
Version: 2.0.3
Date: 13.07.2025
Bug Fixes:
- Fix several entities
---------------------------------------------------------------------------------------------------
Version: 2.0.2 Version: 2.0.2
Date: 07.07.2025 Date: 07.07.2025
Bug Fixes: Bug Fixes:

View file

@ -247,6 +247,7 @@ return function(mod_name)
-- Rudimentary check of the arguments passed to a function -- Rudimentary check of the arguments passed to a function
common.check_args = function(arg, arg_type, desc) common.check_args = function(arg, arg_type, desc)
if not (arg and type(arg) == arg_type) then if not (arg and type(arg) == arg_type) then
game.print(type(arg) .. " = " .. arg_type)
common.arg_err(arg or "nil", desc or arg_type or "nil") common.arg_err(arg or "nil", desc or arg_type or "nil")
end end
end end
@ -596,7 +597,7 @@ return function(mod_name)
common.show("#g_table", g_table and table_size(g_table)) common.show("#g_table", g_table and table_size(g_table))
common.check_args(g_table, "table") common.check_args(g_table, "table")
common.check_args(base_entity, "table") common.check_args(base_entity, "userdata")
if not base_entity.valid then if not base_entity.valid then
common.arg_err(base_entity, "base entity") common.arg_err(base_entity, "base entity")

View file

@ -460,10 +460,14 @@ local function On_Built(event)
elseif entity.type == "electric-pole" then elseif entity.type == "electric-pole" then
local pole = entity local pole = entity
-- Make sure hidden poles of the Bio gardens are connected correctly! -- Make sure hidden poles of the Bio gardens are connected correctly!
if pole.name == entities["bi-bio-garden"].hidden[h_key].name and base then local garden_names = { "bi-bio-garden", "bi-bio-garden-larger", "bi-bio-garden-huge" }
BioInd.writeDebug("Bio garden!") for _, gname in ipairs(garden_names) do
BioInd.connect_garden_pole(base, pole) if entities[gname] and pole.name == entities[gname].hidden[h_key].name and base then
BioInd.writeDebug("Connected %s (%s)", { pole.name, pole.unit_number or "nil" }) BioInd.writeDebug("Bio garden (" .. gname .. ")!")
BioInd.connect_garden_pole(base, pole)
BioInd.writeDebug("Connected %s (%s)", { pole.name, pole.unit_number or "nil" })
break
end
end end
-- A seedling has been planted -- A seedling has been planted
@ -645,16 +649,37 @@ end
-- Radar stuff -- Radar stuff
-------------------------------------------------------------------- --------------------------------------------------------------------
-- Radar completed a sector scan -- Robust sector scanned handler for Arboretum radar
local function On_Sector_Scanned(event) local function On_Sector_Scanned(event)
local f_name = "On_Sector_Scanned" -- defensive checks
BioInd.writeDebug("Entered function %s(%s)", { f_name, event }) BioInd.writeDebug("On_Sector_Scanned fired")
--game.print("On_Sector_Scanned fired")
if not (event and event.radar) then return end
local radar = event.radar
if not (radar.valid and radar.unit_number) then return end
---- Each time a Arboretum-Radar scans a sector ---- -- Make sure compound-entity data is available before accessing it
local arboretum = storage.bi_arboretum_radar_table[event.radar.unit_number] local arb_proto = BioInd.compound_entities and BioInd.compound_entities["bi-arboretum"]
if arboretum then if not (arb_proto and arb_proto.hidden and arb_proto.hidden.radar and arb_proto.hidden.radar.name) then
Get_Arboretum_Recipe(storage.bi_arboretum_table[arboretum], event) -- not ready yet (init not finished) — bail out safely
return
end end
-- Only handle scans from our arboretum radar type
if radar.name ~= arb_proto.hidden.radar.name then return end
-- Look up the base arboretum unit_number (stored when the hidden radar was created)
local base_unit_number = storage.bi_arboretum_radar_table and storage.bi_arboretum_radar_table[radar.unit_number]
if not base_unit_number then
-- no mapping found -> nothing to do
return
end
local arb_table = storage.bi_arboretum_table and storage.bi_arboretum_table[base_unit_number]
if not arb_table then return end
-- All good: call the arboretum recipe handler
Get_Arboretum_Recipe(arb_table, event)
end end

View file

@ -42,12 +42,21 @@ end
-- Check that all ingredients are available! -- Check that all ingredients are available!
local function check_ingredients(arboretum) local function check_ingredients(arboretum)
local recipe = arboretum.get_recipe() local recipe = arboretum.get_recipe()
local need = recipe and storage.bi_arboretum_recipe_table[recipe.name] if not recipe then
--game.print("No recipe set on arboretum")
return nil
end
--game.print("Recipe name: " .. recipe.name)
local need = storage.bi_arboretum_recipe_table[recipe.name]
if not need then
--game.print("No recipe data found for " .. recipe.name)
return nil
end
local function check(need, have) local function check(need, have)
for name, amount in pairs(need or {}) do for name, amount in pairs(need or {}) do
if not (have and have[name]) or (have[name] < amount) then if not (have and have[name]) or (have[name] < amount) then
BioInd.writeDebug("Missing ingredient %s (have %s of %s)", { name, have[name] or 0, amount }) --game.print("Missing ingredient " .. name .. " (have " .. (have[name] or 0) .. " of " .. amount .. ")")
return false return false
end end
end end
@ -55,9 +64,38 @@ local function check_ingredients(arboretum)
end end
local inventory = arboretum.get_inventory(defines.inventory.assembling_machine_input) local inventory = arboretum.get_inventory(defines.inventory.assembling_machine_input)
local inv_contents_raw = inventory and inventory.get_contents() or {}
-- Check if inv_contents_raw is a map or list, convert if needed
local function is_map(t)
if type(t) ~= "table" then return false end
for k, v in pairs(t) do
if type(k) ~= "string" or type(v) ~= "number" then
return false
end
end
return true
end
local inv_contents
if is_map(inv_contents_raw) then
inv_contents = inv_contents_raw
else
-- Convert list of item stacks to map
inv_contents = {}
for _, item in pairs(inv_contents_raw) do
inv_contents[item.name] = (inv_contents[item.name] or 0) + item.count
end
end
local fluid_contents = arboretum.get_fluid_contents() or {}
--game.print("Inventory contents (map): " .. serpent.line(inv_contents))
--game.print("Fluid contents: " .. serpent.line(fluid_contents))
return need and return need and
check(need.items, inventory and inventory.get_contents()) and check(need.items, inv_contents) and
check(need.fluids, arboretum.get_fluid_contents()) and check(need.fluids, fluid_contents) and
{ ingredients = need, name = recipe.name } or nil { ingredients = need, name = recipe.name } or nil
end end
@ -111,10 +149,14 @@ function Get_Arboretum_Recipe(ArboretumTable, event)
local check = check_ingredients(arboretum) local check = check_ingredients(arboretum)
local ingredients, recipe_name local ingredients, recipe_name
if check then if check then
--game.print("There are ingredients")
ingredients, recipe_name = check.ingredients, check.name ingredients, recipe_name = check.ingredients, check.name
else
--game.print("No ingredients")
end end
if ingredients then if ingredients then
local create_seedling, new_plant local create_seedling, new_plant
pos = BioInd.normalize_position(arboretum.position) or pos = BioInd.normalize_position(arboretum.position) or
BioInd.arg_err("nil", "position") BioInd.arg_err("nil", "position")

View file

@ -170,8 +170,6 @@ if BI.Settings.BI_Game_Tweaks_Player then
end end
-- Moved to data-updates.lua for 0.18.34/1.1.4!
---- Game Tweaks ---- Production science pack recipe ---- Game Tweaks ---- Production science pack recipe
if data.raw.recipe["bi-production-science-pack"] then if data.raw.recipe["bi-production-science-pack"] then
@ -184,7 +182,6 @@ end
if BI.Settings.BI_Game_Tweaks_Bot then if BI.Settings.BI_Game_Tweaks_Bot then
-- Logistic & Construction bots can't catch fire or be mined -- Logistic & Construction bots can't catch fire or be mined
local function immunify(bot) local function immunify(bot)
-- Changed for 0.18.34/1.1.4!
local can_insert = true local can_insert = true
bot.flags = bot.flags or {} bot.flags = bot.flags or {}
bot.resistances = bot.resistances or {} bot.resistances = bot.resistances or {}
@ -290,7 +287,6 @@ if BI.Settings.BI_Game_Tweaks_Emissions_Multiplier then
["coal-crushed"] = 1.50, ["coal-crushed"] = 1.50,
["wood"] = 1.60, ["wood"] = 1.60,
["coal"] = 2.00, ["coal"] = 2.00,
-- Removed in 0.17.48/0.18.16
}) do }) do
BI_Functions.lib.fuel_emissions_multiplier_update(item, factor) BI_Functions.lib.fuel_emissions_multiplier_update(item, factor)
end end
@ -390,9 +386,6 @@ if mods["pycoalprocessing"] and BI.Settings.BI_Bio_Fuel then
end end
-- Moved to data-updates.lua for 0.18.34/1.1.4!
--- If Space Exploration Mod is installed. --- If Space Exploration Mod is installed.
if mods["space-exploration"] then if mods["space-exploration"] then
-- Space Exploration Mod likes Stack Sizes to be 200 max. -- Space Exploration Mod likes Stack Sizes to be 200 max.

View file

@ -18,6 +18,8 @@ end
BioInd.show("BI.Settings.BI_Easy_Bio_Gardens", BI.Settings.BI_Easy_Bio_Gardens) BioInd.show("BI.Settings.BI_Easy_Bio_Gardens", BI.Settings.BI_Easy_Bio_Gardens)
local ICONPATH = "__Bio_Industries_2__/graphics/icons/" local ICONPATH = "__Bio_Industries_2__/graphics/icons/"
local ICONPATH_E = BioInd.modRoot .. "/graphics/icons/entity/"
local ICONPATH_PY = "__Bio_Industries_2__/graphics/icons/mod_py/"
----Update the Wood Pipe Images ----Update the Wood Pipe Images
require("prototypes.Wood_Products.pipes") require("prototypes.Wood_Products.pipes")
@ -386,7 +388,7 @@ if data.raw.item["ash"] and mods["pycoalprocessing"] then
thxbob.lib.recipe.replace_ingredient("bi-sulfur", "bi-ash", "ash") thxbob.lib.recipe.replace_ingredient("bi-sulfur", "bi-ash", "ash")
thxbob.lib.recipe.replace_ingredient("bi-sulfur-angels", "bi-ash", "ash") thxbob.lib.recipe.replace_ingredient("bi-sulfur-angels", "bi-ash", "ash")
data.raw.recipe["bi-sulfur"].icon = ICONPATH .. "py_bio_sulfur.png" data.raw.recipe["bi-sulfur"].icon = ICONPATH_PY .. "py_bio_sulfur.png"
data.raw.recipe["bi-sulfur"].icon_size = 64 data.raw.recipe["bi-sulfur"].icon_size = 64
end end
@ -397,17 +399,17 @@ if data.raw.item["ash"] and mods["pycoalprocessing"] then
data.raw.recipe["bi-ash-2"].icon_size = 32 data.raw.recipe["bi-ash-2"].icon_size = 32
-- Use ash icon from pycoalprocessing in icons of recipes using ash -- Use ash icon from pycoalprocessing in icons of recipes using ash
data.raw.recipe["bi-seed-2"].icon = ICONPATH .. "py_bio_seed2.png" data.raw.recipe["bi-seed-2"].icon = ICONPATH_PY .. "py_bio_seed2.png"
data.raw.recipe["bi-seed-2"].icon_size = 64 data.raw.recipe["bi-seed-2"].icon_size = 64
data.raw.recipe["bi-seedling-2"].icon = ICONPATH .. "py_Seedling2.png" data.raw.recipe["bi-seedling-2"].icon = ICONPATH_PY .. "py_Seedling2.png"
data.raw.recipe["bi-seedling-2"].icon_size = 64 data.raw.recipe["bi-seedling-2"].icon_size = 64
data.raw.recipe["bi-logs-2"].icon = ICONPATH .. "py_raw-wood-mk2.png" data.raw.recipe["bi-logs-2"].icon = ICONPATH_PY .. "py_raw-wood-mk2.png"
data.raw.recipe["bi-logs-2"].icon_size = 64 data.raw.recipe["bi-logs-2"].icon_size = 64
data.raw.recipe["bi-ash-1"].icon = ICONPATH .. "py_ash_raw-wood.png" data.raw.recipe["bi-ash-1"].icon = ICONPATH_PY .. "py_ash_raw-wood.png"
data.raw.recipe["bi-ash-1"].icon_size = 64 data.raw.recipe["bi-ash-1"].icon_size = 64
data.raw.recipe["bi-ash-2"].icon = ICONPATH .. "py_ash_woodpulp.png" data.raw.recipe["bi-ash-2"].icon = ICONPATH_PY .. "py_ash_woodpulp.png"
data.raw.recipe["bi-ash-2"].icon_size = 64 data.raw.recipe["bi-ash-2"].icon_size = 64
data.raw.recipe["bi-stone-brick"].icon = ICONPATH .. "py_bi_stone_brick.png" data.raw.recipe["bi-stone-brick"].icon = ICONPATH_PY .. "py_bi_stone_brick.png"
data.raw.recipe["bi-stone-brick"].icon_size = 64 data.raw.recipe["bi-stone-brick"].icon_size = 64
end end
@ -456,7 +458,8 @@ if not data.raw.fluid["nitrogen"] then
flow_color = { r = 0.0, g = 0.0, b = 1.0 }, flow_color = { r = 0.0, g = 0.0, b = 1.0 },
pressure_to_speed_ratio = 0.4, pressure_to_speed_ratio = 0.4,
flow_to_energy_ratio = 0.59, flow_to_energy_ratio = 0.59,
order = "a[fluid]-b[nitrogen]" subgroup = "bio-bio-farm-intermediate-product",
order = "ab"
}, },
}) })
BioInd.writeDebug("Made recipe for \"nitrogen\".") BioInd.writeDebug("Made recipe for \"nitrogen\".")
@ -483,7 +486,8 @@ if not data.raw.fluid["nitrogen"] then
flow_color = { r = 0.5, g = 1.0, b = 1.0 }, flow_color = { r = 0.5, g = 1.0, b = 1.0 },
pressure_to_speed_ratio = 0.4, pressure_to_speed_ratio = 0.4,
flow_to_energy_ratio = 0.59, flow_to_energy_ratio = 0.59,
order = "a[fluid]-b[liquid-air]" subgroup = "bio-bio-farm-intermediate-product",
order = "aa"
}, },
}) })
BioInd.writeDebug("Made recipe for \"liquid-air\".") BioInd.writeDebug("Made recipe for \"liquid-air\".")
@ -524,7 +528,8 @@ if BI.Settings.BI_Game_Tweaks_Recipe then
--- Stone Wall --- Stone Wall
thxbob.lib.recipe.add_new_ingredient("stone-wall", { type = "item", name = "iron-stick", amount = 1 }) thxbob.lib.recipe.add_new_ingredient("stone-wall", { type = "item", name = "iron-stick", amount = 1 })
--- Rail (Remove Stone and Add Crushed Stone) --- Rail Stuff
--(Remove Stone and Add Crushed Stone)
if data.raw.item["stone-crushed"] then if data.raw.item["stone-crushed"] then
thxbob.lib.recipe.remove_ingredient("rail", "stone") thxbob.lib.recipe.remove_ingredient("rail", "stone")
thxbob.lib.recipe.add_new_ingredient("rail", { type = "item", name = "stone-crushed", amount = 6 }) thxbob.lib.recipe.add_new_ingredient("rail", { type = "item", name = "stone-crushed", amount = 6 })
@ -533,7 +538,15 @@ if BI.Settings.BI_Game_Tweaks_Recipe then
end end
-- vanilla rail recipe update -- vanilla rail recipe update
thxbob.lib.recipe.add_new_ingredient("rail", { type = "item", name = "concrete", amount = 6 }) thxbob.lib.recipe.remove_ingredient("rail", "iron-stick")
thxbob.lib.recipe.add_new_ingredient("rail", { type = "item", name = "concrete", amount = 2 })
data.raw["legacy-straight-rail"]["legacy-straight-rail"].icon = ICONPATH_E .. "rail-concrete.png"
data.raw["straight-rail"]["straight-rail"].icon = ICONPATH_E .. "rail-concrete.png"
--- Wood Rail added to Tech
thxbob.lib.tech.add_recipe_unlock("railway", "bi-rail-wood")
thxbob.lib.tech.add_recipe_unlock("railway", "bi-rail-wood-to-concrete")
end end
@ -692,7 +705,7 @@ if set then
end end
-- Compatibility with Industrial Revolution -- Compatibility with Industrial Revolution
require("prototypes.Industrial_Revolution") --require("prototypes.Industrial_Revolution")
------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------

View file

@ -26,6 +26,7 @@ for var, name in pairs({
BI.Settings[var] = BioInd.get_startup_setting(name) BI.Settings[var] = BioInd.get_startup_setting(name)
end end
--- Help Files --- Help Files
require("libs.item-functions") -- From Bob's Libary require("libs.item-functions") -- From Bob's Libary
require("libs.recipe-functions") -- From Bob's Libary require("libs.recipe-functions") -- From Bob's Libary
@ -79,10 +80,7 @@ if not mods["Natural_Evolution_Buildings"] then
require("prototypes.Bio_Turret.recipe") require("prototypes.Bio_Turret.recipe")
require("prototypes.Bio_Turret.entity") require("prototypes.Bio_Turret.entity")
--- Bio Cannon --- Bio Cannon
-- Items Groups -- Items Groups
require("prototypes.Bio_Cannon.item-group") require("prototypes.Bio_Cannon.item-group")

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 678 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 838 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Some files were not shown because too many files have changed in this diff Show more