Bio Garden Addition

This commit is contained in:
TheSAguy 2025-08-30 11:09:19 -07:00 committed by Simon Brodtmann
parent afcf60b8d7
commit 5964b4e1f6
15 changed files with 379 additions and 11 deletions

View file

@ -460,11 +460,15 @@ local function On_Built(event)
elseif entity.type == "electric-pole" then
local pole = entity
-- 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
BioInd.writeDebug("Bio garden!")
BioInd.connect_garden_pole(base, pole)
BioInd.writeDebug("Connected %s (%s)", { pole.name, pole.unit_number or "nil" })
end
local garden_names = { "bi-bio-garden", "bi-bio-garden-larger", "bi-bio-garden-huge" }
for _, gname in ipairs(garden_names) do
if entities[gname] and pole.name == entities[gname].hidden[h_key].name and base then
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
-- A seedling has been planted
elseif entity.name == "seedling" then

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

View file

@ -3,6 +3,8 @@
bi-arboretum=__ENTITY__bi-arboretum__s change the surrounding terrain with fertilizer or plant trees.
bi-bio-farm=__ENTITY__bi-bio-farm__s are where __ENTITY__seedling__s grow into trees that are processed to __ITEM__wood__ and __ITEM__bi-woodpulp__. An integrated solar panel provides some of the energy during the day.
bi-bio-garden=The __ENTITY__bi-bio-garden__ scrubs pollution from the air. (One bio garden can absorb 45 pollution units per second — as much as 1500 trees!)
bi-bio-garden-large=The __ENTITY__bi-bio-garden__ scrubs pollution from the air. (One bio garden can absorb 300 pollution units per second — as much as 12,000 trees!)
bi-bio-garden-huge=The __ENTITY__bi-bio-garden__ scrubs pollution from the air. (One bio garden can absorb 2880 pollution units per second — as much as 96,000 trees!)
bi-bio-greenhouse=Just the right place to grow __ITEM__bi-seed__s and __ENTITY__seedling__s!
seedling=A young tree, perfect for planting. You can also plant this in the ground and it will grow into a tree. Remember to first fertilize the ground to improve the chances of it growing!

View file

@ -5,8 +5,8 @@ bi-arboretum-hidden-radar=__ENTITY__bi-arboretum__ (__ENTITY__radar__)
bi-bio-farm=Bio farm
bi-bio-garden=Bio garden
bi-bio-garden-large=Large bio garden
bi-bio-garden-huge=Huge bio garden
bi-bio-garden-large=Large Bio garden
bi-bio-garden-huge=Huge Bio garden
bi-bio-greenhouse=Bio nursery
seedling=Sapling

View file

@ -211,6 +211,9 @@ data:extend({
working_visualisations = {
{
light = { intensity = 1.2, size = 9 },
effect = "flicker",
constant_speed = true,
fadeout = true,
animation = {
filename = ENTITYPATH_BIO .. "bio_farm/bio_farm_light.png",
priority = "high",

View file

@ -186,6 +186,14 @@ data:extend({
type = "unlock-recipe",
recipe = "bi-bio-garden"
},
{
type = "unlock-recipe",
recipe = "bi-bio-garden-lagre"
},
{
type = "unlock-recipe",
recipe = "bi-bio-garden-huge"
},
{
type = "unlock-recipe",
recipe = "bi-purified-air-1"

View file

@ -45,7 +45,7 @@ data:extend({
filename = ENTITYPATH_BIO .. "bio_garden/bio_garden_anim_trees.png",
width = 256, height = 320,
frame_count = 20, line_length = 5,
animation_speed = 0.025, scale = 0.5, shift = {0, -0.75}
animation_speed = 0.15, scale = 0.5, shift = {0, -0.75}
},
{
filename = ENTITYPATH_BIO .. "bio_garden/bio_garden_shadow.png",
@ -84,4 +84,256 @@ data:extend({
-- won't be affected by beacons!
allowed_effects = { "consumption", "speed" },
},
---- Bio Garden Large
{
type = "assembling-machine",
name = "bi-bio-garden-large",
icon = ICONPATH_E .. "bio_garden_large_icon.png",
icon_size = 64,
icons = {
{
icon = ICONPATH_E .. "bio_garden_large_icon.png",
icon_size = 64,
}
},
flags = { "placeable-neutral", "placeable-player", "player-creation" },
minable = { hardness = 0.6, mining_time = 1, result = "bi-bio-garden-large" },
fast_replaceable_group = "bi-bio-garden-large",
max_health = 1200,
corpse = "medium-remnants",
collision_box = {{-4.3, -4.3}, {4.3, 4.3}},
selection_box = {{-4.5, -4.5}, {4.5, 4.5}},
scale_entity_info_icon = true,
fluid_boxes = {
{
production_type = "input",
pipe_covers = pipecoverspictures(),
base_area = 1,
base_level = -1,
volume = 1000,
filter = "water",
pipe_connections = { { flow_direction = "input", direction = defines.direction.north, position = { 0, -4 } } },
--pipe_connections = { { flow_direction = "input", direction = defines.direction.north, position = { 0, 4 } } },
-- pipe_connections = { { flow_direction = "input", direction = defines.direction.north, position = { -4, 0 } } },
-- pipe_connections = { { flow_direction = "input", direction = defines.direction.north, position = { 4, 0 } } },
},
},
off_when_no_fluid_recipe = false,
graphics_set = {
animation = {
layers = {
{
filename = ENTITYPATH_BIO .. "bio_garden/bio_garden_large.png",
width = 640,
height = 704,
scale = 0.5,
shift = {0, -0.5},
},
{
filename = ENTITYPATH_BIO .. "bio_garden/bio_garden_large_shadow.png",
width = 704,
height = 640,
scale = 0.5,
shift = {0.5, 0},
draw_as_shadow = true,
}
}
},
working_visualisations = {
{
light = {intensity = 1.2, size = 20 },
draw_as_light = true,
effect = "flicker",
constant_speed = true,
fadeout = true,
animation = {
filename = ENTITYPATH_BIO .. "bio_garden/bio_garden_large_light.png",
width = 640,
height = 640,
scale = 0.5,
shift = {0, 0},
},
},
},
},
open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 },
close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 },
working_sound = {
sound = { { filename = "__Bio_Industries_2__/sound/rainforest_ambience.ogg", volume = 1 } },
idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.8 },
apparent_volume = 1.5,
},
crafting_categories = { "clean-air" },
source_inventory_size = 1,
result_inventory_size = 1,
crafting_speed = 4.0,
energy_source = {
type = "electric",
usage_priority = "secondary-input",
emissions_per_minute = { pollution = -360 }, -- Negative value: pollution is absorbed!
},
energy_usage = "800kW",
ingredient_count = 1,
-- Changed for 0.18.34/1.1.4 -- Modules don't make sense for the gardens!
-- (Efficiency modules are also meant to reduce pollution, but as the base value
-- is negative, the resulting value is greater than the base value! )
module_specification = {
module_slots = 2
},
-- Changed for 0.18.34/1.1.4 -- We need to use an empty table here, so the gardens
-- won't be affected by beacons!
allowed_effects = { "consumption", "speed" },
},
---- Bio Garden Huge
{
type = "assembling-machine",
name = "bi-bio-garden-huge",
icon = ICONPATH_E .. "bio_garden_huge_icon.png",
icon_size = 64,
icons = {
{
icon = ICONPATH_E .. "bio_garden_huge_icon.png",
icon_size = 64,
}
},
flags = { "placeable-neutral", "placeable-player", "player-creation" },
minable = { hardness = 1.2, mining_time = 2, result = "bi-bio-garden-huge" },
fast_replaceable_group = "bi-bio-garden-huge",
max_health = 2000,
corpse = "medium-remnants",
collision_box = {{-13.3, -13.3}, {13.3, 13.3}},
selection_box = {{-13.5, -13.5}, {13.5, 13.5}},
scale_entity_info_icon = true,
fluid_boxes = {
{
production_type = "input",
pipe_covers = pipecoverspictures(),
base_area = 1,
base_level = -1,
volume = 1000,
filter = "water",
pipe_connections = { { flow_direction = "input", direction = defines.direction.north, position = { 0, -13 } } },
-- pipe_connections = { { flow_direction = "input", direction = defines.direction.north, position = { 0, 13 } } },
-- pipe_connections = { { flow_direction = "input", direction = defines.direction.north, position = { -13, 0 } } },
-- pipe_connections = { { flow_direction = "input", direction = defines.direction.north, position = { 13, 0 } } },
},
},
off_when_no_fluid_recipe = false,
graphics_set = {
animation = {
layers = {
{
filename = ENTITYPATH_BIO .. "bio_garden/bio_garden_huge.png",
width = 1792,
height = 1856,
scale = 0.5,
frame_count = 1,
line_length = 1,
repeat_count = 8,
animation_speed = 1,
shift = {0, -0.5},
},
{
filename = ENTITYPATH_BIO .. "bio_garden/bio_garden_huge_shadow.png",
width = 256,
height = 1856,
scale = 0.5,
frame_count = 1,
line_length = 1,
repeat_count = 8,
animation_speed = 1,
shift = {14, -0.5},
draw_as_shadow = true,
},
},
},
working_visualisations = {
{
constant_speed = true,
fadeout = true,
animation = {
layers = {
{
filename = ENTITYPATH_BIO .. "bio_garden/bio_garden_huge_turbine_anim.png",
width = 128,
height = 96,
scale = 0.5,
frame_count = 8,
line_length = 8,
repeat_count = 1,
animation_speed = 1,
shift = {-4.5, -4.5},
},
{
filename = ENTITYPATH_BIO .. "bio_garden/bio_garden_huge_turbine_anim.png",
width = 128,
height = 96,
scale = 0.5,
frame_count = 8,
line_length = 8,
repeat_count = 1,
animation_speed = 1,
shift = {4.5, 4.5},
},
{
filename = ENTITYPATH_BIO .. "bio_garden/bio_garden_huge_turbine_anim.png",
width = 128,
height = 96,
scale = 0.5,
frame_count = 8,
line_length = 8,
repeat_count = 1,
animation_speed = 1,
shift = {4.5, -4.5},
},
{
filename = ENTITYPATH_BIO .. "bio_garden/bio_garden_huge_turbine_anim.png",
width = 128,
height = 96,
scale = 0.5,
frame_count = 8,
line_length = 8,
repeat_count = 1,
animation_speed = 1,
shift = {-4.5, 4.5},
},
},
},
},
},
},
open_sound = { filename = "__base__/sound/machine-open.ogg", volume = 0.85 },
close_sound = { filename = "__base__/sound/machine-close.ogg", volume = 0.75 },
working_sound = {
sound = { { filename = "__Bio_Industries_2__/sound/rainforest_ambience.ogg", volume = 1.8 } },
idle_sound = { filename = "__base__/sound/idle1.ogg", volume = 0.9 },
apparent_volume = 2,
},
crafting_categories = { "clean-air" },
source_inventory_size = 1,
result_inventory_size = 1,
crafting_speed = 16,
energy_source = {
type = "electric",
usage_priority = "secondary-input",
emissions_per_minute = { pollution = -2880 }, -- Negative value: pollution is absorbed!
},
energy_usage = "3200kW",
ingredient_count = 1,
-- Changed for 0.18.34/1.1.4 -- Modules don't make sense for the gardens!
-- (Efficiency modules are also meant to reduce pollution, but as the base value
-- is negative, the resulting value is greater than the base value! )
module_specification = {
module_slots = 4
},
-- Changed for 0.18.34/1.1.4 -- We need to use an empty table here, so the gardens
-- won't be affected by beacons!
allowed_effects = { "consumption", "speed" },
},
})

View file

@ -23,6 +23,40 @@ data:extend({
stack_size = 10
},
{
type = "item",
name = "bi-bio-garden-large",
icon = ICONPATH_E .. "bio_garden_large_icon.png",
icon_size = 64,
icons = {
{
icon = ICONPATH_E .. "bio_garden_large_icon.png",
icon_size = 64,
}
},
subgroup = "production-machine",
order = "x[bi]-c[bi-bio-garden]",
place_result = "bi-bio-garden-large",
stack_size = 10
},
{
type = "item",
name = "bi-bio-garden-huge",
icon = ICONPATH_E .. "bio_garden_huge_icon.png",
icon_size = 64,
icons = {
{
icon = ICONPATH_E .. "bio_garden_huge_icon.png",
icon_size = 64,
}
},
subgroup = "production-machine",
order = "x[bi]-d[bi-bio-garden]",
place_result = "bi-bio-garden-huge",
stack_size = 10
},
{
type = "item",
name = "bi-purified-air",

View file

@ -29,14 +29,77 @@ data:extend({
results = {{type="item", name="bi-bio-garden", amount=1}},
main_product = "",
subgroup = "bio-bio-gardens-fluid",
order = "a[bi]",
allow_as_intermediate = false, -- Changed for 0.18.34/1.1.4
order = "a[bi-garden-1]",
allow_as_intermediate = false, -- Changed for 0.18.34/1.1.4
always_show_made_in = false, -- Changed for 0.18.34/1.1.4
allow_decomposition = true, -- Changed for 0.18.34/1.1.4 -- This is a custom property for use by "Krastorio 2" (it will change
-- ingredients/results; used for wood/wood pulp)
mod = "Bio_Industries_2",
},
--- Garden - Large(ENTITY)
{
type = "recipe",
name = "bi-bio-garden-lagre",
localised_name = {"entity-name.bi-bio-garden-lagre"},
localised_description = {"entity-description.bi-bio-garden-lagre"},
icon = ICONPATH_E .. "bio_garden_large_icon.png",
icon_size = 64,
icons = {
{
icon = ICONPATH_E .. "bio_garden_large_icon.png",
icon_size = 64,
}
},
enabled = false,
energy_required = 15,
ingredients = {
{type="item", name="stone-wall", amount=48},
{type="item", name="stone-crushed", amount=200},
{type="item", name="bi-bio-garden", amount=4}
},
results = {{type="item", name="bi-bio-garden-large", amount=1}},
main_product = "",
subgroup = "bio-bio-gardens-fluid",
order = "a[bi-garden-2]",
allow_as_intermediate = false, -- Changed for 0.18.34/1.1.4
always_show_made_in = false, -- Changed for 0.18.34/1.1.4
allow_decomposition = true, -- Changed for 0.18.34/1.1.4 -- This is a custom property for use by "Krastorio 2" (it will change
-- ingredients/results; used for wood/wood pulp)
mod = "Bio_Industries_2",
},
--- Garden - Huge(ENTITY)
{
type = "recipe",
name = "bi-bio-garden-huge",
localised_name = {"entity-name.bi-bio-garden-huge"},
localised_description = {"entity-description.bi-bio-garden-huge"},
icon = ICONPATH_E .. "bio_garden_huge_icon.png",
icon_size = 64,
icons = {
{
icon = ICONPATH_E .. "bio_garden_huge_icon.png",
icon_size = 64,
}
},
enabled = false,
energy_required = 15,
ingredients = {
{type="item", name="stone-wall", amount=192},
{type="item", name="stone-crushed", amount=800},
{type="item", name="bi-bio-garden-large", amount=4}
},
results = {{type="item", name="bi-bio-garden-huge", amount=1}},
main_product = "",
subgroup = "bio-bio-gardens-fluid",
order = "a[bi-garden-3]",
allow_as_intermediate = false, -- Changed for 0.18.34/1.1.4
always_show_made_in = false, -- Changed for 0.18.34/1.1.4
allow_decomposition = true, -- Changed for 0.18.34/1.1.4 -- This is a custom property for use by "Krastorio 2" (it will change
-- ingredients/results; used for wood/wood pulp)
mod = "Bio_Industries_2",
},
--- Clean Air 1
{

View file

@ -351,7 +351,9 @@ function big_accumulator_picture(tint, repeat_count)
collision_mask = { layers = { ground_tile = true } },
collision_box = { { -0.5, -0.5 }, { 0.5, 0.5 } },
walking_speed_modifier = 1.45,
layer = 13,
layer = 13,
layer_group = "ground-artificial",
transition_overlay_layer_offset = 2,
decorative_removal_probability = 1,
variants = {
transition = tile_graphics.generic_masked_tile_transitions1,